Classement alphabétique de noms avec une et deux décomale ?

Fermé
Lo. - 31 janv. 2014 à 15:01
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 - 4 févr. 2014 à 10:57
Bonjour,

Tout est dans le titre,
voici juste comment se présentent ma colonne à classer...

DOC_53_V1_30
DOC_53_V15_30
DOC_53_V28_30
DOC_53_V3_30
DOC_53_V5_30
DOC_62_V2_50
DOC_62_V25_50
DOC_62_V33_50
DOC_62_V5_50
DOC_62_V8_50

C'est au niveau des versions (V) que ça coince !

Merci à vous

Lo.

9 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
31 janv. 2014 à 15:36
Bonjour
pas grand chose à faire, sinon peut être assez difficilement en VBA
Vos données sont des textes et Excel classe selon le 1° chiffre trouvé derrière le V soit 1 puis ensuite 1()65 puis en suite 2 ect...
crdlmnt
0
Pas d'autre choix que d'ajouter une colonne reformatée et de trier à partir de cette nouvelle colonne :

A1 = la cellule où se trouve la ref à traiter.

=GAUCHE(A1;8)&TEXTE(STXT(A1;9;NBCAR(A1)-11);"00")&DROITE(A1;3)
0
Merci de vos réponses.

Mutumbo,

Je suis une brêle en xls, et l'exemple que j'avais donné ne correspondait pas tout à fait à ma nomenclature réel.
Sauf que quand j'essaie de l'adapter, je suis dans les choux.
Autre problème mes noms ne se finissent pas tous de la même façon, je dois proscrire les décalages depuis la droite.

Mes noms sons de ce type :

WAVE_000123_V1_10
WAVE_000123_V1_10_A
WAVE_000123_V1_10_B

Jusqu'au "10", c'est toujours sous cette forme.
Après, il peut y avoir des faces et/ou des annotations en parenthèse.
Donc pas de trie pas la fin de nom.

Je veux bien que tu me développes à quoi corresponds ces formules
histoire de ne pas mourir idiote ;-)
Merci
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 31/01/2014 à 17:31
Bonjour
en attendant Mutumbo, je peux déjà vous dire que sa proposition ne fonctionne pas avec ces nouveaux codes.
Et pour vous en dire plus je pense qu'il ne pourra que vous demander avec quoi vous voulez classer, parce que les 15 premiers caractères de vos exemples sont identiques!

Il faudrait, je crois , en dire plus sur vos types de codes... à moins que Mutumbo soit devin, ce qui reste possible
Le mieux serait de copier la iste des codes à traiter dans un fichier vierge et de la déposer sur:
https://www.cjoint.com/
en revenant placer ici le lien donné par le site

a vous lire?
crdlmnt

ps
pour expliquer quand même le but (l'idée est excellente) était de placer un 0 devant les codes à nun chiffre qui suivait V de façon à les reclasser dans l'ordre arithmétique
donc:
prendre les 8 caractéres à gauche
=GAUCHE(A1;8)
extraire les caractères correspondant au 9 chiffre s'il est seul, au 9 et 10° s'il sont deux, et les transformer en nombre à deux chiffres accolés à la première partie
TEXTE(STXT(A1;9;NBCAR(A1)-11);"00") _là je crois qu'il fallait écrire -12, c'est sous réserve_
rajouter le reste
&DROITE(A1;3)
Mais avec vos nouveaux codes, il n'y a plus cette logique
0
Dans mon deuxième exemple je voulais juste donner la forme, et non une liste

[4 lettres]_[6 chiffres]_VX_X
[4 lettres]_[6 chiffres]_VX_X_A
[4 lettres]_[6 chiffres]_VX_X_B
[4 lettres]_[6 chiffres]_VX_X_(XXXXX)
[4 lettres]_[6 chiffres]_VX_X_(XXXXX)_A
[4 lettres]_[6 chiffres]_VX_X_(XXXXX)_B
[4 lettres]_[6 chiffres]_VX_XX
[4 lettres]_[6 chiffres]_VX_XX_A
[4 lettres]_[6 chiffres]_VX_XX_B
[4 lettres]_[6 chiffres]_VX_XX_(XXXXX)
[4 lettres]_[6 chiffres]_VX_XX_(XXXXX)_A
[4 lettres]_[6 chiffres]_VX_XX_(XXXXX)_B

Et je peux continuer longtemps...
Ce qui est immuable :

[4 lettres]_[6 chiffres]_V

Mon principale point d'achoppement et la coexistence de deux types de décimales dans la forme VX(X)_X(X), simple ou double, qui bloque le classement AZ
0
N.B. Je ne suis pas hostile à une alternative (parallèlement aux fx.) en VBA :-)
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
Modifié par Vaucluse le 31/01/2014 à 18:34
Alors voila un modèle avec quelques explications
là, on classe selon les codes en incluant les chiffres qui suivent _V
s'il faut aller plus loin, revenez, mais, (au lieu de continuer longtemps), avec votre liste de code sur une feuille Excel merci, sinon non ne s'en sortira pas
https://www.cjoint.com/c/DAFsFsEbdCq
crdlmnt
0
Bon ben je persiste (tardivement) avec ma solution à rallonge :

=GAUCHE(A1;13)&TEXTE(STXT(A1;14;CHERCHE("_";A1;14)-14);"00")&DROITE(A1;NBCAR(A1)+1-CHERCHE("_";A1;14))
0
Raymond PENTIER Messages postés 58721 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 15 novembre 2024 17 236
31 janv. 2014 à 17:52
Bonjour lo.

Excel n'est pas une discipline artistique, dans laquelle le lecteur peut interpréter à sa guise ce que l'auteur lui présente. C'est une discipline de logique rigoureuse, dans laquelle aucune approximation n'est possible.
Alors donner une liste de données, et dès la première réponse obtenue nous informer que "l'exemple que j'avais donné ne correspondait pas tout à fait à ma nomenclature réel", ce n'est pas sérieux : tu nous fais bosser pour rien !

De même, pour l'intitulé de ta discussion, sache qu'un nom ne peut pas avoir de décimales ; seul un nombre peut en être pourvu ...

Nous attendons que tu fasses ce que Vaucluse t'a demandé : envoyer ton fichier Excel.

Donc à bientôt.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Au temps pour moi.

Pour des raisons de confidentialité liée à mon entreprise je ne peux pas diffuser sur la toile un fichier Excel "signé" en lecture publique.
Vous le comprendrez peut être...

http://cjoint.com/?DAFsrpARmTJ

Voilà
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
31 janv. 2014 à 21:54
Bonsoir à tous,

en utilisant l'addin Morefunc de Laurent Longre, et ses fonctions de tri et d'expressions régulières, on peut construire une solution assez concise :
si les données sont en F19:F398, il faut sélectionner une plage de même dimension et entrer la formule matricielle :
=TRIV(REGEX.SUBSTITUE(REGEX.SUBSTITUE(F19:F398;"_V(\d)_";"_V0[1]_");"_(\d\D)";"_0[1][2]";1);;1)
Il faut valider par CTRL+MAJ+ENTER

On peut optimiser les REGEXP mais je laisse ce travail aux spécialistes.

Le résultat obtenu est un tableau trié qu'il faut copier/coller en données pour virer les formules.

cordialement
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 414
1 févr. 2014 à 08:21
Bonjour
ci joint votre liste avec une proposition de solution de classement,basée sur ma précédente proposition et à vérifier
https://www.cjoint.com/?DBbit32I1ng
crdlmnt
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
1 févr. 2014 à 09:39
Bonjour,

en regardant le travail de Vaucluse, je me rend compte que la formule que j'ai indiquée retourne les données normalisées (avec les zéros ajoutés quand il faut) dans l'ordre croissant.

pour obtenir les données d'origine triées dans l'ordre des données normalisées, il faut utiliser :
=INDEX($A$5:$A$384,TRIV.IDX(REGEX.SUBSTITUE(REGEX.SUBSTITUE($A$5:$A$384,"_V(\d)_","_V0[1]_"),"_(\d\D)","_0[1][2]",1),1),1)
avec le même type de validation puisqu'on est toujours en matriciel.

cdlt
0
Bonjour,

Un grand merci à Vaucluse pour cette formule de tri,
qui m'a permis de bien avancer.

Merci JvDo, je vais télécharger Morefunc pour essayer ces formules...

Bonne journée
0