Option Explicit
Sub TiragePatricktoulon()
Dim TDon, TDonprime, lig&, C&, X&, temp, Plage As Range 'déclaration des variable necessaires
Set Plage = Feuil1.[A2:D6] 'on determine la plage de cellule du tableau à mélanger
TDon = Plage.Value 'on le tranforme en variable tableau
Application.Speech.Speak "on va boucler sur les colonnes :1 ::!à :" & UBound(TDon, 2) 'commentaire vocal
Application.Speech.Speak ":puis dans une boucle imbriquée on bouclera sur les lignes :!: 1" & ":!:à:!:" & UBound(TDon) 'commentaire vocal
For C = 1 To UBound(TDon, 2) 'on boucle sur toute les colonnes
Application.Speech.Speak (IIf(C = 1, "", "ensuite") & ":!:tour de boucle colonne ::!" & C) 'commentaire vocal
For lig = 1 To UBound(TDon) 'on boucle sur toute les lignes
X = 1 + (Rnd * (UBound(TDon) - 1)) 'on choisi au hasard un index de ligne dans la colonne index C de la boucle
Application.Speech.Speak "tour de boucle ::ligne :numero ::!" & lig & ":dans la colonne:!:" & C 'commentaire vocal
Application.Speech.Speak "on choisi au hasard une autre :ligne : ce sera la ligne :!:" & X & ":!: toujours dans la colonne:!:" & C 'commentaire vocal
If lig = X Then Application.Speech.Speak ("haha ha :ici le hasard a voulu que ça soit :la même :ligne :c'est marrant ?non?")
Application.Speech.Speak "on va donc intervertir tableau :ligne::!:" & lig & ":colonne::!:" & C & "::avec tableau ligne::!:" & X & ": colonne::!:" & C 'commentaire vocal
'on a donc element à dispo <<TDon(lig,c) et TDon(x,c)>>
' et bien les intervertis
temp = TDon(lig, C): TDon(lig, C) = TDon(X, C): TDon(X, C) = temp
Next 'on continue la boucle sur les lignes
Next 'on continue la boucle sur les colonnes
'on injecte la variable tableau(Tdon) la ou on veut
Feuil1.[G2].Resize(UBound(TDon, 1), UBound(TDon, 2)).Value = TDon
Application.Speech.Speak "voila c'est fini :!: je suis fatiqué j'ai beaucoup parlé et :jai soif: je vais servir une bièrre et je reviens" 'commentaire vocal
End Sub