Private Sub Worksheet_Change(ByVal Target As Range)
Dim lig As Long
Dim r As Range 'déclare la variable r (Recherche)
'Dim j As String, m As String, a As String 'déclare les variable j (Jour), m (Mois) et a (Année)
Dim dt As String 'déclare la variable dt (DaTe)
If Not Intersect(Target, Columns("M")) Is Nothing Then
If Target.Count = 1 Then
With Sheets("Base de donnée")
lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lig, "A").Value = Cells(Target.Row, "C").Value
.Cells(lig, "B").Value = Cells(Target.Row, "D").Value
.Cells(lig, "C").Value = Cells(Target.Row, "F").Value
End With
End If
End If
'si le changement a lieu ailleurs que dans la colonne C ou dans une ligne inférieure à 9, sort de la procédure
If Target.Column <> 3 Or Target.Row < 9 Then Exit Sub
'si la cellule est effacée, la date est effacée aussi puis sort de la procédure
If Target.Value = "" Then Target.Offset(0, 2).Value = "": Exit Sub
If Target.Offset(0, 2).Value = "" Then 'condition : 1 si la cellule de la coloone E est vide
With Sheets("Base de donnée").Columns(1) 'prend en compte la colonne A de l'onglet "Base de donnée"
Set r = .Find(Target.Value, , xlValues, xlWhole) 'définit la recherche r (Recherche la valeur éditée)
If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence
dt = r.Offset(0, 2) + 365
' j = Day(r.Offset(0, 2).Value) 'définit le jour j
' m = Month(r.Offset(0, 2).Value) 'définit le mois m
' a = Year(r.Offset(0, 2).Value) 'définit l'année a
' if j=29 and m=2 then
' dt = Format(j - 1, "00") & "/" & Format(m, "00") & "/" & Format(a + 1, "0000")
' Else
' dt = Format(j, "00") & "/" & Format(m, "00") & "/" & Format(a + 1, "0000")
' End If
Target.Offset(0, 2).Value = dt 'place la date dt plus un an en colonne E
End If 'fin de la condition 2
End With 'fin de la prise en compte de l'onglet "Base de donnée"
End If 'fin de la condition 1
End Sub