Re,
Une proposition VBA avec l'événementielle Change ci-dessous :
Private Sub Worksheet_Change(ByVal Target As Range) ' au changement dans l'onglet
If Target.Address <> "$D$4" Then Exit Sub 'si le changement a lieu ailleurs que dans D4, sort de la procédure
If Target.Value = "" Then Exit Sub ' si D4 est effacée, sort de la procédure
If Not IsNumeric(Target.Value) Then 'condition : si D4 n'est pas numérique
MsgBox "Valeur non valable, taper un numéro !" 'meesage
Target.Value = "" 'efface D4
End If 'fin de la condition
For I = 1 To Target.Value ' boucle de 1 à la valeur en D4
Cells(I + 3, "E").Value = I 'revnoie I dans la cellule ligne I+4, colonne E
Next I 'prochaine valeur de la boucle
Range(Cells(Target.Value + 4, "E"), Cells(Application.Rows.Count, "E")).ClearContents 'efface les ligne en dessous
End Sub
Ton fichier modifié :