|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Bonjour,
Je cherche à trier des nombres qui sont saisis sous la forme suivante: 1.0.1.1 1 2.1.1.3 2.3.4.5 1.2.3.4 1.3 3.2.1.3 a) À l'origine, ces nombre (en format texte) étaient saisis dans une seule colonne. Évidemment, le tri de Excel pose des problèmes. Notamment en raison de la présence des point (.), des espaces blancs et des caractères alphabétiques - puisqu' Excel trie en fonction de la valeur ASCII du caractère. À priori, la solution auquelle j'ai pensé est de transposer ces nombres sur plusieurs colonnes en supprimant les point (.). Ainsi la série de nombres précédent ressemble à l'image exempletriu.jpg Encore là, le tri d'Excel, bien qu'il soit correct en fonction de son algorithme de tri, ne correspond pas au besoin. Une autre solution semble plus prometteuse en ce sens qu'il suffit de remplir les cellules vides par des zéro (0) comme dans l'image exempletri2.jpg Le tri (sur 5 colonnes) d'Excel sur le tableau de l'image précédente fonctionne correctement, à l'exception de la dernière colonne (caractères alphanumériques). Heureseument, cette dernière colonne n'est pas utilisée souvent. Suite à cette problématique, avez-vous des idées sur la façon de trier ce genre de nombres ? Car la méthode que j'ai trouvé est correcte mais est un peut contraignante pour les usagers, sans compte le fait que visuellement, la présence de zéros (0) dans plusieurs cellules peut être irritant. En vous remerciant d'avance. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonsoir,
Peut-être un peu "tortueux", mais si le premier n° est en A1, tester ce qui suit: Code :
=SI(ESTERREUR(CNUM(SUBSTITUE(A1;".";"")));CNUM(STXT(SUBSTITUE(A1;".";"");1;TROUVE(" ";SUBSTITUE(A1;".";"");1)-1))*CHOISIR(NBCAR(SUBSTITUE(A1;".";""))-3;100000;10000;1000;100;10);CNUM(SUBSTITUE(A1;".";""))*CHOISIR(NBCAR(SUBSTITUE(A1;".";""));100000;10000;1000;100;10)) Si le n° se termine par des caractères non numériques après une espace, l'espace et ce qui suit sont ignorés. Les numéros sont ensuite multipliés par 10, 100, 1000, etc jusqu'à obtenir uniquement des nombres sur 6 positions. Le tri semble pouvoir ensuite être fait sur cette formule ... À tester soigneusement
__________________
. U. Milité |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Bonjour,
J'ai testé la formule. Elle semble fonctionner, à l'exception des caractères alphanumérique du type a) ou b) qui peuvent se retrouver à la suite des nombres. Peut-être ajouter du code pour transformer ce caractère en numérique en tenant compte de sa position dans l'alphabet ? |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonjour, bonsoir,
Avant de creuser la question, il serait prudent de s'assurer: - que les lettres ne seront jamais qu'en fin de "chaîne". Si on risque -à terme- de trouver des mentions telles que 1.1.B.4.a) ... ça va se compliquer un brin. - d'autre part, il faudrait pouvoir déterminer le nombre maximum de niveaux qu'on pourrait trouver dans la hiérarchie. Si on peut répondre affirmativement aux 2 questions, le problème reste gérable par formule. Si pas, il faudra passer par une macro (fonction personnalisée ou macro événementielle) Tant qu'on en est aux questions, les lettres seront-elles uniquement présentes en minuscules?
__________________
. U. Milité |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 166 ![]() |
ce qui serait pas mal non plus c'est de savoir précisément à quoi doit ressembler le tableau trié .
__________________
Cordialement Daranc |
|
|
00
|
|
|
#6 |
|
Office & Excel ![]() ![]() ![]() |
Salut.
Sans comprendre la logique des codes (y en-a-til une?), les réponses ne pourront qu'être empiriques et seront donc forcément sujettes à caution. Je suis effaré de voir qu'en 2011, les personnes responsables de la mise au point de codes et de références ne pensent pas à l'informatisation (Codes commençant par 0, syntaxes de codes exotiques plutôt que systématiques, ...), obligeant dès lors à des créations de formules plus ou moins complexes pour répondre à leurs besoins, alors qu'il s'agit, une fois de plus, d'un problème de conception...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
10
|
|
|
#7 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Bonjour,
Je vais tenter de répondre aux questions. Primo, je joins l'image qui montre ce à quoi ressemble le fichier original. Certaines parties ont été masquées (informations confidentielles). En ce qui concerne la position des caractères alphanumériques, sur une même ligne, les caractères se retrouvent toujours à la fin, mais pas nécessairement à la même position. Secondo, ils seront toujours en minuscules. Tertio, pour ce qui est de la logique du code, en fait il s'agit d'une même série de nombres que les listes (puces) à numéro dans Word, ou d'une table des matières. P.S. Comme on voit sur l'image, dans certaines cellules, on compte jusqu'à 2 nombres du type 1.2.1. Cette façon de faire complique grandement les choses. Ce n'est pas très logique, mais enfin... Quoiqu'il en soit, il sera demandé à la personne responsable des modifications de ce fichier de modifier cette façon de faire. J'espère que cela répond à vos questions. En vous remerciant d'avance pour vos réponses. |
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() ![]() Inscription : janvier 2011 Messages : 106 ![]() |
Bonjour, bonsoir,
Citation:
L'image jointe ne permet pas (en tout cas pas à moi!) de voir quoi que ce soit ... Au point que je ne sais même pas dans quelle colonne figurent les n° dont il est question!? Au jugé donc, une modif de la première proposition, qui tient compte de la suggestion Citation:
Code :
=SI(ESTERREUR(CHERCHE(" ";SUBSTITUE(A1;".";"")));SUBSTITUE(A1;".";"");GAUCHE(SUBSTITUE(A1;".";"");CHERCHE(" ";SUBSTITUE(A1;".";""))-1)&ABS(96-CODE(STXT(SUBSTITUE(A1;".";"");CHERCHE(" ";SUBSTITUE(A1;".";""))+1;1))))*CHOISIR(NBCAR(SUBSTITUE(SUBSTITUE(SUBSTITUE(A1;")";"");" ";"");".";""));100000;10000;1000;100;10)
__________________
. U. Milité |
||
|
|
00
|
|
|
#9 |
|
Office & Excel ![]() ![]() ![]() |
Les images jointes sont illisibles et ne servent donc à rien. Pourquoi n'utilises-tu pas la fonctionnalité du forum pour les joindre (Gérer les pièces jointes, un peu en dessous du cadre du message lorsque tu le rédiges...)
Je pense que la seule solution pro et viable est de repenser le système de codage de façon à systématiser. Il me parait évident que sans systématisation (syntaxe) des codes, tu auras inévitablement des soucis... Pour essayer de s'en sortir, il faut au moins dégager des règles:
En répondant à ces questions et en tenant compte de la dernière remarque, on pourra dégager un algo (éventuellement par VBA au sein d'une fonction perso) pour "remplir les trous" et renvoyer un code complété au sein d'une cellule, et le tri deviendra un jeu d'enfant. Il me paraît personnellement inepte d'éclater cela sur plusieurs colonnes.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
00
|
|
|
#10 | ||
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 166 ![]() |
en fin de compte tu veux une table des matières
en suivant la discution : Code :
et lancer la macro j'ai pas retrouver comment repeter un nombre de caractere en fin de chaine alors j'ai fait une boucle
__________________
Cordialement Daranc |
||
|
|
00
|
|
|
#11 | |||
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Citation:
Voici donc une image plus "parlante": ExempleTableau.JPG Citation:
Au niveau des règles: 1. Il y a 5 groupes possibles 2. Chaque groupe peut contenir un maximum de 2 caractères 3. À l'origine, il n'y a rien qui remplace un caractère manquant (à moins que j'ai mal compris la question) 4. Si un groupe est manquant, il l'est à droite. 5. Il faut effectivement supprimer les codes en double (dans une même cellule) Citation:
|
|||
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Yves BélangerTechnicien en informatique Inscription : février 2011 Messages : 8 ![]() |
Bonjour,
Je vais tester la solution de Daranc. Je vous en donne des nouvelles. Merci. |
|
|
00
|
|
|
#13 | ||
|
Office & Excel ![]() ![]() ![]() |
Pour moi, la solution la plus simple, pour éviter des formules à rallonge, c'est de passer par du vba.
Tu crées la fonction suivante dans un module standard Code :
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
||
|
00
|
|
|
#14 |
|
Membre Expert
![]() Inscription : janvier 2007 Messages : 1 166 ![]() |
au vu du tableau tu as des colonnes vides et une ligne de titre il faudra modifier la macro pour en tenir compte. prendre la largeur du tableau en fonction de la ligne de titre .pointer la premier cellule à trier. le reste devrait tourner normalement
__________________
Cordialement Daranc |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com