Tri textuel numérique

D

DARKMOON

Guest
salut à tous,
voici mon problème sous excel 2002 (10.2614.2625)

je fai un tri croissant par colonne A suivit dela colonne B
(fichier de 7500 lignes...)
La colonne A contient des lettres suivient de chiffres
(sans espace entre les 2)
du style A11 A65 A32 etc....
la colonne B ne contient que des chiffres...

le problème est le suivant :
un tri croissant devrait me donner:

A1
A2
A3
A8
A11
A15
A22
A100

MAIS le tri me donne (aléatoirement je trouve...):

A1
A11
A15
A100
A2
A22
A3
A8

alors si qq à une idée précise afin de trier
mes colonnes convenablement...

merci d'avance pour votre aide précieuse
 
G

Gérard Dezamis

Guest
Bonsoir Darkmoon

C'est normal puisque excel trie en fonction du premier caractère puis du 2° puis du 3° ....
Il te faut don ctransformer tes valeurs A12 en A012 et A7 en A007

Les valeurs étant en A1 en B1 écrire :
=SI(NBCAR(A1)=2;GAUCHE(A1;1)&0&0&DROITE(A1;1);SI(NBCAR(A1)=3;GAUCHE(A1;1)&0&DROITE(A1;2);SI(NBCAR(A1)=4;A1;"")))
Cette formule n'est valable que pour Une lettre suivie de 3 chiffres à toi de l'ameliorer selon tes besoins.

@+
GD
 
D

DARKMOON

Guest
merci pour ta réponse
mais mon pour cette formule je ne sais pas si cela va fonctionner
car j'ai aussi plusieurs lettres devant les chiffres de la colonne A
du style;

AK15
AGH232
AL125

ETC...
y a t il un moyen de l'adapter ???

merci....
 
A

andré

Guest
Salut DARKMOON et Gérard,

Que j'aime ces questions impossibles à résoudre.

J'ai fait divers essais (SUBSTITUE et NON(ESTERREUR(CNUM(DROITE(A1;NBCAR(A1))), mais je butais toujours sur le maximim de 30 arguments (fonctions) dans une formule !

Pour finir, j'ai trouvé celle-ci, qui est toutefois limitée, toujours pour la même raison, à un maximum de 4 lettres à la gauche, suivi d'un nombre non limité de chiffres :

Supposons ABCD12344567890 en A1

=SI(CODE(GAUCHE(A1;1))<59;CNUM(DROITE(A1;NBCAR(A1)));
SI(CODE(STXT(A1;2;1))<59;CNUM(DROITE(A1;NBCAR(A1)-1));
SI(CODE(STXT(A1;3;1))<59;CNUM(DROITE(A1;NBCAR(A1)-2));
SI(CODE(STXT(A1;4;1))<59;CNUM(DROITE(A1;NBCAR(A1)-3));
SI(CODE(STXT(A1;5;1))<59;CNUM(DROITE(A1;NBCAR(A1)-4));"")))))

Il ne peut pas y avoir d'espace entre les lettres, bien entre la dernière lettre et le premier chiffre, ainsi qu'entre les chiffres.

J'espère que cela pourra te convenir.
Ândré.
 
A

andré

Guest
Resalut,

A y réflechir, trois petites remarques :

Si les valeurs commencent toujours par au moins une lettre, la première condtion peut être supprimée et un test sur une cinquième lettre ajouté à la fin de la formule.

Si cette extraction ne sert qu'à un tri, les fonctions CNUM peuvent être supprimées, et un test sur une sixième lettre ajouté à la fin de la formule.

Il me semble que cette question pourrait aussi être résolue par une formule matricielle, en y imbriquant la fonction DECALER (puisqu'il s'agit d'une série de tests successifs), mais là il faudra que j'y réflechisse un bon bout de temps, à moins que les spécialistes "matricielliens" ne fassent surface entre-temps (lol).

Ândré.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 905
Membres
103 982
dernier inscrit
krakencolas