En l'état du modèle (individuel) :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i%, nn%, n%, nm$
If Not Intersect(Target, Me.Range("B1:B3")) Is Nothing Then
nn = Me.Cells(Rows.Count, 1).End(xlUp).Row
If nn > 11 Then
Me.Range("A11:G" & nn - 1).Delete xlShiftUp
End If
Me.Range("A10").ClearContents
For i = 1 To 3
If Me.Range("B" & i) = "" Then Exit Sub
Next i
If Me.Range("B2") < Date Then
MsgBox "La date est passée !", vbCritical, "Erreur date"
Me.Range("B2").ClearContents: Exit Sub
End If
nm = Me.Range("B1"): n = Me.Range("B3")
If n > 1 Then Me.Range("A11:G" & n + 9).Insert xlShiftDown
Me.Range("A10") = nm
End If
End Sub
Lorsque les 3 cellules B1 à B3 sont saisies, des lignes sont insérées pour correspondre à la saisie en B3. Le nom est porté en A10.
La date est vérifiée pour ne pas être antérieure à la date du jour.
Les modifications sont prises en compte...
Pour alerte non saisie menu, la ligne est colorée en rose par MFC si elle est vide. Si des lignes sont roses, la saisie de menu n'y est pas faite... La ligne de fin (11 dans l'état initial) est marquée pour utilisation dans la macro.
Pour les rubriques où rien n'est à saisir, tu ne saisis rien, ou tu effaces...
Cordialement.