[RESOLU]Tri sur plusieurs colonnes (VBA)

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:

Modeste

XLDnaute Barbatruc
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)
 

VikLeroy

XLDnaute Nouveau
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.
 

Modeste

XLDnaute Barbatruc
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" :confused:
 

MichD

XLDnaute Impliqué
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
--------------------------------------------
 

Modeste

XLDnaute Barbatruc
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 ...
 

MichD

XLDnaute Impliqué
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
-------------------------------------------------------------
 

Modeste

XLDnaute Barbatruc
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!?
 

MichD

XLDnaute Impliqué
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
---------------------------------------------------
 

bbb38

XLDnaute Accro
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

  • WikLeroy.xlsm
    21.6 KB · Affichages: 447

VikLeroy

XLDnaute Nouveau
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.
 

Discussions similaires

Réponses
22
Affichages
757

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16