Sub Tirage()
Dim TEnt(), L&, TAl&(), TSor(), NMax&, N&
TEnt = [V7].Resize([V1000000].End(xlUp).Row - 6, 2).Value
NMax = UBound(TEnt, 1)
InitListeAl TAl, NMax
ReDim TSor(1 To NMax, 1 To 3)
For L = 1 To NMax
N = TAl(L)
TSor(L, 1) = N
TSor(L, 2) = TEnt(N, 1)
TSor(L, 3) = TEnt(N, 2)
Next L
[B:D].ClearContents
[B7].Resize(NMax, 3).Value = TSor
End Sub
Sub InitListeAl(TAl() As Long, Optional ByVal NMax As Long, Optional ByVal Graine As Double)
Rem. ——— Garnit un tableau à une dimension base 1 de numéros sans doublon ou change aléatoirement l'ordre
' des numéros y étant déjà portés.
' Arguments :
' TAl : Le tableau à traiter.
' NMax: Numéro maxi. Si spécifié, le tableau est redimensionné TAl(1 To NMax), puis garni de numéros de 1 à NMax.
' Graine: Base de départ de la série. Si omis la série sera différente à chaque exécution.
Dim P As Long, R As Long, X As Long
If NMax >= 0 Then
ReDim TAl(1 To NMax): For P = 1 To NMax: TAl(P) = P: Next P
Else: NMax = UBound(TAl): End If
If Graine <= 0 Then Randomize Else Rnd -1: Randomize Graine
For P = NMax To 2 Step -1
R = Int(Rnd * P) + 1: X = TAl(R): TAl(R) = TAl(P): TAl(P) = X
Next P
End Sub