Ordonner un groupe de cellules par ligne

Bonjour!

Voici mon probleme:

J'ai 14 colonnes (1 a 14) de cellules a ordonner:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

3 2 1 2 2 3 1 2 3 3 3 1 1 1

3 2 1 3 2 2 3 3 3 3 2 1 3 3

1 1 3 1 1 1 2 3 3 3 2 1 1 1

1 2 2 1 2 3 1 1 3 2 1 3 3 3

2 3 3 2 1 2 2 1 3 2 1 2 1 3

1 2 2 3 1 3 1 3 2 2 1 3 2 2

2 3 1 2 1 2 3 3 2 3 1 3 2 2

1 3 1 2 1 1 3 3 1 2 1 2 1 1

2 2 3 3 2 1 1 1 1 1 1 1 3 2

2 1 2 3 3 1 1 3 1 1 2 2 1 1

2 2 1 1 1 1 1 3 1 3 1 1 3 3

1 1 1 3 1 2 1 1 1 1 3 3 1 2

2 2 1 1 1 1 2 1 2 3 1 1 2 1

3 3 1 2 3 2 2 1 1 1 3 1 3 3

2 3 1 3 2 1 2 3 3 1 1 3 1 3

1 3 1 1 1 1 1 1 1 3 1 2 1 1

2 2 2 3 2 3 1 1 3 2 2 3 3 3

3 2 2 1 3 3 3 3 1 3 1 3 1 2

1 2 1 3 3 1 1 1 2 1 3 2 3 1

Je souhaiterais ordonner par ligne complete sachant que la premiere ligne sera celle qui a le plus de 1 consecutifs, plus en suivant le plus de 2 consecutifs et enfin le plus de 3 consecutifs.

Cela donnerait quelque chose du genre:

1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 1 1 3 2 1 1....

1 3 2 1 1 3 ....

2 1 3 1 1 2.....

2 3 1 1 1 3....

3 1 3 2 1 2....

3 2 1 3 1 1.....

3 2 2 1 1 1.....

3 3 1....

Il faut que la ligne complete soit conserve ainsi de suite.

Potentiellement, je peux avoir un tableau avec 1000 lignes.

Comment puis je faire cela avec Excel/VBA etc?

Merci d'avance!!!!

Jp.

Bonjour à tous,

Et il a été obtenu comment, ce tableau ?

Et il sert a quoi ?

Crdlmt

bonsoir,

une proposition

Sub aargh()
    Dim ctr&(), c&()
    t = Cells(1, 1).CurrentRegion.Value
    ReDim ctr&(1 To UBound(t, 1), 1 To 3)
    For i = 2 To UBound(t, 1)
        ReDim c&(1 To 3)
        For j = 1 To UBound(t, 2) - 1
            For k = 1 To 3
                If t(i, j) = t(i, j + 1) And t(i, j) = k Then
                    c(k) = c(k) + 1:
                    If ctr(i, k) < c(k) Then ctr(i, k) = c(k)
                Else
                    c(k) = 0
                End If
            Next k
        Next j
    Next i
    Cells(1, UBound(t, 2) + 1).Resize(UBound(t, 1), 3) = ctr
    Cells(1, 1).Resize(UBound(t, 1), UBound(t, 2) + 3).Sort _
    key1:=Cells(1, UBound(t, 2) + 1), order1:=xlDescending, _
    key2:=Cells(1, UBound(t, 2) + 2), order2:=xlDescending, _
    key3:=Cells(1, UBound(t, 2) + 3), order3:=xlDescending, Header:=xlYes
    Cells(1, UBound(t, 2) + 1).Resize(UBound(t, 1), 3).Clear
End Sub

Bonjour h2so4,

Merci beaucoup, je ne suis pas programmeur mais je vais essayer.

Novice en excel, comment puis je lancer cette macro sur une feuille, disons "Feuille1" qui commence premiere ligne, premiere colonne?

Cordialement,

Jean-Philippe

bonjour,

voir fichier en annexe, lancer la macro par alt-F8

ps. merci de jeter un oeil aux règles du forum (voir ma signature ou premier message de cette rubrique)

3jmougeot.xlsm (15.17 Ko)

Bonsoir,

La macro ne fonctionne pas dans le fichier que vous m'avez envoyé

Quand je fais Alt+F8, le tableau ne se reordonne pas, meme en selectionnant au prealable les données.

Désolé de mon niveau…

Passez une excellente soirée,

Jean-Philippe

bonsoir,

bizarre, car chez moi elle fonctionne correctement

j'ai ajouté une instruction qui indique que l'exécution est terminée.

4jmougeot.xlsm (15.09 Ko)
Rechercher des sujets similaires à "ordonner groupe ligne"