Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008
-
24 août 2004 à 10:57
Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008
-
24 août 2004 à 16:50
Bonjour,
j'ai une liste de données comme celle-ci =
m1
m2
m11
m111
m3
Lorsque je les trie, j'ai :
m1
m11
m111
m2
m3
et je voudrais obtenir une liste triée aussi bien sur la première lettre que sur les chiffres qui suivent et obtenir :
m1
m2
m3
m11
m111
Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008 24 août 2004 à 13:54
Non, ma chaine pourrait être
m1
m1bis
m2
m111
m111Ter
x3
m001
m001bis
Mais même si j'ai bien compris le principe du right$, je ne vois pas comment l'implémenter. Dois-je créer une macro qui fasse le tri ?
Ou puis-je utiliser cette fonction directement depuis le menu DATA - SORT et comment alors le faire trier avec cette fonction ?
ShadowWisp
Messages postés113Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention25 août 20041 24 août 2004 à 14:24
En utilisant les fonctions left$,right$ et mid$ (avec eventuellement l'aide de la fonction len, si tes chaines sont de longueur variable), tu peux ramener ton problème à trier des sous chaînes plutot que de les traiter en entier.
Par exemple, en reprenant ton exemple d'au dessus, tu peux faire un tri sur la premiere lettre de tes chaines, puis t'occuper du reste.
Je pense que tu trouveras surement une utilité non négligeable à la fonction isnumeric(chaîne) qui permet de vérifier qu'une chaine est bien interprétable numériquement...
Richard_9
Messages postés26Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention 1 juillet 2008 24 août 2004 à 16:50
Oui ce sera toujours le cas.
Je pense que je me suis mal expliqué du début.
En colonne A j'ai les informations sur les membres (m1,m2,m111,...)
En colonne B,j'ai leurs noms
En colonne C, j'ai leurs prénoms et ainsi de suite.
Ce que je veux faire c'est un tri sur base du n° de membre mais que les autres données suivent.
1. dois-je écrire une procédure en VBA et si oui laquelle pour reprendre toute la place de cellule (plage qui va s'allonger au fil du temps puisqu'il s'agit de n° de membre).
2. devrais-je reprendre la plage de cellule dans un array mais alors comment faire pour trier l'array et remettre la liste dans la feuille de calcul? Et faire suivre les autres colonnes selon le même tri.