bonjour,
25 unique combinaisons de 4 chiffres
Sub tirage_BS()
Set dict = CreateObject("scripting.dictionary") 'cahier de brouillon
ActiveSheet.Range("A1:G1").EntireColumn.ClearContents
For i = 1 To 5 '5 tirages
Randomize
ReDim a(1 To 20, 1 To 1) 'redim array
For j = 1 To UBound(a)
a(j, 1) = Format(Rnd, "0.000000000000" & "|" & Format(j, "00")) 'random valeur (0>1) & valeur
Next
On Error Resume Next
a1 = Application.Sort(a) 'radom sort
On Error GoTo 0
ptr = 1: x = 0
Do
x = x + 1
ReDim q(1 To 4, 1 To 1) 'reset quartet
For j = 1 To 4 'prenez 4 premieres valeurs
q(j, 1) = Format(Split(a1(j, 1), "|")(1), "00") 'seulement 2ieme partie
Next
q1 = Application.Sort(q) 'sortez ces 4 valeurs
s = Join(Application.Transpose(q1), "|") 'combinatez dans un string
b = Not dict.exists(s) 'ce quartet, est-il deja utilisé ?
If b Then 'NON
dict(s) = 1 'ajouter au dictionary
Cells((i - 1) * 6 + 1, ptr).Resize(4).Value = q1 'copier vers feuille
ptr = ptr + 1
End If
If ptr <= 5 Then 'toutes les numeros ne sont pas encore assignées.
ReDim a(1 To UBound(a) + b * 4, 1 To 1) 'si quartet est assignées, 4 numberos de moins a assigner
For j = 1 To UBound(a)
a(j, 1) = Format(Rnd, "0.000000000000" & "|" & Format(Split(a1(j - b * 4, 1), "|")(1)), "00")
Next
a1 = Application.Sort(a)
End If
Loop While ptr <= 5 And x < 10
On Error GoTo 0
Next
Range("G1").Resize(dict.Count).Value = Application.Transpose(dict.keys)
End Sub