Tri sur nombre de 4 chiffres => 1001 ou 0055

Résolu
daddycool
Messages postés
13
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
3 avril 2016
- 30 mars 2016 à 19:07
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 4 avril 2016 à 07:43
Bonjour,
Dans un fichier Excel à plusieurs colonnes, les lignes de la 2ème colonne comporte une Référence codée sur 4 chiffres (ex 1000 - 0056 - 0000 - 1200 ...).
Ce sont des plages de références, qui me permettront de rajouter d'autres informations.

Lorsque je trie avec cette colonne (Trie de A à Z), le tableau se range en commençant par 1000, puis 1001...et par la suite 0000, 0001, 0002 incrémentation standard. Idem (Trie de Z à A) commence par 0902, 0901....et par la suite...1500, 1452, 1451....1000

Mes questions :
Comment faut-il formater les cellules (nombre, texte, ....) pour effectuer le tri de 0000 à 1500?

J'ai essayé un code VBA de type :
Range("B6:J122").Sort Key1:=Range("B6"), Order1:=xlAscending

mais le résultat est identique.

Auriez-vous une solution?

6 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 30/03/2016 à 22:04
Bonjour,
"0001" est du texte (représentant certes un numérique, mais du texte). Ne pas confondre du texte et un affichage de numérique selon un format.

EDIT je viens de tester ton code qui ne pose aucun problème avec les cellules de la colonne B contenant du texte "0002", "0100", etc ...

EDIT 2 : aucun problème non plus avec du numérique formaté.

Conclusion : il est assez vraisemblable que ta colonne de tri contient certaines cellules formatées en texte et d'autres en numérique ... (car alors ===>>> évidemment.... !) Encore que je veuille croire que tu n'as tout de même pas fait une telle bêtise ...

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
30 mars 2016 à 22:02
D'accord avec toi ucfoutu, mais sur Excel 2013.
Je viens de faire le test sous 2013 et 2007 et les deux ne réagissent pas de la même façon.

Sous 2013, le tri se fait normalement comme si tous les nombres étaient de vrais nombres (pas texte)
Sous 2007, en triant de A à Z, les vrais nombre sont triés en haut et les valeurs textes sont en bas... donc 2 groupes distincts triés.

Il faudrait savoir si Daddycool a des valeurs numériques intégrées à ses valeurs texte...(?)
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235 > cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018

30 mars 2016 à 22:06
Bonjour, MPI,
Jette un coup d'oeil à mon EDIT 2 ....
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235 > ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

Modifié par ucfoutu le 30/03/2016 à 22:25
Pour mieux comprendre : oublions l'informatique et imaginons que nous voulions traiter une équipe mixte (de garçons et de filles) par ordre d'âge des seuls garçons ...
Quelle serait la place des filles à l'issue d'un tel tri ?

EDIT et pour moi : une "référence" n'est pas un numérique (pas plus qu'un N° de téléphone), même si composée de seuls chiffres.
0
Daddycool > ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

30 mars 2016 à 22:48
Je suis bien avancé avec çà.
Et je suis en train de me débrouiller avec des macros ; mais c'est pas top.
0
Daddycool > ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018

30 mars 2016 à 22:54
Bien sur que j'ai essayé avec des format de cellules de catégories Nombre et également Texte.
J'ajoute que je n'ai pas mélangé les genre et que j'utilise 2013.
Merci quand même.
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 31/03/2016 à 07:06
je suis en train de me débrouiller avec des macros ; mais c'est pas top

Les macros n'ont probablement rien à voir en soi dans cette affaire et ne seraient concernées que si, dans le cours de leur exécution, tu touches au formatage des cellules.
Je répète : ton tri sera sans problème si la totalité des cellules de la colonne B sont formatées explicitement en texte et que tu prends bien soin de ne les alimenter que par tu texte (alimenter une cellule par le contenu d'une variable de type numérique n'est par exemple pas la même chose que l'alimenter par le contenu d'une variable de type String)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
31 mars 2016 à 07:42
Fais donc cette petite "expérience" et tu devrais comprendre :
Columns(5).NumberFormat = "@" ' j'ai forcé à texte le formatage de la colonne E
' je n'ali_mente que par du texte ("0000" n'est par exemple pas 0000)
Cells(6, 5).Value = "0100"
Cells(7, 5).Value = "0010"
Cells(8, 5).Value = "0000"
Cells(9, 5).Value = "1000"
Cells(10, 5).Value = "0005"
DoEvents
'je trie
Range("E6:J12").Sort Key1:=Range("E6"), Order1:=xlAscending

Le tri ainsi fait est sans problème.
0
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
14
31 mars 2016 à 07:57
Bonjour,

Lorsque l'on parle de saisie dans les cellules sous Excel, il ne faut pas, non plus, négliger le risque d'erreur lié ... à la saisie!

Partant du code d'UcFoutu (que je salue), j'ai simulé une faute de frappe (ajout d'un espace).
Testez et regardez le résultat.
Columns(5).NumberFormat = "@" ' j'ai forcé à texte le formatage de la colonne E
' je n'ali_mente que par du texte ("0000" n'est par exemple pas 0000)
Cells(6, 5).Value = "0100"
Cells(7, 5).Value = " 0010" 'FAUTE DE FRAPPE
Cells(8, 5).Value = "0000"
Cells(9, 5).Value = "1000"
Cells(10, 5).Value = "0005"
DoEvents
'je trie
Range("E6:J12").Sort Key1:=Range("E6"), Order1:=xlAscending 

0

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

Posez votre question
daddycool
Messages postés
13
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
3 avril 2016

3 avril 2016 à 19:08
Bonjour à tous ceux qui ont répondus.

Finalement j'ai trouvé vendredi 1er avril 2016 (comme quoi), avec le code suivant :

Range("B6").Select
ActiveWorkbook.Worksheets("Références").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Références").AutoFilter.Sort.SortFields.Add _
Key:=Range("B6:B130"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Liste_Exigences").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Pour ranger la colonne B à partir de B5 sélectionné ;
Il faut positionner Excel avec le bandeau "Données" et l'icône Trier.

Après avoir appuyé sur OK, il faut choisir :

" Trier toutes les données ressemblant à des nombres comme des nombres "

Je précise que toutes les données de la colonne B ont été modifiées en Nombre.

Merci à tous
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
4 avril 2016 à 07:43
Libère alors cette discussion (un clic sur le tag RESOLU au niveau de ton premier message).
0