Sub TirageCombinaisons()
Dim n As Byte, nc&, Ntirages&, combi() As Byte
Dim i As Byte, j As Byte, k As Byte
Dim lig&, liste(), d As Object, dc&
n = 90
nc = Application.Combin(n, 3) '117480 combinaisons
Ntirages = 12000 'nombre de tirages
'---Création de la liste des combinaisons---
ReDim combi(1 To nc, 1 To 3)
For i = 1 To n - 2
For j = i + 1 To n - 1
For k = j + 1 To n
lig = lig + 1
combi(lig, 1) = i
combi(lig, 2) = j
combi(lig, 3) = k
Next
Next
Next
'---tirages aléatoires---
ReDim liste(1 To Ntirages, 1 To 3)
Set d = CreateObject("Scripting.Dictionary")
Randomize
While d.Count < Ntirages
lig = 1 + Int(nc * Rnd)
If Not d.exists(lig) Then
d(lig) = ""
dc = d.Count
liste(dc, 1) = combi(lig, 1)
liste(dc, 2) = combi(lig, 2)
liste(dc, 3) = combi(lig, 3)
End If
Wend
'---édition---
[D2:F2].Resize(Ntirages) = liste
End Sub