Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim C&, Plage As Range, LAt As New ListeAléat, T(), L&
If Target(1,1).Value <> "> TIRAGE" Then Exit Sub
C = Target.Column
Set Plage = Cells(8, C + 1).Resize(Cells(60000, C).End(xlUp).Row - 7, 2)
T = Plage.Value
Randomize
LAt.Init UBound(T, 1)
For L = 1 To UBound(T, 1)
If Not IsEmpty(T(L, 2)) Then LAt.Remettre T(L, 1), L
Next L
For L = 1 To UBound(T, 1)
T(L, 1) = LAt.Aléat(L): Next L
Plage.Value = T
End Sub