Bonsoir,
Je n'avais pas le temps de voir ça dans la journée mais...
Sub TriAléatoire(Plg As Range)
Dim TbTrié(), chT$, k$, n%, i%, x%
If Plg.Columns.Count > 1 Then
MsgBox "Il n'est prévue de n'appliquer ce tri qu'à une plage composée d'une " _
& "colonne unique !", vbInformation, "Plage à trier non conforme"
Exit Sub
End If
n = Plg.Rows.Count
For i = 1 To n
chT = chT & ChrW(i + 32)
Next i
ReDim TbTrié(1 To n, 0)
Randomize
For i = 1 To n
x = Int(Len(chT) * Rnd + 1)
k = Mid(chT, x, 1): x = AscW(k) - 32
TbTrié(i, 0) = Plg.Cells(x, 1)
chT = Replace(chT, k, "")
Next i
Plg.Value = TbTrié
End Sub
Sub Test()
TriAléatoire Worksheets("Feuil1").Range("B1:B6") 'à adapter
End Sub
Code à placer dans un module standard.
Lancer la procédure Test. La raccorder éventuellement à un bouton. Adapter évidemment la plage envoyée à la procédure de tri...
Cordialement.