VBA Excel trier la plage par colonne spécifique

J'ai un tableau qui peut contenir n'importe quel nombre de lignes:

entrez la description de l'image ici

Comme je l'ai dit, il peut contenir 1 ou ∞ lignes.

Je veux trier la plage A3: D∞ par la cellule de Date qui est dans la colonne B. Comment puis-je le faire?

Le problème est que je ne sais pas comment sélectionner De A3 à la dernière ligne.

Je pense que la boucle à la dernière ligne n'est pas une méthode correcte.

J'ai ceci jusqu'à présent, il semble correct, mais la plage est codée en dur. Comment puis-je me débarrasser de l' hardcoding de la gamme?

Range("A3:D8").Sort key1:=Range("B3:B8"), _
order1:=xlAscending, Header:=xlNo
29
demandé sur cxw 2014-01-30 12:41:26

3 réponses

Essayez ce code:

Dim lastrow As Long
lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("A3:D" & lastrow).Sort key1:=Range("B3:B" & lastrow), _
   order1:=xlAscending, Header:=xlNo
69
répondu Dmitry Pavliv 2014-01-30 08:44:00

Ou ceci:

Range("A2", Range("D" & Rows.Count).End(xlUp).Address).Sort Key1:=[b3], _
    Order1:=xlAscending, Header:=xlYes
13
répondu L42 2014-01-30 08:56:21

Si la première cellule de la plage et de la clé est statique, la solution peut être très simple:

Range("A3").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort key1:=Range("B3", Range("B3").End(xlDown)), _
order1:=xlAscending, Header:=xlNo
-1
répondu Simi 2015-09-14 20:26:56