Bonjour,
l'erreur vient de là :
Private Sub Worksheet_DateChange(ByVal Target As Range)
If Range("E15") <> "" Then Range("E31") = Replace(DateAdd("d", -12, Replace(Range("E15"), ".", "/")), "/", ".") Else Range("E31") = ""
End Sub
il n'y a pas de surveillance événementielle sur le changement de date !
Il faut utiliser les fonctions disponibles, en l'occurrence ici le "Change" comme vous l'avez fait pour le cellule I29, avec un test pour vérifier si le Change se fait en cellule E15 :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo fin
Application.EnableEvents = False
If Not Intersect(Target, Range("I29")) Is Nothing Then
Application.Undo
MsgBox "Vous ne pouvez pas modifier cette cellule !"
ElseIf Not Intersect(Target, Range("E15")) Is Nothing Then
If Range("E15") <> "" Then Range("E31") = DateAdd("d", -12, Range("E15")) Else Range("E31") = ""
End If
fin:
Application.EnableEvents = True
End Sub
J'ai supprimé les REPLACE vi que votre date a le bon format "au départ" contrairement à votre demande...
@ bientôt
LouReeD