Option Explicit
Sub test()
Dim dico As Object, tabl, tabl2, x&, a&, elem
Randomize
Set dico = CreateObject("scripting.dictionary")
With Sheets("Tirage_sort")
tabl = .Range("A1", .Cells(Rows.Count, 1).End(xlUp)).Value
ReDim tabl2(1 To UBound(tabl))
Do While dico.Count < UBound(tabl) - 1
x = Round(1 + (Rnd * (UBound(tabl) - 1)))
If x = .[e4].Value Then x = x + 1
dico(tabl(x, 1)) = ""
Loop
For Each elem In dico
a = a + 1
If a = .[e4].Value Then tabl2(a) = .[e4].Value: a = a + 1 'si tu veux la valeur de E4 dans l'index E4
'ou
'If a = .[e4].Value Then a = a + 1 'si tu veux laisser vide
tabl2(a) = elem
Next
.Cells(1, 2).Resize(UBound(tabl2)) = Application.Transpose(tabl2)
End With
End Sub