Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion d'erreur : identifier le controle qui est source d'erreur

1 réponse
Avatar
La Marmotte
'soir le groupe ... j'ai besoin d'aide ... merci pour votre attention ...

Dans un form, j'ai plusieurs controles [numérique] et [date], ce qui
signifie (par exemple) que lorsque je saisis du TEXTE dans un champ de
format DATE, l'évènement OnError de mon form me renvoie le message d'erreur
du type "Erreur de format de données".

J'aimerais personnaliser ma gestion d'erreurs, càd déterminer le contrôle
qui est à l'origine de mon erreur, puis appliquer un message d'erreur
personnalisé pour orienter l'utilisateur :

Donc, si j'ai dans mon form deux contrôles "DateCommande" et "DateLivraison"
(donc de même format de données "Date"), et que l'utilisateur tape un
mauvais format dans "DateLivraison", j'aimerais que l'évènement OnError de
mon form génère directement le message MsgBox "Vous devez saisir une date
valide dans la rubrique ""DateLivraison""." (ce message devant explicitement
nommer le contrôle qui est à l'origine de l'erreur)

Malheureusement jusqu'à présent, je n'arrive qu'à obtenir un message "Vous
devez saisir une date valide" sans que Access soit capable de déterminer (et
en informer l'utilisateur) quel contrôle a eu lieu l'erreur de saisie
(l'erreur peut s'être produite dans n'importe quel champ "Date" (càd
DateCommande ou DateLivraison) sans distinction du contrôle à l'origine de
cette erreur.

Sur l'évènement OnError de mon form, j'ai donc essayé ce genre de solution :

If IsDate(Me.DateCommande) = False Then
MsgBox "Erreur sur contrôle DateCommande"
Else
If IsDate(Me.DateLivraison) = False Then
MsgBox "Erreur sur contrôle DateLivraison"
Else
If ... etc ...
Else ...etc ...
End If
End if
End If

Mais ça marche pas, Access me renvoie toujours le même message "Erreur sur
contrôle DateCommande" (même si l'origine du message ne provient pas du 1er
contrôle répertorié "DateCommande", mais du suivant). En gros, Access bute
sur le 1er message d'erreur dès qu'il rencontre une mauvaise saisie de
données, quel que soit le contrôle à l'origine de l'erreur.

J'espère avoir été assez claire dans l'explication de mon pb, et j'attends
vos suggestions/réponses/solutions avec impatience et reconnaissance !!!

Merci pour votre aide ;-)

La Marmotte

1 réponse

Avatar
Raymond [mvp]
Bonsoir.

as-tu essayé de savoir le nom par :
Screen.ActiveControl.Name ou Screen.PreviousControl.Name ?
je ne connais pas le cheminement alors c'est difficile d'évaluer.
place un msgbox dans ta fonction de gestion d'erreur et affiche les deux
propriétés ci-dessus. tu devrais retrouver le nom du contrôle en erreur.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"La Marmotte" <-/-**> a écrit dans le message de
news:413a045c$0$31369$
'soir le groupe ... j'ai besoin d'aide ... merci pour votre attention ...

Dans un form, j'ai plusieurs controles [numérique] et [date], ce qui
signifie (par exemple) que lorsque je saisis du TEXTE dans un champ de
format DATE, l'évènement OnError de mon form me renvoie le message
d'erreur

du type "Erreur de format de données".

J'aimerais personnaliser ma gestion d'erreurs, càd déterminer le contrôle
qui est à l'origine de mon erreur, puis appliquer un message d'erreur
personnalisé pour orienter l'utilisateur :

Donc, si j'ai dans mon form deux contrôles "DateCommande" et
"DateLivraison"

(donc de même format de données "Date"), et que l'utilisateur tape un
mauvais format dans "DateLivraison", j'aimerais que l'évènement OnError de
mon form génère directement le message MsgBox "Vous devez saisir une date
valide dans la rubrique ""DateLivraison""." (ce message devant
explicitement

nommer le contrôle qui est à l'origine de l'erreur)

Malheureusement jusqu'à présent, je n'arrive qu'à obtenir un message "Vous
devez saisir une date valide" sans que Access soit capable de déterminer
(et

en informer l'utilisateur) quel contrôle a eu lieu l'erreur de saisie
(l'erreur peut s'être produite dans n'importe quel champ "Date" (càd
DateCommande ou DateLivraison) sans distinction du contrôle à l'origine de
cette erreur.

Sur l'évènement OnError de mon form, j'ai donc essayé ce genre de solution
:


If IsDate(Me.DateCommande) = False Then
MsgBox "Erreur sur contrôle DateCommande"
Else
If IsDate(Me.DateLivraison) = False Then
MsgBox "Erreur sur contrôle DateLivraison"
Else
If ... etc ...
Else ...etc ...
End If
End if
End If

Mais ça marche pas, Access me renvoie toujours le même message "Erreur sur
contrôle DateCommande" (même si l'origine du message ne provient pas du
1er

contrôle répertorié "DateCommande", mais du suivant). En gros, Access bute
sur le 1er message d'erreur dès qu'il rencontre une mauvaise saisie de
données, quel que soit le contrôle à l'origine de l'erreur.

J'espère avoir été assez claire dans l'explication de mon pb, et j'attends
vos suggestions/réponses/solutions avec impatience et reconnaissance !!!

Merci pour votre aide ;-)

La Marmotte