[VBA] Tri d'un tableau sur plus de 3 critères

Le
HD
Bonjour,

Pour trier un tableau Excel en VBA j'utilise Sort mais le souci est que
cette fonction est limitée à 3 critères lorsque je lance ma ligne vba:

Columns("A:Z").Sort Key1:=Range("F1"), Order1:=xlAscending,
Key2:=Range("U1"), Order2:=xlAscending, Key3:=Range("K1"),
Order3:=xlAscending, Key4:=Range("D1"), Order4:=xlAscending, Header:=xlNo

j'obtiens un message d'erreur

Avez vous une autre fonction pour réaliser des tris de tableaux ?

Merci d'avance pour votre aide

Cordialement,

HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
h2so4
Le #24144881
Bonjour,

une manière de faire est de créer une colonne supplémentaire qui est la concaténation de toutes les clés (à conditions que le critère de tri soit le même pour toutes ces clés) et de faire le tri basé sur c ette colonne

il faut s'assurer que lors de la concaténation chaque clé a une longueu r fixe (mettre des zéros ou des blancs, le cas échéeant)
MichD
Le #24144971
Bonjour,

Tu as essayé quelque chose comme ceci :

Tu crées les conditions à partir du plus général vers le plus spécifique
comme dans : Continent - Pays - Ville - Nom du client - Prénom du client ....

'----------------------------------------
Sub test()

Dim Sh As Worksheet
Set Sh = Worksheets("Feuil1") 'Nom feuille à adapter

With Sh
With .Range("A:Z")
.Sort Key1:=Sh.Range("F1"), Order1:=xlAscending, _
Key2:=Sh.Range("U1"), Order2:=xlAscending, _
Key3:=Sh.Range("K1"), Order3:=xlAscending, Header:=xlNo

.Sort Key1:=Sh.Range("D1"), Order1:=xlDescending, Header:=xlNo
End With
End With
End Sub
'----------------------------------------


MichD
------------------------------------------
"HD" a écrit dans le message de groupe de discussion : jeejjv$lmv$

Bonjour,

Pour trier un tableau Excel en VBA j'utilise Sort... mais le souci est que
cette fonction est limitée à 3 critères... lorsque je lance ma ligne vba:

Columns("A:Z").Sort Key1:=Range("F1"), Order1:=xlAscending,
Key2:=Range("U1"), Order2:=xlAscending, Key3:=Range("K1"),
Order3:=xlAscending, Key4:=Range("D1"), Order4:=xlAscending, Header:=xlNo

j'obtiens un message d'erreur...

Avez vous une autre fonction pour réaliser des tris de tableaux ?

Merci d'avance pour votre aide

Cordialement,

HD
LSteph
Le #24147841
Bonjour,

Avec ou sans VBA.. le principe:

Tu dois procèder semi-récursivement.. exemple pour 5 critères

trie d'abord dans l'odre du premier au dernier
les 3 derniers critères
puis les 2 premiers

Cordialement.

--
LSteph




"HD" news:jeejjv$lmv$
Bonjour,

Pour trier un tableau Excel en VBA j'utilise Sort... mais le souci est que
cette fonction est limitée à 3 critères... lorsque je lance ma ligne vba:

Columns("A:Z").Sort Key1:=Range("F1"), Order1:=xlAscending,
Key2:=Range("U1"), Order2:=xlAscending, Key3:=Range("K1"),
Order3:=xlAscending, Key4:=Range("D1"), Order4:=xlAscending, Header:=xlNo

j'obtiens un message d'erreur...

Avez vous une autre fonction pour réaliser des tris de tableaux ?

Merci d'avance pour votre aide

Cordialement,

HD

HD
Le #24147871
Avec ou sans VBA.. le principe:
Tu dois procèder semi-récursivement.. exemple pour 5 critères
trie d'abord dans l'odre du premier au dernier
les 3 derniers critères
puis les 2 premiers


Ok, donc dans mon cas, au lieu d'utiliser:
Columns("A:Z").Sort Key1:=Range("F1"), Order1:=xlAscending, _
Key2:=Range("U1"), Order2:=xlAscending, Key3:=Range("K1"), _
Order3:=xlAscending, Key4:=Range("D1"), Order4:=xlAscending, Header:=xlNo

Je ferais un tri en 2 temps:
Columns("A:Z").Sort Key1:=Range("U1"), Order1:=xlAscending, _
Key2:=Range("K1"), Order2:=xlAscending, Key3:=Range("D1"), _
Order3:=xlAscending, Header:=xlNo
Columns("A:Z").Sort Key1:=Range("F1"), Order1:=xlAscending, Header:=xlNo

Cordialement,

HD
Publicité
Poster une réponse
Anonyme