bonjour,
avec VBA, je peux aller jusqu'à 8 tirages (même plus)
Const iNombre = 16
Sub aleatoire()
Dim dict, a, nmb, r1, r2, r3, i1, i2, s1, s, aRes, iL, iC
Set dict = CreateObject("scripting.dictionary")
ReDim aRes(1 To iNombre \ 2, 1 To 8) 'matrice avec
For irounds = 1 To UBound(aRes, 2)
iL = 1: iC = irounds
s = ""
nmb = iNombre
a = [column(A1:Z1)]
Do
ptr = ptr + 1
If nmb >= 2 Then
r1 = WorksheetFunction.RandBetween(1, nmb)
Do
r2 = WorksheetFunction.RandBetween(1, nmb)
Loop Until r2 <> r1
If r1 > r2 Then r3 = r1: r1 = r2: r2 = r3
i1 = a(r1): i2 = a(r2)
If InStr(1, s, "|" & i1 & "|") + InStr(1, s, "|" & i2 & "|") = 0 Then
s1 = IIf(i1 < i2, i1 & "-" & i2, i2 & "-" & i1)
i = dict(s1)
If i <= 1 Then
s = s & "-" & s1 & "-"
a(r1) = a(nmb - 1)
a(r2) = a(nmb)
nmb = nmb - 2
dict(s1) = dict(s1) + 1
aRes(iL, iC) = "'" & s1
iL = iL + 1
End If
End If
End If
DoEvents
Loop While nmb > 0 And ptr < 1000
Next
ActiveSheet.Range("A1:K1").EntireColumn.ClearContents
Range("A1").Resize(UBound(aRes), UBound(aRes, 2)).Value = aRes
Range("A10") = ptr
With Cells(1, 10).Resize(dict.Count)
.Value = Application.Transpose(dict.keys)
.Offset(, 1).Value = Application.Transpose(dict.items)
End With
End Sub