Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim nmax&, n#, tablo, i&, a&
nmax = 35 'modifiable mais il est conseillé de ne pas dépasser 100000...
n = Target.CountLarge
If Target.Columns.Count > 1 Or nmax > Rows.Count - Target.Row + 1 Or n > nmax Or n = 1 Then Exit Sub
Application.ScreenUpdating = False
If n < nmax Then Target(2).Resize(nmax - n).Insert xlDown 'insère des cellules
Target(1) = 1: Target.DataSeries 'numérotation
tablo = Target 'matrice, plus rapide
For i = 1 To nmax - n
Do
a = Application.RandBetween(1, nmax) 'numéro de ligne aléatoire
Loop While tablo(a, 1) = ""
tablo(a, 1) = ""
Next
Target = tablo 'restitution
Target.Sort Target, xlAscending, Header:=xlNo 'tri croissant pour accélérer
'Target.Sort Target, xlDescending, Header:=xlNo 'tri décroissant pour accélérer
If n < nmax Then Target.Resize(nmax - n).Offset(n).Delete xlUp 'supprime les cellules vides
End Sub