Bonsoir spYre,
Rackham : Lorsque l'on passe d'un enregistrement au suivant en utilisant la touche de tabulation, l'événement "avant actualisation de l'enregistrement" est activé, même si aucun champ n'a été modifié. Ce que je ne souhaite pas.
spYre : Tu veux dire "après actualisation de l'enregistrement" ? Que ce soit l'événement "avant" ou "après", je ne reproduis pas : l'événement ne se déclenche qui si l'enregistrement est modifié.
Tu ne l'as pas vu, parce qu'il y a un bogue dans le debogueur. Il ne s'arrête pas toujours sur les points d'arrêt.
Refait le test en incorporant une MsgBox dans la macro.
Rackham : Même remarque si l'on utilise la flèche "enregistrement suivant" de la barre de défilement. Mais, dans ce cas l'événement est activé de façon aléatoire.
spYre : Même chose : j'ai testé un peu dans tous les sens, sans reproduire ce comportement aléatoire.
Voici, comment y parvenir :
Ouvre le formulaire.
Change la valeur dans le champ "CA mensuel" en laissant le focus sur celui-ci.
Clique sur le bouton "enregistrement suivant". (tu recevras la boîte de dialogue, puisque l'enregistrement a été changé)
Patiente quelques secondes. (tu recevras la 2ème boîte de dialogue, celle-ci n'était pas prévue)
Clique de nouveau sur le bouton "enregistrement suivant". (tu recevras une nouvelle boîte de dialogue non sollicitée, et peut-être même une 2ème après quelques secondes)
Clique sur le bouton "enregistrement précédent", maintenant. (tu recevras etc...)
Ferme le formulaire. (tu recevras etc...)
Si l'utilisateur saisi une 1er valeur, passe au champ suivant, puis se ravise et corrige la valeur, l'événement sera exécuté 2 fois et plus peut-être suivant sa dextérité du jour.
Si l'utilisateur saisi une 1er valeur, passe au champ suivant, puis se ravise et corrige la valeur, l'événement sera exécuté 2 fois et plus peut-être suivant sa dextérité du jour.
Cette remarque est tout à fait pertinente.
Je souhaitais, juste, attirer l'attention sur le fait qu'en interceptant un événement au niveau d'un champ, il fallait ternir compte de la fréquence des mises à jour que cela allait entraîner.
Ceci étant dit, mon besoin n'est, évidement, pas d'ajouter la valeur d'un champ à la valeur d'un autre champ.
Je veux simplement illustrer par un exemple interpellant la double activation de l'événement. Si j'ajoute 10.00 à 0.00, je doit obtenir 10.00 et non 20.00.
Rackham : Dans ma solution, l'événement est activé seulement et seulement si un des champs a été modifié et que :
1-je demande explicitement la mise à jour (bouton enregistrer de la barre de défilement)
ou
2-j'utilise la tabulation.
spYre : À tout hasard : l'événement "après actualisation de l'enregistrement" fonctionne de la même manière et sans bogue.
Mais si l'idée est de pouvoir bloquer l'enregistrement en cas de mauvaise saisie, il ne conviendra évidemment pas...
Je désire exécuter ma macro lorsque tous les champs (1 ou plusieurs) ont été modifiés et pas à chaque modification de chacun des champs. C'est pourquoi l'événement "avant l'opération d'enregistrement" me semble le plus approprié.
Comme j'y ai détecté une anomalie, je la communique à celles et à ceux qui pourraient en avoir besoin.