Sub MELANGE()
Dim dest, o, d, i As Long, j As Long, s
Me.Activate
o = InputBox("Zone d'origine (première cellule:dernière cellule) :", , Selection.Address)
If o = "" Then Exit Sub
d = InputBox("Zone de destination (adresse de la première cellule) :")
If d = "" Then Exit Sub
Set dest = Me.Range(Me.Range(d).Cells(1, 1), Me.Range(d).Cells(1, 1).Offset(Me.Range(o).Rows.Count - 1, Me.Range(o).Columns.Count - 1))
Application.ScreenUpdating = False
dest.Value = Me.Range(o).Value
Randomize
For i = 2 To dest.Cells.Count
j = i + Int((dest.Cells.Count - i) * Rnd())
s = dest.Cells(j)
dest.Cells(j) = dest.Cells(i - 1)
dest.Cells(i - 1) = s
Next i
Application.ScreenUpdating = True
End Sub