Tri sur nombre de 4 chiffres => 1001 ou 0055 [Résolu]

daddycool 13 Messages postés mardi 10 octobre 2006Date d'inscription 3 avril 2016 Dernière intervention - 30 mars 2016 à 19:07 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 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?
Afficher la suite 

13 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 30/03/2016 à 22:04
0
Utile
7
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.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 30 mars 2016 à 22:17
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.
Daddycool > ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 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.
Daddycool > ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 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.
eriiic 21536 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 2 avril 2016 à 15:30
Bonjour,

Je suis bien avancé avec çà.
Peut-être parce que tu n'as pas compris (ou bien interprété) les réponses.
Tu as 0002 d'affiché.
Ca peut -être la chaine "0002" ou le nombre 2 avec le format d'affichage 0000.
Si tu n'as que des chaines de même longueur ou que des nombres ça sera trié comme tu veux.
Si les chaines ne sont pas de même longueur elles seront triées d'abord par leur taille
Si tu as un mélange de tout ça tu auras par défaut les nombres d'abord, puis les chaines. Sauf si tu passes par Tri personnalisé et que tu choisis l'option 'Trier les données ressemblant à des nombres comme des nombres', mais c'est mieux d'avoir des données homogènes sinon tu auras d'autres problèmes plus tard.
eric
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > eriiic 21536 Messages postés mardi 11 septembre 2007Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 2 avril 2016 à 16:35
Bonjour, eriiic,
force est de constater que ce n'est pas le demandeur, qui est le plus assidu dans cette discussion...
Amitiés
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 31/03/2016 à 07:06
0
Utile
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.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 31 mars 2016 à 07:42
0
Utile
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.
Commenter la réponse de ucfoutu
pijaku 12205 Messages postés jeudi 15 mai 2008Date d'inscriptionModérateurStatut 13 septembre 2017 Dernière intervention - 31 mars 2016 à 07:57
0
Utile
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 

Commenter la réponse de pijaku
daddycool 13 Messages postés mardi 10 octobre 2006Date d'inscription 3 avril 2016 Dernière intervention - 3 avril 2016 à 19:08
0
Utile
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
Commenter la réponse de daddycool
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 avril 2016 à 07:43
0
Utile
Libère alors cette discussion (un clic sur le tag RESOLU au niveau de ton premier message).
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.