Bonjour a.dequidt,
Voici la solution qui me paraît la plus simple :
Private Sub Workbook_Open()
With Sheets("feuil1").[m1]
If Not IsDate(.Value) Then .Value = Date: Exit Sub
Select Case .Value
Case Is = Date
Exit Sub
Case Else
R = MsgBox("La date actuelle du fichier est : " & .Value & vbCrLf & _
"Voulez-vous la remplacer par la date du jour ?", vbYesNo + vbQuestion, "Date fichier")
If R = vbYes Then .Value = Date
End Select
End With
End Sub
Je m'explique :
A l'ouverture du classeur, le programme teste la valeur contenue dans la cellule M1 : si elle est vide, ou contient autre chose qu'une date, alors M1 est mise à jour avec la date du jour.
Si M1 contient la date du jour, on sort du programme sans rien changer.
Si M1 contient une date antérieure à la date du jour, une boîte de dialogue propose une mise-à-jour qu'on est libre d'accepter ou non.
Enfin, il suffit d'entrer la formule [=M1] dans les cellules C12 et D13.
NB : remplaces "feuil1" par le nom de ta feuille.
[m1] est l'équivalent de range("m1") et c'est plus simple à écrire.
Espérant avoir été utile.
Cordialement.