Bonsoir,
un peu de temps devant moi (en fait maintenant c'est derrière ! )
Je vous propose ce code, un peu alambiqué, mais fonctionnel en partant du principe suivant :
Les 3 sont multiples de trois, si les 2 et les 1 sont "impair" alors le plus petit de la moitié est en premier et le plus grand après
L'ordre de symétrie est 3213123 :
Sub LRD()
Dim Wf As WorksheetFunction, Tablo
Dim Tab1, Tab2, Tab3, Nb3, Nb21, Nb22, Nb11, Nb12, Temp
Set Wf = Application.WorksheetFunction
Tablo = Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
For i = 1 To UBound(Tablo)
Select Case Tablo(i, 1)
Case 1
Tab1 = Tab1 + 1
Case 2
Tab2 = Tab2 + 1
Case 3
Tab3 = Tab3 + 1
End Select
Next i
Nb3 = Tab3 / 3
Nb21 = Int(Tab2 / 2)
Nb22 = Nb21 + Tab2 Mod 2
Nb11 = Tab1 / 2
Nb12 = Nb11 + Tab1 Mod 2
Temp = Wf.Rept(3, Nb3) & _
Wf.Rept(2, Nb21) & _
Wf.Rept(1, Nb11) & _
Wf.Rept(3, Nb3) & _
Wf.Rept(1, Nb12) & _
Wf.Rept(2, Nb22) & _
Wf.Rept(3, Nb3)
For i = 1 To Len(Temp)
Cells(i, 5).Value = Mid(Temp, i, 1)
Next i
End Sub
Pour créer la suite finale j'utilise la fonction native d'Excel "Rept" qui répète un nombre de fois indiqué la valeur désignée : Rept(3,nb3) = le 3 sera répété nb3 fois.
@ bientôt
LouReeD