bonsoir,
Sub Tirage()
t = Timer
Dim Resultat(1 To 8, 1 To 3)
With Sheets("Feuil1")
a = .Range("A1").CurrentRegion.Value 'lire le contenu
aleatoire = Evaluate("=column(offset(a1,,,," & UBound(a) & "))") 'série ascendante 1,2,3,...,n
For i = UBound(a) To 2 Step -1 'boucle avec chaque fois une possibilité en moins
r = WorksheetFunction.RandBetween(2, i) 'random valeur entre 2 et i
nr = aleatoire(r) 'numéro dans a
fl = Filter(Application.Transpose(Application.Index(Resultat, 0, 3)), "|" & a(nr, 3) & "|", 1, vbTextCompare) 'compte le nombre du même club
If UBound(fl) < 1 Then '(avec base 0 !!!) si c'est inférieur à 1, il n'y a pas encore 2 de ce club
ptr = ptr + 1 'pointer aumenter
For j = 1 To 3: Resultat(ptr, j) = IIf(j = 3, "|", "") & a(nr, j) & IIf(j = 3, "|", ""): Next
End If
aleatoire(r) = aleatoire(i) 'swap valeurs
Next
With .Range("N1").Resize(UBound(Resultat), UBound(Resultat, 2)) 'plage pour coller les resultats
.Value = Resultat
.Replace "|", "" 'effacer les "pipes"
End With
End With
MsgBox Format(Timer - t, "0.00")
End Sub