VB sous excel: un tri sur un tri

VB sous excel: un tri sur un tri - VB/VBA/VBS - Programmation

Marsh Posté le 15-09-2005 à 11:37:39    

Bonjour,
 
Je souhaite effectuer un tri sur une colonne, très facile. Mais une fois trier, je voudrais effectuer un autre tri.
Par exemple j'ai ce tableau:
 
12   AB
9     AD
7     AX
56   AZ
32   BA
8    BB
48   CB
1   CE
 
Le tableau est trié en fonction des lettres mais comment dois je coder pour le trier ensuite en fonction du numéro?
 
ça donnerait:
 
7   AX
9   AD
12  AB
56 AZ
8  BB
32 BA
1   CE
48 CB
 
Comment dois-je faire???


Message édité par Dolu007 le 15-09-2005 à 12:23:15
Reply

Marsh Posté le 15-09-2005 à 11:37:39   

Reply

Marsh Posté le 15-09-2005 à 13:52:35    

Si je comprends bien, le tri doit être fait en premier lieu, sur le premier caractère de la deuxième colonne, et en second lieu, sur le nombre dans la première colonne. Malheureusement, le tri ne se fait que sur des cellules entières. Il faut donc créer une troisième colonne ne contenant que la première lettre de la deuxième colonne, ce qui peut se faire facilement avec la formule "=GAUCHE(B1,1)", puis le tri du tableau est réalié en prenant comme premier critère la troisième colonne que l'on vient de créer, et comme second critère, la première colonne.

Reply

Marsh Posté le 15-09-2005 à 18:49:18    

Salut,
si par exemple tu as tes chiffres dans la colonne B et la lettre sur laquelle tu veux trier (donc avec par exemple la fonction proposee par olivthill) dans la colonne C, tu peux utiliser cette macro pour faire le double tri :
 
    Columns("B:C" ).Select
    Range("C1" ).Activate
    Selection.Sort Key1:=Range("C1" ), Order1:=xlAscending, Key2:=Range("B1" ) _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal

Reply

Marsh Posté le 16-09-2005 à 15:04:55    

Trounk a écrit :

Salut,
si par exemple tu as tes chiffres dans la colonne B et la lettre sur laquelle tu veux trier (donc avec par exemple la fonction proposee par olivthill) dans la colonne C, tu peux utiliser cette macro pour faire le double tri :
 
    Columns("B:C" ).Select
    Range("C1" ).Activate
    Selection.Sort Key1:=Range("C1" ), Order1:=xlAscending, Key2:=Range("B1" ) _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal


Je comprends pas trop
Qu'est ce qu'il faut que je rajoute à cette macro pour que ça marche?

Reply

Marsh Posté le 16-09-2005 à 19:04:58    

Bon ok ok,  
tiens regarde directement ce que j'ai fais ici ca devrait t'aider a piger :
 
http://www.chez.com/trounkdl/TRI.xls

Reply

Marsh Posté le 19-09-2005 à 16:00:56    

le lien est mort

Reply

Marsh Posté le 20-09-2005 à 18:37:46    

Il n'est pas mort si on fait un copier/coller ou
Clic droit Save target as... (Copier la cible sous...)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed