Trier une liste automatiquement
Bonjour,
J'ai des listes de texte que je voudrai trier automatiquement, par exemple
bleu1
jaune2
que je voudrais trier en alternant chaque chaine de caractère différente comme ceci :
bleu1
rouge1
jaune1
bleu2
rouge2
jaune2
bleu3
rouge3
bleu4
Comment obtenir un tel résultat (programmation, logiciel, excel ? )
Merci d'avance !
Mathal.
En VBA peut-être...
Mais pour coder ça...
Tes données seront vraiment :
Bleu1,Rouge1??
bonjour
ta liste en colonne A par ex
dans la colonne B tu saisis
=droite(A1;1) puis doubleclic sur le carré en bas et à droite
tu n'as plus que les chiffres en colB
tu sélectionne la zone des colonnes A &B
tu fais un tri par colonne B
tu peux si tu le veux effecer la colonne B
si cette opération se renouvelle souvent, fais une macro avec l'enregistreur de macros
jojo86 a écrit :En VBA peut-être...
Mais pour coder ça...
Tes données seront vraiment :
Bleu1,Rouge1??
Bonjour jojo,
Non en fait mes données seront des liens internet et je voulais trier avec le début des chaines de caractères de chaque lien.
michel_m a écrit :bonjour
ta liste en colonne A par ex
dans la colonne B tu saisis
=droite(A1;1) puis doubleclic sur le carré en bas et à droite
tu n'as plus que les chiffres en colB
tu sélectionne la zone des colonnes A &B
tu fais un tri par colonne B
tu peux si tu le veux effecer la colonne B
si cette opération se renouvelle souvent, fais une macro avec l'enregistreur de macros
Bonjour Michel,
j'ai essaye mais ça ne donne pas le résultat voulu
Dans mes liens il n'y a pas forcément un chiffre à la fin de la chaine de caractère, c'était une exemple pour dire que le début de la chaine de caractère était le même mais qu'ensuite chaque chaine (chaque lien) était différente.
un autre exemple de la liste à trier serait :
julien=kgr124rr
julien=1254gf2
julien=1f254rg
julien=hg512tt
rémi=gfr245
rémi=54578th
claude=g24hg5rt41
claude=dfd2f415er
claude=121e54f
Et le résultat voulu serait :
julien=kgr124rr
claude=121e54f
rémi=gfr245
julien=1f254rg
claude=g24hg5rt41g
rémi=54578th
julien=hg512tt
claude=dfd2f415er
julien=1254gf2d
Par exemple il faudrait comparer les 5 premiers caractères de chaque ligne pour ensuite les trier.
c'est l'idée je pense mais je ne sais pas du tout si c'est possible
Bonjour,
Es tu sûr cette fois que ta question est la bonne ? On a ce que tu as écrit pour essayer de t'aider...
sj c'est cela( le signe = c'est quoi?), tu utilises la fonction Excel Gauche(A1,5) à la place de droite(A1;1 )
etc
si tu veux une macro, tu exécutes ces opérations après avoir activé l'enregistreur de macro. si tu as beaucoup de lignes (>10000) il y a + rapide avec VBA mais comme tu n'as pas précisé...
Bonjour Michel,
Merci d'essayer de m'aider
c'est plus sur la bonne voie mais ça ne donne toujours pas le résultat voulu :
dans ma colonne bien j'ai bien les caractères 'sélectionnés' mais comme ce sont les mêmes, tri donne le même résultat que la colonne A,
je n'ai pas d'alternance entre les différentes chaine de caractère.
Je ne sais pas si c'est très clair ?
Si j'essaie de l'expliquer autrement ça donnerait ça :
j'ai des lignes de texte (des adresses internet) avec un paquet de lignes qui ont le même début de chaine de caractère, un autre paquet de lignes qui ont le même début entre elles mais qui est différent du 1er paquet, ... jusqu'à un énième paquet qui aurait des lignes avec le même début entre elles mais qui serait différent des autres paquets.
Mathal.
Bonjour à tous,
Essaie avec ce code Mathal :
Sub triAlterne()
Dim i%, j%, derLig%
derLig = Range("A65536").End(xlUp).Row
Columns("B:D").Insert Shift:=xlToRight
Range("B1").FormulaR1C1 = "=LEFT(RC[-1],FIND(""="",RC[-1])-1)"
Range("B1").AutoFill Destination:=Range("B1:B" & derLig)
Cells(1, 3) = 1
j = 2
i = 2
iteration:
Do While Cells(i, 2) = Cells(i - 1, 2)
Cells(i, 3) = j
i = i + 1
j = j + 1
Loop
If i <= derLig Then
Cells(i, 3) = 1
i = i + 1
j = 2
End If
If i <= derLig Then GoTo iteration
For i = 1 To derLig
Cells(i, 4) = Cells(i, 3) & Cells(i, 2)
Next i
Range("A1:D" & derLig).Select
Selection.Sort Key1:=Range("D1"), Order1:=xlAscending
Columns("B:D").Delete Shift:=xlToLeft
End Sub
Les données à trier doivent se trouver dans la colonne A à partir de la première ligne.
vba-new a écrit :Bonjour à tous,
Essaie avec ce code Mathal :
Sub triAlterne() Dim i%, j%, derLig% derLig = Range("A65536").End(xlUp).Row Columns("B:D").Insert Shift:=xlToRight Range("B1").FormulaR1C1 = "=LEFT(RC[-1],FIND(""="",RC[-1])-1)" Range("B1").AutoFill Destination:=Range("B1:B" & derLig) Cells(1, 3) = 1 j = 2 i = 2 iteration: Do While Cells(i, 2) = Cells(i - 1, 2) Cells(i, 3) = j i = i + 1 j = j + 1 Loop If i <= derLig Then Cells(i, 3) = 1 i = i + 1 j = 2 End If If i <= derLig Then GoTo iteration For i = 1 To derLig Cells(i, 4) = Cells(i, 3) & Cells(i, 2) Next i Range("A1:D" & derLig).Select Selection.Sort Key1:=Range("D1"), Order1:=xlAscending Columns("B:D").Delete Shift:=xlToLeft End Sub
Les données à trier doivent se trouver dans la colonne A à partir de la première ligne.
Bonjour vba-new !
Je ne sais pas du tout comment utiliser ton code !
Je ne sais pas comment utiliser des macros ou du vba, peux-tu m'expliquer comment faire ?
Salut le forum
Tes données contienent bien le signe = dans le texte
Le plus simple un vrai fichier avec de vrai valeur. (en respectant la confidentialité)
Tu peux utiliser le lien suivant : Joindre un fichier
Mytå