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 ?

bon j'ai parcouru l'aide d'Excel et je crois que j'ai compris comment utiliser ton texte comme macro et l'executer.

Par contre ça me donne une erreur :

captur34

Qu'est-ce qui cloche ?

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å

Rechercher des sujets similaires à "trier liste automatiquement"