Bonsoir Yvouille, LouReed
Ce qui apparaît avec ton expérience : si je tapes 01/010/2017, Excel ne reconnaît pas une date, le texte se cadre à gauche, mais par contre VBA reconnaît là une date ! Soit que le texte est convertible en date, ce qui est le sens de la fonction IsDate.
Ce que l'on peut vérifier, en complétant ta macro dans ce sens :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("C2")) Is Nothing Then
If Not IsDate(Target) Then
MsgBox "Il y a un problème"
Else
Application.EnableEvents = False
Target.Value = CDate(Target)
Application.EnableEvents = True
End If
End If
End Sub
Et en effet la conversion avec CDate produit une date, reconnue alors par Excel qui la cadre à droite.
On peut déjà en conclure que la reconnaissance des dates diffère quelque peu pour Excel et VBA. On savait déjà d'ailleurs que VBA reconnaît les dates antérieures à 1900, ce qui n'est pas le cas d'Excel...
La manoeuvre échoue si l'on tapes 01.010.2017. Excel ne reconnaît pas une date, VBA non plus et la conversion échoue avec ou sans condition...
VBA reconnaît nativement le / et - comme séparateurs date, Excel également. Le point n'est pas reconnu.
Là c'est à toi de nous dire si cet aspect tient aux paramètres régionaux, et s'il peut être reconnu sous certains paramètres régionaux...
On en a jamais fini avec les dates !
Cordialement.