Bonjour à tous,
Le code présenté semble être écrit pour des données ayant une ligne de titre. Tel que votre code est écrit, il mélange aussi la cellule de titre en A1.
Personnellement, j'utiliserai plutôt le code commenté suivant plus rapide et qui permet d'exclure les lignes des titres (le cas échéant) :
Sub Melanger()
Dim ndeb&, der&, t, i&, n&, aux
ndeb = 2 ' --> n° ligne à partir de laquelle mélanger - permet de sauter le(s) titre(s)
der = Cells(Rows.Count, "a").End(xlUp).Row ' n° de la dernière ligne de la colonne A
t = Range(Cells(ndeb, "a"), Cells(der, "a")) ' lecture des données dans un array (plus rapide)
Randomize ' initialisation de la fonction randomize
For i = 1 To UBound(t) ' depuis le 1er élément de t jusqu'au dernier
n = 1 + Int(Rnd * UBound(t)) ' n = entier au hasard parmi les indices de t
aux = t(i, 1): t(i, 1) = t(n, 1): t(n, 1) = aux ' échange des éléments i et n
Next i
Range(Cells(ndeb, "a"), Cells(der, "a")) = t ' transfert en retour de t sur la feuille
End Sub