Sub Tirages()
Dim Target As Range, nlig&, tablo
Application.ScreenUpdating = False
For Each Target In [B1,E1,H1]
nlig = Int(Val(Target(1, 2)))
With Range(Target(2, 0), Cells(Rows.Count, Target.Column - 1).End(xlUp))
If .Row > Target.Row Then
.Columns(2).ClearContents 'RAZ
If nlig > 0 Then
tablo = .Value 'mémorise
.Formula = "=RAND()"
.Columns(2) = tablo
.Resize(, 2).Sort .Cells, Header:=xlNo 'tri
.Value = tablo 'restitution
tablo = .Columns(2).Resize(nlig) 'mémorise
.Columns(2).ClearContents 'RAZ
.Columns(2).Resize(nlig) = tablo 'restitution
End If
End If
End With
Next
End Sub