Sub Distribue()
DL = [K10000].End(xlUp).Row
Range("B3:G" & DL).ClearContents
N = Application.CountIf([K3:P3], "*")
T = Range("K3:P" & DL)
ReDim Sortie(1 To UBound(T), 1 To N)
For i = 1 To UBound(T)
Alea = RndList(N)
For j = 1 To N
Sortie(i, j) = T(i, Alea(j, 1))
Next j
Next i
[B3].Resize(UBound(Sortie, 1), UBound(Sortie, 2)) = Sortie
End Sub
Function RndList(N)
ReDim T(1 To N, 1 To 2): Randomize
For i = 1 To N: T(i, 1) = i: T(i, 2) = Rnd: Next i
For i = 1 To N
For j = i To N
If T(i, 2) > T(j, 2) Then
Buffer = T(i, 1): T(i, 1) = T(j, 1): T(j, 1) = Buffer
Buffer = T(i, 2): T(i, 2) = T(j, 2): T(j, 2) = Buffer
End If
Next j
Next i
RndList = T
End Function