Bonjour,
Vous n'avez pas besoin de vérifier Target.Value = "". Si la cellule est vide, l'autre test IsDate(Target.Value) = False renvoie VRAI (ie. entrée non valide, car entrée vide).
Pour l'explication plus poussée : VBA ne peut pas évaluer Target.Value directement car si vous faites attention, votre cellule modifiée, càd la "target", est une cellule jointe. Et donc elle n'a pas de .Value directement, elle contient en réalité une LISTE DE VALEURS. On peut le voir via l'espion de variables, dont je vous joins ci-après un screenshot.
Le code le plus adapté serait donc plutot de vérifier : Target(1,1).Value. La 1e cellule du tableau (puisque les cellules sont groupées, elles prennent toutes la meme valeur mais de manière générale il est préférable de se référer à la première. C'est ce que fait la fonction IsDate() implicitement, c'est pourquoi, surprenamment, elle ne renvoie pas d'erreur.
Correction à effectuer :
If Not IsDate(Target(1,1).Value) Then ' version la plus "correcte", suffisante
ou bien
If Target(1,1).Value = "" Or IsDate(Target(1,1).Value) = False Then ' version initiale corrigée