Tri - letres et chiffres mélangés

Signaler
Messages postés
26
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2008
-
Messages postés
26
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2008
-
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

Comment puis-je faire ?
Merci

8 réponses

Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
utilises un right$

^^

A.
Messages postés
26
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2008

Merci pour l'info MAIS je ne trouve pas cette fonction.

Comment dois-je l'utiliser ?
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
right$(tachaine, nbdecharactères en partant de la fin)

ca te retourne une chaine (et non pas un variant, par opposition au right ) composé du nbdecharactères spécifiés en partant de la droite de ta chaine.

la version left$ existe aussi, selon tes besoins, ainsi que la version mid$

(mid$(tachaine, charactèresdedebut,longueur) )

A.
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
Bonjour
Tes données, c'est toujours
Une lettre + des chiffres ?
Messages postés
26
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2008

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 ?
Messages postés
113
Date d'inscription
jeudi 1 juillet 2004
Statut
Membre
Dernière intervention
25 août 2004
1
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...

A.
Messages postés
1858
Date d'inscription
samedi 29 juin 2002
Statut
Membre
Dernière intervention
17 octobre 2013
10
mais c'est toujours :
une lettre + un (des) chiffre(s) + éventuellement autre chose ?
Messages postés
26
Date d'inscription
mardi 13 juillet 2004
Statut
Membre
Dernière intervention
1 juillet 2008

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.