Option Explicit
Sub Test()
PermuAléatLC ActiveSheet.[B5:M16]
End Sub
Sub PermuAléatLC(ByVal Rng As Range)
Dim TDon(), LMax As Long, CMax As Long, TRés(), LAtL As New ListeAléat, LAtC As New ListeAléat, L As Long, C As Long
TDon = Rng.Value
LMax = UBound(TDon, 1): CMax = UBound(TDon, 2)
ReDim TRés(1 To LMax, 1 To CMax)
Call Randomize: LAtL.Init LMax: LAtC.Init CMax
For L = 1 To LMax: For C = 1 To CMax
TRés(L, C) = TDon(LAtL.Aléat(L), LAtC.Aléat(C))
Next C, L
Rng.Value = TRés
End Sub