Syntaxe pour tri d'une plage

Bonjour,

Je dois trier une plage par rapport à une colonne.

3 syntaxes semblent fonctionner, mais mon fichier est trop volumineux pour que je puisses contrôler que le tri fonctionne de manière certaine.

Les 3 codes testés :

Set Plage = Range("B2:P" & DerLig)
    Plage.Select

'1ère syntaxe
    Plage.Sort Key1:=Range(ColTri & 2, ColTri & DerLig), Order1:=xlDescending
'2ème syntaxe
    Plage.Sort Key1:=Range(ColTri & 2), Order1:=xlDescending
'3ème syntaxe
    Plage.Sort Key1:=Columns(ColTri), Order1:=xlDescending 

L'avis d'un spécialiste me rassurerait

Merci beaucoup.

Salut Dach2,

à mon sens...

Plage.Sort Key1:=Range(ColTri & 2), Order1:=xlDescending

puisque Key1 se rapporte à la cellule de référence du tri.

A+

Bonsoir,

D'accord avec Curulis !

Le Plage.Select est de trop. On n'a pas besoin de sélectionner pour trier (ni pour faire quoi que ce soit).

Par contre, je préfère toujours préciser le paramètre Header, et ne pas laisser Excel décider s'il y a une en-tête ou pas.

Cordialement.

Même que nous aurions dû penser, ce que je fais toujours!? :

Plage.Sort Key1:=Range(ColTri & 2), Order1:=xlDescending, Orientation:=xlTopToBottom

J'avoue ne JAMAIS inclure Header dans mes réflexions, encadrant tip-top mes plages de tri ...

A+

Moi si, ça m'a déjà joué des tours !

Par contre, l'Orientation, c'est si tu es susceptible d'avoir fait du tri de droite à gauche, rare !

Moins rare, peut être MatchCase.

Cette méthode fait partie des rares cas où j'utilise le passage des arguments par noms, parce que leur énumération est dans un ordre parfaitement illogique, et tu as toutes les chances d'en inverser quelques uns en les passant par positions.

Bye.

Bojour,

Tri lignes & colonnes d'un tableau 2D

  '--- tri
  Set Rng = AdrResult.Resize(d1.Count + 1, d2.Count + 1)    ' tri lignes & colonnes
  Rng.Offset(1).Resize(Rng.Rows.Count - 1, Rng.Columns.Count).Sort key1:=Rng.Cells(2, 1), _
     Order1:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlSortColumns
  Rng.Offset(, 1).Resize(Rng.Rows.Count, Rng.Columns.Count - 1).Sort key1:=Rng.Cells(1, 2), _
     Order1:=xlAscending, Header:=xlNo, MatchCase:=False, Orientation:=xlSortRows

Ceuzin

8trit2d.zip (18.71 Ko)

Merci à tous pour vos éclairages.

Bien compris.

Bonne soirée.

Dach2

Rechercher des sujets similaires à "syntaxe tri plage"