Erreur d’exécution 13

Bonjour tout le monde,

Je suis bloqué sur la problématique suivante de la macro

La ligne qui bloque : If Target.Value = "" Or IsDate(Target.Value) = False Then

Si je rentre une date par exemple 31/08/2025 en K2 de la feuille « Formulaire » et que je supprime la dateavec le clavier pour une raison X , il s’affiche :

ERREUR 13

Incompatibilité de type

(Pour info si je corrige la date de la cellule tout va bien)

Mot de passe pour enlever la protection des feuilles : le chiffre 1

Par avance un grand merci.

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.

image

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

merci pour les explications, il est vrai que je n'ai pas pensé à utiliser l'espion de variables, (trop la tête dans le guidon)

je vais faire quelques essais et je reviens vous dire.

En tous cas Merci pour votre aide.

Un grand merci pour ta correction et tes explications tout fonctionne comme je voulais.

Cdt

Je vous en prie, bonne journée.

Rechercher des sujets similaires à "erreur execution"