Trie avec ordre personnalisé

smileytom

XLDnaute Nouveau
Bonjour à tous,

Pour commencer ma première question sera : est-ce que les "listes personnalisées" s'exportent avec un classeur, ou reste dans les options locales ?

Si non, il faudra que je trouve une autre solution (avec votre aide :p), si oui, je vous demande un peu d'aide également :D.

Je dois trier mes lignes, dans l'ordre de la liste suivante :
N
C
1
2
...
9
Z

Ce doit être un trie multicritère sur 3 colonnes, la 1ere colonne contient les données précédentes (N,C...Z) et les 2 suivantes des chiffres de 0 à 9.
Je souhaite donc trier avec un ordre perso sur la colonne 1, puis numérique croissant sur la 2, puis numérique croissant sur la 3.

Je suis donc pour l'instant passé par une liste perso, et un trie multicritère (vba).

Code:
Sub Sort()

Worksheets("DATABASE").Rows("3:602").Sort _
    Key1:=Worksheets("DATABASE").Columns("A"), _
    Key2:=Worksheets("DATABASE").Columns("B"), _
    Key3:=Worksheets("DATABASE").Columns("C"), _
    Order1:=xlAscending, Order2:=xlAscending, Order3:=xlAscending, _
    OrderCustom:=6, _
    MatchCase:=False, _
    Orientation:=xlTopToBottom, _
    Header:=xlNo
    
End Sub

Ma macro fonctionne bien, MAIS...

Lorsque j'ouvre le classeur, et je clique direct sur le bouton qui lance ma macro de trie >>> trie dans un autre ordre sur la 1ere colonne (nombres croissants, puis alphabétique).

Lorsque j'ouvre le classeur, modifie une cellule de la 1ere colonne (ie retape C à la place de C) puis lance la macro >>> le trie est correct (utilise ma liste perso).

Moi yen a pas tout comprendre :eek:, s'il vous plait, aider moi :)
(Et si de toute façon les listes perso ne s'exportent pas, je devrai trouver autre chose)

Thomas

edit : bon, petite précision déja, pour que la macro marche, je dois retaper un N, ou un C ou un Z, si je retape un caractère numérique comme 1, niet.
Donc en gros il faut que je fasse comprendre à excel que c'est du texte ? (je suis en format standard, mais c'est pareil si je passe en format texte)
 
Dernière édition:
G

Guest

Guest
Re : Trie avec ordre personnalisé

Bonjour SmileyTom
,

Pour le problème de la macro je ne sais pas.

Quant au listes personalisées, tu peux vérifier qu'elles sont présentes sur l' application qui tourne et eventuellement les créer avec les méthodes et propriété de l'objet Application suivantes:
Code:
CustomListCount
GetCustomListNum
GetCustomListContents
AddCustomList
DeleteCustomList

De toute façon il est toujours préférable de vérifier la présence d'une liste si on veut l'utiliser par VBA. Un utilisateur lambda peut facilement en supprimer ou modifier une par mégarde ou simplement parcequ'il n'en voit pas l'interêt.

A+
 

smileytom

XLDnaute Nouveau
Re : Trie avec ordre personnalisé

Bonjour et merci Hasco,
Ca règle déjà un de mes problèmes, je pensais bien qu'on pouvait créer ces listes mais n'avais pas la méthode.
Je vais me mettre à cela tout de suite, en attendant d'autres idées.

Bonne journée

edit : bon, autre chose encore, j'ai recompté les listes persos, et en fait logiquement ma liste est la numéro 5... mais si j'éssai avec Customorder := 5, la ca ne prend pu du tout ma liste... ??
 
Dernière édition:
G

Guest

Guest
Re : Trie avec ordre personnalisé

Re,

si tu crées une liste par vba surtout noublie pas de faire correspondre le paramètre 'OrderCustom:=' de ta macro de tri au numéro de ta liste, qui peut varié d'une machine à l'autre suivant le nombre de liste déjà installées.

A+
 

smileytom

XLDnaute Nouveau
Re : Trie avec ordre personnalisé

Re,

si tu crées une liste par vba surtout noublie pas de faire correspondre le paramètre 'OrderCustom:=' de ta macro de tri au numéro de ta liste, qui peut varié d'une machine à l'autre suivant le nombre de liste déjà installées.

A+

Re, oui effectivement, quelque chose de ce type à l'ouverture du classeur devrait convenir ?
Code:
Application.AddCustomList Array("N", "C", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Z")
n = Application.GetCustomListNum(Array("N", "C", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "Z"))
MsgBox (n)
Mais lors du tri l'argument 'OrderCustom:=' n'accepte pas de variable j'ai l'impression.
Et sinon, toujours ce truc du numéro de liste, elle est bien renvoyé numéro 5 avec GetCustomListNum et MsgBox (n)...

edit : bon, voila que maintenant ca se remet à fonctionner à tout les coups... un peu perdu moi.

Sinon, quelqu'un aurait une solution pour faire remonter le numéro de liste perso dans 'OrderCustom' avec 'Application.GetCustomListNum' ? Merci
 
Dernière édition:

smileytom

XLDnaute Nouveau
Re : Trie avec ordre personnalisé

Re,
Petit message pour vous dire que je suis parvenu à mes fins.
Toujours aucune explications par contre du pourquoi mon tri ne fonctionnait pas à l'ouverture du classeur sans modif d'une cellule de la colonne 1.

Bonne fin de journée,
Thomas
 

Statistiques des forums

Discussions
312 104
Messages
2 085 332
Membres
102 863
dernier inscrit
Selemani