Option Explicit
Function Aléat44Sauf(Optional ByVal Sauf) As Variant()
Dim TRés(), L As Long, C As Long, P As Long, X
With Application.Caller: ReDim TRés(1 To .Rows.Count, 1 To .Columns.Count): End With
Randomize
With New ListeAléat
.Init 44
If Not IsMissing(Sauf) Then For Each X In Sauf: .Supprimer X: Next X
For L = 1 To UBound(TRés, 1): For C = 1 To UBound(TRés, 2)
P = P + 1: TRés(L, C) = .Aléat(P): Next C, L: End With
Aléat44Sauf = TRés
End Function