Sub test()
'Application.ScreenUpdating = False
Cells.ClearContents
Dim tbl(1 To 40, 1 To 50), Lig&, Col&, I&, X, c1, c2, l1, l2, tim#
Lig = 1: Col = 1
tim = Timer
For I = 1 To (UBound(tbl) * UBound(tbl, 2))
tbl(Lig, Col) = I
Col = Col + 1
If I Mod UBound(tbl, 2) = 0 Then Col = 1: Lig = Lig + 1
Next
For I = 1 To (UBound(tbl) * UBound(tbl, 2))
l1 = 1 + Int(Rnd * UBound(tbl)): c1 = 1 + Int(Rnd * UBound(tbl, 2))
l2 = 1 + Int(Rnd * UBound(tbl)): c2 = 1 + Int(Rnd * UBound(tbl, 2))
X = tbl(l1, c1): tbl(l1, c1) = tbl(l2, c2): tbl(l2, c2) = X
Next
'Question:
'ci dessus je boucle autant de tour que de case dans le tableau
'j'utilise
'L1 = 1 + Int(Rnd * UBound(tbl)) 'pour un idex ligne au hasard
'c1 = 1 + Int(Rnd * UBound(tbl, 2))'pour un index colonne au hasard
'pareil pour L2 et C2
'donc!!!
' si jamais le rnd*ubound(tbl) pour les lignes ou ubound(tbl,2)pour les colonnes me sort le max
'donc avec le +1 ,ca devrait déclecndher une erreur
'ce qui est drole c'est que ca n'arrive jamais
' j'ai testé 500 fois
Feuil1.Cells(1, 1).Resize(UBound(tbl), UBound(tbl, 2)) = tbl
MsgBox Format(Timer - tim, "#0.00000 sec")
End Sub