Données/Validation vs Worksheet_Change

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir à toutes et à tous :)

Pour le premier fil que je crée, j'espère obtenir quelques éclaircissements ;)

Il y a peu, j'ai eu le plaisir de dépanner quelqu'un sur ce forum, d'ailleurs MichelXld y a également apporté sa contribution ; voir fil : Ce lien n'existe plus

Une procédure Change a été créée pour demander la confirmation de la saisie dans 2 cellules. Nous avions pour ce faire un fichier exemple. Lorsque le fichier réel a été envoyé pour mise au point, j'ai foncé la tête dans le guidon sans faire attention que sur une des 2 cellules concernées, il y avait déjà une validation des données.

Je vous joins un fichier exemple pour que vous compreniez mieux ce que je dis.

Dans une cellule verrouilée par Données/Validation et testée lors de la procédure Worksheet_Change, le comportement d'excel devient bizarre en cas d'erreur de saisie.

En effet, si la saisie est 'validée', l'événement Change est appelé 1 fois (logique). Par contre, c'est là que je n'y comprend plus rien, si l'utilisateur commet des erreurs en saisissant 2 fois de données erronées (et en cliquant sur 'répéter' à chaque erreur), puis 1 donnée valide, l'événement Change est appelé 5 fois !!! ??? :S

Je sais bien qu'il suffit d'effacer la validation des données et de placer le test dans l'événement Change, mais je ne comprends pas les 5 appels à Change alors que 3 valeurs seulement ont été entrées dans la cellule :silly:

En espérant avoir été clair :)
[file name=ValidationEtChange.zip size=8720]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ValidationEtChange.zip[/file]

Edition : Oups, la question ! Quelqu'une ou quelqu'un a-t-il un explication ou s'agit-il d'un bug d'XL ???


Message édité par: Charly2, à: 17/01/2006 21:09

A+

Message édité par: Charly2, à: 17/01/2006 21:34
 

Pièces jointes

  • ValidationEtChange.zip
    8.5 KB · Affichages: 17

Abel

XLDnaute Accro
Bonjour Charly2, le forum,

Lorsque tu entres une donnée éronnée, la procédure change est appelée 2 fois.
La première quand tu entres la 'mauvaise' valeur. Puis la deuxième quand on précise 'Annuler' sur le message d'avertissement de la liste de validation car la valeur retourne à son état d'origine.

Maintenant, comme la variable 'NbChange' est définie au niveau de la feuille, elle ne se réinitialise pas. D'un essai à l'autre, elle conserve sa valeur.
D'où après deux entrées de 'fausses valeurs' plus une bonne = 5 changements ((2 x 2) + 1).

Mets un espion au niveau de la ligne 'If Target.Address = '$A$4' Then' puis avance pas à pas (F8).


C'est, en tous cas, comme ça que j'interprète le truc.

Abel.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Abel, bonjour à toutes et à tous :)

C'est limpide et ceci explique cela. Je ne l'avais pas compris de cette façon au départ mais hier soir, Didier_mDF m'a donné la même explication que la tienne.

Autrement, pour la variable NbChange, je l'ai déclarée ainsi pour connaître le nombre d'appels à la procédure.

Un très grand merci pour ta réponse :)

A+
 

Discussions similaires

Réponses
3
Affichages
464

Statistiques des forums

Discussions
312 361
Messages
2 087 610
Membres
103 606
dernier inscrit
lolo1970