[RESOLU]Tri sur plusieurs colonnes (VBA)

  • Initiateur de la discussion Initiateur de la discussion VikLeroy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

VikLeroy

XLDnaute Nouveau
Bonjour

Je souhaiterai trier une sélection de cellules sous EXCEL qui se trouvent sur 2 colonnes distinctes. J'ai essayé de voir avec le générateur de macro, mais le tri EXCEL ne fonctionne pas correctement dans cette optique (ou je l'utilise mal c'est selon).

Exemple:
Colonne A
8
5
3
21
7
1
9
5

Colonne B
85
2
5
2
0
12
9
2

Je sélectionne mes deux colonnes et je trie:
Résultat:
1,3,5,5,7,8,9,21 en colonne A
12,5,2,2,0,85,9,2 en colonne B

Résultat attendu:
0,1,2,2,2,3,5,5 en colonne A
5,7,8,9,9,12,21,85 en colonne B

Donc y a-t-il moyen en passant par la fonction Sort ou est-ce que je dois passer par un algo de tri?

Merci
 
Dernière édition:
Re : Tri sur plusieurs colonnes (VBA)

Bonjour VikLeroy,

Si tu fais un tri sur deux colonnes contiguës, Excel considère l'ensemble comme une liste de données et trie donc la plage entière.
Les seules solutions sont:
- insérer une colonne vide entre les deux autres
- sélectionner chaque colonne individuellement et trier chacune indépendamment de l'autre (en choisissant de "continuer avec la sélection en cours")
- transformer en "table" chacune des 2 plages (sélectionner 1 colonne > Insérer > Tableau ... et répéter l'opération sur la seconde colonne)
 
Re : Tri sur plusieurs colonnes (VBA)

Merci pour ta réponse mais je ne suis pas sûr d'avoir bien compris ta solution (la création du tableau).

Une fois que mes deux colonnes sont triées indépendemment, comment je fais pour les "merger" pour que le tri soit commun aux deux colonnes? Ce sont des données identiques qui sont certes dans deux colonnes différentes, mais c'est dans un cadre et elles sont donc à la suite les unes des autres.

C'est la raison pour laquelle les chiffres doivent être complètement triés dans cette plage de sélection.
5,7,8,9,9,12,21,85 en colonne B est donc la suite directe de 0,1,2,2,2,3,5,5 en colonne A.

A part faire un programme de tri, je ne vois pas.
 
Re : Tri sur plusieurs colonnes (VBA)

Re-bonjour,

Désolé, je n'avais pas vu, dans tes résultats attendus (dans ton premier message) que tu "mélangeais" les données des 2 colonnes ... ce ne sera donc effectivement possible que par macro.
Maintenant un algorithme de tri ou coller les données les unes sous les autres dans une nouvelle colonne, puis splitter en deux colonnes, je ne sais pas ce qui sera le "moins pire" 😕
 
Re : Tri sur plusieurs colonnes (VBA)

Bonjour,

Si tu sélectionnes une colonne à la fois, tu appelles
la commande "Trier" / Tri personnalisé
tu choisis à tour de rôle la colonne sur laquelle le tri doit s'opérer
et tu exécutes.

Attention : lors de l'appel de la commande, il y a une fenêtre qui
s'ouvre et de demande si tu veux étendre la sélection. Évidemment
tu réponds non en sélectionnant le bon bouton radio.

Si tu y tiens, tu peux faire cela en VBA

Dans le tri, j'ai supposé que la plage de cellules n'avait pas d'en-tête de colonne.

VB:
Sub test()
With Worksheets("Feuil1") 'Nom feuille à adapter au besoin
    With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
        .Sort key1:=.Item(1, 1), order1:=xlAscending, Header:=xlNo
    End With
    With .Range("B1:B" & .Range("B65536").End(xlUp).Row)
        .Sort key1:=.Item(1, 1), order1:=xlAscending, Header:=xlNo
    End With
End With
End Sub


MichD
--------------------------------------------
 
Re : Tri sur plusieurs colonnes (VBA)

Re,
Bonsoir MichD,

Dans le 1er message, le résultat attendu est différent: tes propositions vont dans le même sens que les miennes au départ. Pas vu tout de suite ce qui était attendu, non plus ...
 
Re : Tri sur plusieurs colonnes (VBA)

Bonjour Modeste,

Résultat attendu dans la question :

Résultat attendu:
0,1,2,2,2,3,5,5 en colonne A
5,7,8,9,9,12,21,85 en colonne B

Sauf erreur, chacune des colonnes est triée par ordre croissant séparément!

Je n'ai pas vu quelque chose?


MichD
-------------------------------------------------------------
 
Re : Tri sur plusieurs colonnes (VBA)

Re MichD,

Sauf erreur de mon côté aussi, les valeurs de chaque colonne ne sont plus celles d'origine: c'est comme si on en faisait une colonne unique, qu'on triait l'ensemble et qu'on redivisait en deux colonnes ensuite.
... Pour ce que j'ai compris!?
 
Re : Tri sur plusieurs colonnes (VBA)

Re,

OK je vois ce que tu veux dire, ce n'est pas évident quant à
la manière de présenter son problème!

S'il copie la colonne B dans la colonne A, il trie la colonne A
et sépare à nouveau la colonne A en 2.

MichD
---------------------------------------------------
 
Re : Tri sur plusieurs colonnes (VBA)

Bonjour VikLeroy, le forum,
Une solution à tester. J’ai simplement appliqué les solutions données par les maîtres Modeste et MichelD.
P.S. Modeste, MichelD : Heureux de vous croiser sur ce fil. Avec toute mon amitié.
Cordialement,
Bernard
 

Pièces jointes

Re : Tri sur plusieurs colonnes (VBA)

C'est nickel, c'est exactement ça, merci beaucoup.

Bon ce n'est pas obligé que les deux colonnes aient le même nombre d'entrées, mais je vais adapter ta macro. En gros, dans la plage, on remplie la colonne A, puis la colonne B quand la première est pleine, tout en triant les entrées.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
286
Réponses
6
Affichages
159
Retour