Tri Excel

Fermé
eli - 14 déc. 2015 à 16:31
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 16 déc. 2015 à 01:27
Bonjour,
Aujourd'hui les références sont classées comme ci-dessous
28K139
28K32
280A1
3B1-A
304A10
305B111
305B2
48K107-B
48K12-A
48K1-B
et je cherche à les trier comme suit :
3B1-A
28K32
28K139
280A1
304A10
305B2
305B111
48K1-B
48K12-A
48K107-B

Je suis sur excel 2013
Merci pour votre aide




A voir également:

3 réponses

Raymond PENTIER Messages postés 58732 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 29 novembre 2024 17 247
14 déc. 2015 à 20:16
Il suffit de remplacer 3B1-A par 03B1-A !
1
Je ne peux pas remplacer 3B1-a par 03B1-A car les données sont issues d'une extraction
0
Raymond PENTIER Messages postés 58732 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 29 novembre 2024 17 247 > eli
15 déc. 2015 à 14:48
- Il me semblait qu'on pouvait toujours modifier une donnée, qu'elle provienne ou pas d'une extraction ...
- Tu ne peux pas corriger la donnée AVANT l'extraction ?
- Tu fais ton tri, et tu déplaces manuellement la ligne qui est mal placée ...
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
Modifié par JvDo le 16/12/2015 à 01:45
Bonsoir,

Si tes données sont issues d'une extraction, tu peux quand même travailler dessus.
Je te propose 2 approches qui ne font rien d'autre qu'automatiser la proposition de Raymond Pentier qui consiste à bloquer chaque séquence numérique dans un champs de 5 zéros (si tes valeurs numériques dépassent 99999, il suffit d'ajouter des zéros).
J'ai considéré que tes données étaient en B5:K14 et que tes valeurs servant de clé de tri n'avaient pas plus de 20 caractères (pour alléger l'écriture), mais ça se modifie très facilement.

A) insérer une clé de tri avec les compléments de zéros pour chacune des 2 séquences numériques :
(ici, je considère qu'il n'y a qu'une lettre qui sépare les 2 séquences numériques)

1) En A5, tu saisis la formule matricielle rébarbative suivante :
=TEXTE(--GAUCHE(B5;-1+MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))));"00000")&STXT(B5;MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20)));1)&TEXTE(GAUCHE(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))));-1+MIN(SIERREUR(9^9*(1+STXT(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))));LIGNE(INDIRECT("1:"&NBCAR(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20)))))));1));LIGNE(INDIRECT("1:"&NBCAR(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))))))))));"00000")&SIERREUR(DROITE(B5;NBCAR(B5)+1-MIN(SIERREUR(9^9*(1+STXT(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))));LIGNE(INDIRECT("1:"&NBCAR(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20)))))));1));LIGNE(INDIRECT("1:"&NBCAR(DROITE(B5;NBCAR(B5)-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20)))))))))-MIN(SIERREUR(9^9*(1+STXT(B5;LIGNE($1:$20);1));LIGNE($1:$20))));"")

tu la valides par CTRL+MAJ+ENTER
2) Tu la recopies vers le bas
3) tu sélectionnes tes données en incluant la colonne A (A5:K14 donc)
4) tu tries sur la colonne A
5) tu supprimes tes cellules en colonne A
6) tu souris parce que tu es content


B) si tu as la chance de pouvoir installer Morefunc de L. Longre tu peux utiliser cette procédure :
(j'utilise les expressions régulières dans ce point B. La séquence de lettres entre les séquences nuumériques peut être de taille quelconque)

1) tu sélectionnes une zone libre de même dimension que tes données (V5:AE14 par exemple)
2) dans la zone d'édition tu saisis la formule allégée :
=INDEX(B5:K14;TRIV.IDX(TEXTE(REGEX.STXT(B5:B14;"\d+";1);"00000")®EX.STXT(B5:B14;"\D+";1)&TEXTE(REGEX.STXT(B5:B14;"\d+";2);"00000")®EX.STXT(B5:B14;"\D+";2);1);TRANSPOSE(LIGNE(INDIRECT("1:"&COLONNES(B5:K14)))))

il y a un souci avec la transcription de la formule : le ®EX qui apparaît correspond à la séquence "esperluette suivi de REGEX"

que tu valides toujours par CTRL+MAJ+ENTER
résultat : tes données en V5:AE14 sont triées.
3) tu fais un copier/coller spécial valeur du résultat
4) tu passes au point 6) précédent


La formule du point A) peut être simplifiée mais je laisse la question ouverte.

Bon courage
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
15 déc. 2015 à 18:48
Bonjour à tous,

Apparemment, ton tri n'est ni alphabétique (il serait alors comme dans le message de Raymond Pentier) ni numérique .

Ce que j'appelle numérique, c'est le tri sur 4 clés :
la première est le nombre du début
la seconde est la lettre qui suit
la troisième est la seconde séquence numérique
la quatrième est l'éventuelle fin alphabétique

dans ce cas, tu obtiendrais :
Valeurs       Clé1  Clé2   Clé3   Clé4
3B1-A 3 B 1 -A
28K32 28 K 32
28K139 28 K 139
48K1-B 48 K 1 -B
48K12-A 48 K 12 -A
48K107-B 48 K 107 -B
280A1 280 A 1
304A10 304 A 10
305B2 305 B 2
305B111 305 B 111

cordialement
1
Raymond PENTIER Messages postés 58732 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 29 novembre 2024 17 247
15 déc. 2015 à 14:54
En essayant diverses manipulations sur Excel, je me rends compte que ta demande n'est pas logique ! Ce n'est pas
28K139
28K32
280A1
3B1-A
304A10
305B111
305B2
48K107-B
48K12-A
48K1-B

que tu devrais obtenir, mais
28K139
28K32
280A1
3B1-A
304A10
305B2
305B111
48K1-B
48K12-A
48K107-B

Tu n'es pas d'accord ?
0