Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DCM As Date 'déclare la variable DCM (Date de la Cellule Modifiée)
Dim DB As Date 'déclare la variable DB (Date de la Boucle)
Dim LI As Integer 'déclare la variable LI (LIgne)
'si le changement a lieu ailleurs qu'en A1, sort de la procédure
'à adapter mettre l'adresse de la cellule où tu vas écrire la date
If Target.Address(0, 0) <> "A1" Then Exit Sub
If Target = "" Then Exit Sub 'si la celluel est effacée, sort de la procédure
If Not IsDate(Target.Value) Then 'condition : si la cellule n'est pas une date ou pas une date valide
MsgBox "Date non valide !" 'message
Target.Select 'revient à la cellule modifiée
Exit Sub 'sort de la procédure
End If 'fin de la condition
DL = Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la denière ligne éditée DL de la colonne B
DCM = DateSerial(Year(Target.Value), Month(Target.Value), Day(Target.Value)) 'définit la date DCM de la cellule modifiée
For I = 1 To DL 'boucle sur toutes les lignes I de la colonne B (de 1 à DL)
'définit la date de DB de la cellule de la boucle
DB = DateSerial(Year(Cells(I, "B").Value), Month(Cells(I, "B").Value), Day(Cells(I, "B").Value))
'si les deux date corresponde, définit la ligne LI et sort de la boucle
If DCM = DB Then LI = I: Exit For
Next I 'prochaine ligne de la boucle
If LI = 0 Then Exit Sub 'si LI est égale à 0, sort de la procédure
Cells(LI, "B").Select 'délectionne la cellule ligne LI colonne B (cette ligne peut être supprimée)
MsgBox "La date se trouve dans la ligne " & LI 'message (cette ligne peut être supprimée)
End Sub