Private Sub Worksheet_Change(ByVal Target As Range)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (Première Adresse)
Dim da As Date 'déclare la variable da (Date)
Dim pr As Range 'déclare la variable pl (Plus Récent)
If Target.Address <> "$H$2" Then Exit Sub 'si le changement a lieu ailleurs qu'en H2, sort de la procédure
If Target.Value = "" Or Target.Cells.Count > 1 Then Exit Sub 'si H2 est effacée ou plusieurs cellules sélectionnées, sort de la procédure
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl éditée de la colonne 1 (=A)
Set pl = Range("B1:D" & dl) 'définit la plage pl
Set r = pl.Find(Target.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur exacte de H2 dans la plage pl)
If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
pa = r.Address 'définit l'adresse de la première occurrence trouvée
Do 'exécute
If Cells(r.Row, 1) > da Then da = Cells(r.Row).Value: Set pr = Cells(r.Row, 1) 'si la date en colonne A de l'occurrence trouvée est suprieure à da, da égale cette date
Set r = pl.FindNext(r) 'redéfinit la recherche (occurrence suivante
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe de nouvelle occurrence ailleurs qu'en pa
End If 'fin de la condition
pr.Select 'sélectionne la cellule pr
End Sub