A voir également:
- Msgbox sous Visual Basic
- Visual basic - Télécharger - Langages
- Visual basic editor - Télécharger - Langages
- Visual petanque - Télécharger - Sport
- Microsoft 365 basic - Accueil - Microsoft Office
- Visual c++ 2019 - Guide
11 réponses
alors personne n'a d'idée pour remplacer une boite de dialogue indiquant uen erreur par une plus explicite cree par la fonction msgbox en VBA?
et peut on supprimer les boites de dialogue par defaut sous access. Je m'explique lors d'une certaine erreur de saisie, une boite de dialogue s'affiche mais elle ne donne pas beaucoup de détail sur l'erreur, j'en ai donc crées une en VBA plus explicite, elle se lance bien quand il faut mais le problême est qu'apres l'avoir validée j'ai encore celle qui etait par defaut sous access qui s'affiche. Sa commence a faire beaucoup de boite de dialogue pour une seule erreur.
Merci pour votre aide!
Merci pour votre aide!
Salut !!
La facon c de faire une gestion d'error.
exemple ......
Private Sub cmdFirst_Click()
On Error GoTo Err_cmdFirst_Click
'TON CODE ICI
Err_cmdFirst_Click:
'SI UNE ERREUR SE PRODUIT, CA VIENT ICI.
MsgBox Err.description
'TU PEUT FAIRE AUSSI UNE GESTION SELON l'ERREUR RECU Avec la variable error --->
if err.number ='un no d'erruer' then
'ton code quand il y a cette erreur
end if
End Sub
J'espere avoir pu t'aider !!
Pascal_22
La facon c de faire une gestion d'error.
exemple ......
Private Sub cmdFirst_Click()
On Error GoTo Err_cmdFirst_Click
'TON CODE ICI
Err_cmdFirst_Click:
'SI UNE ERREUR SE PRODUIT, CA VIENT ICI.
MsgBox Err.description
'TU PEUT FAIRE AUSSI UNE GESTION SELON l'ERREUR RECU Avec la variable error --->
if err.number ='un no d'erruer' then
'ton code quand il y a cette erreur
end if
End Sub
J'espere avoir pu t'aider !!
Pascal_22
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salut Pascal_22,
Donc si je comprend bien tu declare une fonction Error GoTo Err_cmdFirst_Click qui renvoie a une fonction affichant une msgbox lorsuqe la condition est validée? Le code sera donc une boucle If verifiant si il y a une erreur ou non?
mais est ce qu'en faisant ca la boite de dialogue qui etait affiché par access lors de l'erreur va disparaitre et etre remplacée par la mienne?
Merci pour ton aide !
Donc si je comprend bien tu declare une fonction Error GoTo Err_cmdFirst_Click qui renvoie a une fonction affichant une msgbox lorsuqe la condition est validée? Le code sera donc une boucle If verifiant si il y a une erreur ou non?
mais est ce qu'en faisant ca la boite de dialogue qui etait affiché par access lors de l'erreur va disparaitre et etre remplacée par la mienne?
Merci pour ton aide !
Salut Rodrigue62 !
Ben oui et non, je t'explique. C'est pas vraiment une fonction. Tu place au début de ta sub ou fonction "on error goto NomDeLaGestionD'Erreur(le nom peut etre n'importe quoi)
apres tu mets ton code. Si une erreur se produit dans ton code dans cette sub ou fonction, ca crée une erreur, donc vu que tu as mis au debut de ta fonction "on error goto NomQuetuVeux" ca va recherche dans cette sub le nom que tu as mis, puis ca va exécuter le code que tu y as mis sous ce nom là, en général c'Est utiliser lors de la gestion d'error, c'Est a dire, que les message par default ne son pas tres explicite, donc on peut se les créé nous-meme, pour que les message d'erreur soient plus claire.
Si c'est ca que tu veux faire, tu dois créé l'erreur que tu veux changer, tu prends en note le no d'erreur (quand un message apparait tu a en général run-tuime error 2222(un numero). Donc tu retiens se numéros et dans ta gestion d'erreur tu marque :
if err.number=2222 then
'ton code pour géré cette erreur la
elseif err.number=8234 then
'ton code pour géré cette erreur la
elseif err.number=1232 then
'ton code pour géré cette erreur la
end if
Pour savoir quel erreur correspond a quelle numéro, il faut que tu déclanche cette erreur en mettant des erreur dans ton code, tout deépendament ce que tu veux faire, puis la tu prends le numéro de l'erreur puis tu la gere comme tu veux.
regarde l'example.
private sub OuvrirRapport()
on error goto VerificationErreur
Dim DocName As String
DocName = "RapportA"
DoCmd.OpenReport DocName, A_PREVIEW
VerificationErreur:'si une erreur se produit dans le code, ca vient ici
if err.number=2345 then
msgbox "Impossible de trouver le rapport"
elseif err.number=4567 then
msgbox "impossible d'ouvrir le rapport"
end if
Tu peux faire n'importe quoi, là j'ai mis des messageboxes mais tu peux faire n'importe quoi.
Pour répondre a ta question, quand tu fais de la gestion d'erreur, ca remplace le message par défaut.
Jespere avoir pu t'aider, n'hésite pas a me le dire si j'ai pas été assez clair ou si ta d'autre question !!!.
a+
Pascal_22
end sub
Ben oui et non, je t'explique. C'est pas vraiment une fonction. Tu place au début de ta sub ou fonction "on error goto NomDeLaGestionD'Erreur(le nom peut etre n'importe quoi)
apres tu mets ton code. Si une erreur se produit dans ton code dans cette sub ou fonction, ca crée une erreur, donc vu que tu as mis au debut de ta fonction "on error goto NomQuetuVeux" ca va recherche dans cette sub le nom que tu as mis, puis ca va exécuter le code que tu y as mis sous ce nom là, en général c'Est utiliser lors de la gestion d'error, c'Est a dire, que les message par default ne son pas tres explicite, donc on peut se les créé nous-meme, pour que les message d'erreur soient plus claire.
Si c'est ca que tu veux faire, tu dois créé l'erreur que tu veux changer, tu prends en note le no d'erreur (quand un message apparait tu a en général run-tuime error 2222(un numero). Donc tu retiens se numéros et dans ta gestion d'erreur tu marque :
if err.number=2222 then
'ton code pour géré cette erreur la
elseif err.number=8234 then
'ton code pour géré cette erreur la
elseif err.number=1232 then
'ton code pour géré cette erreur la
end if
Pour savoir quel erreur correspond a quelle numéro, il faut que tu déclanche cette erreur en mettant des erreur dans ton code, tout deépendament ce que tu veux faire, puis la tu prends le numéro de l'erreur puis tu la gere comme tu veux.
regarde l'example.
private sub OuvrirRapport()
on error goto VerificationErreur
Dim DocName As String
DocName = "RapportA"
DoCmd.OpenReport DocName, A_PREVIEW
VerificationErreur:'si une erreur se produit dans le code, ca vient ici
if err.number=2345 then
msgbox "Impossible de trouver le rapport"
elseif err.number=4567 then
msgbox "impossible d'ouvrir le rapport"
end if
Tu peux faire n'importe quoi, là j'ai mis des messageboxes mais tu peux faire n'importe quoi.
Pour répondre a ta question, quand tu fais de la gestion d'erreur, ca remplace le message par défaut.
Jespere avoir pu t'aider, n'hésite pas a me le dire si j'ai pas été assez clair ou si ta d'autre question !!!.
a+
Pascal_22
end sub
Salut Pascal_22,
Ben en fait la c'est pas vraiment une erreur mais un fichier d'information, donc j'ai pas de numero d'erreur. En fait c'est parceque j'ai une liste deroulante et j'ai coché la propriété:"se limiter a la liste". Donc quand on saisi a la main et que le nom saisi n'appartient pas a la liste ca met un message d'info comme quoi le texte entré n'appartient pas a la liste, et c'est ce message que je veux remplacer.
merci pour ton aide.
Ben en fait la c'est pas vraiment une erreur mais un fichier d'information, donc j'ai pas de numero d'erreur. En fait c'est parceque j'ai une liste deroulante et j'ai coché la propriété:"se limiter a la liste". Donc quand on saisi a la main et que le nom saisi n'appartient pas a la liste ca met un message d'info comme quoi le texte entré n'appartient pas a la liste, et c'est ce message que je veux remplacer.
merci pour ton aide.
Salut Rodrigue62,
C pas très clair, je ne comprend pas tres bien, ce que je comprends c'est que tu as une liste déroulante. Et que tu écris dans cette même liste déroulante pour rechercher un nom identique a ce que tu as entrez, par la suite tu appui sur ENTER pour faire la recherche. !
EsT-ce cela ??
Pascal_22
C pas très clair, je ne comprend pas tres bien, ce que je comprends c'est que tu as une liste déroulante. Et que tu écris dans cette même liste déroulante pour rechercher un nom identique a ce que tu as entrez, par la suite tu appui sur ENTER pour faire la recherche. !
EsT-ce cela ??
Pascal_22
oui en fait on peux soit choisir directement dans la liste, soit saisir au clavier, mais si on saisie au clavier, apres que l'on change de champ, si la saisie ne correspond a aucun element de la liste, on a un message d'information indiquant que l'on en peux pas entrer ce nom car il n'appartient pas a la liste. En gros c'est un moyen de forcer le champ pour qu'il ne puisse prendre que certaines valeurs definies dans une autre table en fonction d'une requete.
Salut Rodrigue62,
Ok j'ai compris, tu vas voir c'est assez facile. tu programme en
vb 6 ou vba ??? pour que je puisse t'envoyer la solution dans le bon language.
Pascal_22
Ok j'ai compris, tu vas voir c'est assez facile. tu programme en
vb 6 ou vba ??? pour que je puisse t'envoyer la solution dans le bon language.
Pascal_22
Je programme en VBA directement sous Access.Ainsi j'avais mis le programme sous une procedure evenementielle repondant a l'erreur.
Salut Rodrigue62,
Ce que tu as a faire, Tu va coder dans "One lost focus" (evenement) de la combobox (liste déroulante). "One lost focus" veux dire quand tu change de controle(quand tu soirt de la liste déroulante). Tu vas faire une boucle dans la combo box pour vérifier si ce que l'usager a écris correspond a un item de la liste de la combobox.
Si l'item correspond a un item de la liste déroulante, tu exécute ton code, et SINON tu envoi un message a l'usager disant que l'item entrer ne corespond pas !!
Si tas besoin d'autre info, n'hésite pas !!!!
Pascal_22
Ce que tu as a faire, Tu va coder dans "One lost focus" (evenement) de la combobox (liste déroulante). "One lost focus" veux dire quand tu change de controle(quand tu soirt de la liste déroulante). Tu vas faire une boucle dans la combo box pour vérifier si ce que l'usager a écris correspond a un item de la liste de la combobox.
Si l'item correspond a un item de la liste déroulante, tu exécute ton code, et SINON tu envoi un message a l'usager disant que l'item entrer ne corespond pas !!
Si tas besoin d'autre info, n'hésite pas !!!!
Pascal_22