Option Explicit
Sub ListeSansDoublon()
Dim TMains(), TAl() As Long, TTir(1 To 54, 1 To 1), L As Long, A As Long
TMains = Feuil2.[B4].Resize(13, 13).Value
InitListeAl TAl, 169
For L = 1 To 54
A = TAl(L)
TTir(L, 1) = TMains((A - 1) \ 13 + 1, (A - 1) Mod 13 + 1)
Next L
Feuil1.[B7].Resize(54).Value = TTir
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 ' echange
R = Int(Rnd * P) + 1: X = TAl(R): TAl(R) = TAl(P): TAl(P) = X
Next P
End Sub