Trier cellule avec texte et nombre
skipass
Messages postés
2
Statut
Membre
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
je cherche a faire le tri croissant d'une plage de données qui est composée de cellules toute construite de cette façon : "YA ###" .
N° abri
YA 1
YA 100
YA 101
YA 102
YA 103
YA 11
YA 12
YA 13
YA 14
YA 15
YA 16
YA 17
YA 18
YA 2
YA 20
YA 200
j'ai essayé par format de cellule personnalisé : "YA" ### mais il continue à trier de A-Z et non pas un tri croissant par le nombre.
Merci d'avance !
je cherche a faire le tri croissant d'une plage de données qui est composée de cellules toute construite de cette façon : "YA ###" .
N° abri
YA 1
YA 100
YA 101
YA 102
YA 103
YA 11
YA 12
YA 13
YA 14
YA 15
YA 16
YA 17
YA 18
YA 2
YA 20
YA 200
j'ai essayé par format de cellule personnalisé : "YA" ### mais il continue à trier de A-Z et non pas un tri croissant par le nombre.
Merci d'avance !
A voir également:
- Excel trier par nombre de caractère
- Excel trier par ordre croissant chiffre - Guide
- Nombre de jours entre deux dates excel - Guide
- Liste déroulante excel - Guide
- Caractère spéciaux - Guide
- Caractère ascii - Guide
9 réponses
Bonjour,
Ton tri est-il fait ponctuellement ?
Si oui, en imaginant que ta colonne "n° Abri" soit la colonne A, tu peux ajouter dans une colonne voisine la formule : =SUBSTITUE(A1;"YA ";;1)
Tu copies vers le bas la formule puis tu appliques un tri sur cette dernière colonne.
(cette colonne peut être supprimé après tri)
Ton tri est-il fait ponctuellement ?
Si oui, en imaginant que ta colonne "n° Abri" soit la colonne A, tu peux ajouter dans une colonne voisine la formule : =SUBSTITUE(A1;"YA ";;1)
Tu copies vers le bas la formule puis tu appliques un tri sur cette dernière colonne.
(cette colonne peut être supprimé après tri)
Liste sur excel 2007. J'ai re-essayé encore suite à ton post lermite222 mais ca ne trie pas sur le nombre croissant :
concrètement excel trie :
YA 1
YA 100
...
YA 2
YA 20
YA 200
ce ne convient pas !
merci pour voter aide !
concrètement excel trie :
YA 1
YA 100
...
YA 2
YA 20
YA 200
ce ne convient pas !
merci pour voter aide !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui, Mais ça c'est inévitable et inhérent au logiciel. (malheureux mais c'est comme ça)
Même sans format tu va avoir le même résultat.
Seule façon de faire, formater la colonne en texte et mettre des YA 001, YA 002, YA 010, YA 100 etc.
A+
Même sans format tu va avoir le même résultat.
Seule façon de faire, formater la colonne en texte et mettre des YA 001, YA 002, YA 010, YA 100 etc.
A+
Bonjour,
Essayez comme ceci :
1- saisir des chiffres, de 1 à 500,
2- sélectionner les cellules / Format de cellule / choisir "texte"
3- OK
4- sélectionner les cellules / Format de cellule / choisir "personnalisé" et saisir : "YA" ###
5- OK
6- Triez...
Un classeur exemple
Essayez comme ceci :
1- saisir des chiffres, de 1 à 500,
2- sélectionner les cellules / Format de cellule / choisir "texte"
3- OK
4- sélectionner les cellules / Format de cellule / choisir "personnalisé" et saisir : "YA" ###
5- OK
6- Triez...
Un classeur exemple
Bonjour
par VBA: résultat du tri effectué sur une autre colonne "pour voir l'essai du code") A ADAPTER A LA STRUCTURE DU CLASSEUR
https://www.cjoint.com/?3BqqbQ2ZCLn
Michel
par VBA: résultat du tri effectué sur une autre colonne "pour voir l'essai du code") A ADAPTER A LA STRUCTURE DU CLASSEUR
https://www.cjoint.com/?3BqqbQ2ZCLn
Option Base 1
Sub trier_par_nombre()
Dim T_in, T_sep, separ
Dim Fin As Integer
Fin = Range("A1").End(xlDown).Row
T_in = Application.Transpose(Range("A1:A" & Fin).Value)
ReDim T_sep(Fin, 2)
For cptr = 1 To Fin
separ = Split(T_in(cptr))
T_sep(cptr, 1) = separ(0)
T_sep(cptr, 2) = separ(1)
Next
TriMulti T_sep, 2, LBound(T_sep), UBound(T_sep)
For cptr = 1 To Fin
T_in(cptr) = T_sep(cptr, 1) & " " & T_sep(cptr, 2)
Next
Range("C1").Resize(Fin, 1) = Application.Transpose(T_in)
End Sub
Sub TriMulti(Tablo, Col As Byte, Min&, Max&)
'Auteurs : Ti et Zon
Dim I&, J&, K&, M, Chaine
I = Min
J = Max
M = Tablo((Min + Max) / 2, Col)
While (I <= J)
While (Tablo(I, Col) < M And I < Max)
I = I + 1
Wend
While (M < Tablo(J, Col) And J > Min)
J = J - 1
Wend
Michel
Bonjour tous,
Une tite fonction ?
A+
Une tite fonction ?
Sub TriPerso()
Dim TB, T As Boolean, Buff As Double
Dim Fin As Integer
Fin = Range("A1").End(xlDown).Row
TB = Application.Transpose(Range("A1:A" & Fin).Value)
Do
T = False
For i = 2 To Fin
If TB(i) < TB(i - 1) Then
T = True: Buff = TB(i)
TB(i) = TB(i - 1): TB(i - 1) = Buff
End If
Next i
Loop Until T = False
Range("A1").Resize(Fin, 1) = Application.Transpose(TB)
End Sub
A+
Bien vu, mais il faudrait que l'on ait toujours 3 caractères au nombre, par ex 011, sinon "108" est inférieur à 11
il faut alors transformer la colonne de tri en format nombre
=CNUM(SUBSTITUE(A1;"YA";;1))
donc ton idée modifiée me semble être la bonne
de mémoire, n'y a t il pas une limite au nombre de ligne à trier ?
D'après ce que je constate le YA n'est pas dans la cellule mais dans la mise en forme, donc il n'y a que des nombres à trier.
A+
Oui , mais skipass a dit "j'ai essayé par format de cellule personnalisé : "YA" ###", ce que j'ai interprété comme" j'arrivais pas à trier donc j'ai essayé etc?."
ce qui m'a amené à présenter la macro à partir d'une cellule "YA ###"
mais en fait, ça marche sans macro si en format personnalisé on opte pour "YA "000 et non "YA "###
ça semble d'ailleurs la solution si skipass travaille avec un format personnalisé
1
10
101
105
110
2
21
200
VOIR
Le code que j'ai mis fonctionne bien.
J'y ai copier tes Transpose :-)