Gestion d'erreur : identifier le controle qui est source d'erreur
1 réponse
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 !!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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$636a15ce@news.free.fr...
'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 !!!
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 !!!