Tri en VBA

Anonyme
2020-04-14T17:37:05+00:00

Bonjour à tous,

Excel 2016 + Windows 10

en vba, je souhaite faire un tri avec 2 colonnes.

rien de bien compliqué, sauf que chaque jour, mon tableau augmente de 2 colonnes,

et je veux toujours faire le tri avec l'avant dernière colonne.

j'ai la proc suivante :

Range("A5").End(xlToRight).Select 'sélectionne AK5 pour l'exemple.

X = Evaluate("LEFT(ADDRESS(1," & ActiveCell.Column & ",4),LEN(ADDRESS(1," & ActiveCell.Column & ",4))-1)") 'donne AK

Range("A5:" & X & "" & [A65000].End(xlUp).Row + 2).Select'sélectionne A5:AK...

Selection.Sort , key1:=[AK:AK], order1:=xlDescending, key2:=[A:A], order2:=xlAscending

dans la ligne ci-dessus, je voudrais remplacer la clé d tri n° 1 avec la colonne AK par la variable X

car la colonne AK est variable au fur et à mesure que mon tableau se remplit. 24 heures plus tard, le tri devra se faire avec la colonne AML etc...

J'ai essayé l'instruction suivante, mais sans succès :

Range("A5:" & X & "" & [A65000].End(xlUp).Row + 2).Sort , key1:=[" & X & " & ":" & " & X & "], order1:=xlDescending, key2:=[A:A], order2:=xlAscending

Merci par avance pour votre aide

Cordialement

Infogroup

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

2 réponses

  1. Anonyme
    2020-04-14T18:41:27+00:00

    Bonjour Daniel,

    très heureux de te retrouver toujours fidèle au poste.

    Un grand merci pour ta réponse, pour moi, c'est OK

    Cordialement

    Infogroup

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2020-04-14T18:17:11+00:00

    Bonjour,

      Dim C As Range, Plage As Range

      Set Plage = Range("A5", Cells(Rows.Count, 1).End(xlUp)).Resize(, [A5].End(xlToRight).Column)

      Set C = [A5].End(xlToRight).Offset(, -1)

      Plage.Sort C, xlDescending, , [A5], xlAscending

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire