J'ai cr=E9er un bouton pour supprimer un enregistrement dans un
formulaire et je voudrais apr=E8s la suppression de cet enregistrement
que la section D=E9tail soit invisible. J'ai donc fait ceci
Private Sub Commande124_Click()
On Error GoTo Err_Commande124_Click
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
Gloops
Bonjour belle Isa,
Ah oui, mais cette erreur, elle s'est exécutée sur quelle instruction ?
En voilà une grave question, à laquelle la réponse apporterait un éclairage à ton problème.
D'autant qu'a priori je ne devine pas, voilà qui me rappelle le conseil qui m'a été prodigué il y a quelques jours de préférer DoCmd.Ru nCommand suivi d'une constante avec un nom évocateur, plutôt que DoMenuItem.
Alors j'en reviens à mon histoire de procédure d'erreur.
J'ai l'habitude de mettre quelque chose qui ressemble à ça :
Err: MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _ vbCrLf + Err.Description,,"nom du module.Nom de la procédure" If ExisteFormulaire("frmTest") Then Stop Resume End If
Pour exploiter ça, bien entendu, il faut créer une procédure ExisteFormulaire. Il y a deux moyens pour ça, soit on parcourt tous les formulaires ouverts dans une boucle et on compare leurs noms à l'argument, soit on utilise Application.SysCmd acSysCmdGetObjectState (d'ailleurs, je trouve que l'aide de ceci était plus facile à trouver avec les versions précédentes d'Access).
Le résultat est qu'une fois que le message a été affiché, on test e l'existence du formulaire frmTest. Par défaut, il n'est pas ouvert, don c c'est terminé, l'utilisateur sait qu'il y a un problème dans tel modu le, telle procédure, il peut faire remonter l'information. J'ai en réserv e un formulaire d'affichage de message dans une zone de texte, avec un bouton Copie qui l'envoie dans le presse-papiers. Bien plus facile à transférer dans une messagerie, on risque moins de se retrouver avec de s copies d'écran au format bmp 24 bits plein écran, pour juste avoir le message d'erreur.
Une fois que l'information est remontée au développeur, il ouvre le formulaire frmTest, lequel contient juste un bouton de fermeture, exécute la procédure dans des conditions aussi proches que possible d e celles décrites, et lorsque l'erreur s'exécute, après affichage du message, le code s'arrête sur Stop. En pressant deux fois sur F8, on se retrouve sur l'instruction qui a généré l'erreur, ce qui en géné ral permet d'y voir plus clair.
Tu remarqueras que j'ai utilisé une syntaxe qui passe lors d'une migration d'Access 95 à Access 97, laquelle ne gère pas les conversio ns automatiques des Variant, et donc refuse les concaténations par "&".
Par ailleurs j'ai simplifié en n'introduisant pas de traduction du mess age. __________________________________________________ Isabelle ex Isa :-) a écrit, le 21/11/2007 14:41 :
Bonjour
qui peut m'expliquer
J'ai créer un bouton pour supprimer un enregistrement dans un formulaire et je voudrais après la suppression de cet enregistrement que la section Détail soit invisible. J'ai donc fait ceci
Private Sub Commande124_Click() On Error GoTo Err_Commande124_Click
Mais j'ai un message d'Access "Pas d'enregistrement courant"
Késako ? Que manque -t-il dans mon code ?
Que veut dire : acEditMenu, 8, ? et acEditMenu, 6, ?
Merci d'avance
Bonjour belle Isa,
Ah oui, mais cette erreur, elle s'est exécutée sur quelle instruction ?
En voilà une grave question, à laquelle la réponse apporterait un
éclairage à ton problème.
D'autant qu'a priori je ne devine pas, voilà qui me rappelle le conseil
qui m'a été prodigué il y a quelques jours de préférer DoCmd.Ru nCommand
suivi d'une constante avec un nom évocateur, plutôt que DoMenuItem.
Alors j'en reviens à mon histoire de procédure d'erreur.
J'ai l'habitude de mettre quelque chose qui ressemble à ça :
Err:
MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _
vbCrLf + Err.Description,,"nom du module.Nom de la procédure"
If ExisteFormulaire("frmTest") Then
Stop
Resume
End If
Pour exploiter ça, bien entendu, il faut créer une procédure
ExisteFormulaire. Il y a deux moyens pour ça, soit on parcourt tous les
formulaires ouverts dans une boucle et on compare leurs noms à
l'argument, soit on utilise Application.SysCmd acSysCmdGetObjectState
(d'ailleurs, je trouve que l'aide de ceci était plus facile à trouver
avec les versions précédentes d'Access).
Le résultat est qu'une fois que le message a été affiché, on test e
l'existence du formulaire frmTest. Par défaut, il n'est pas ouvert, don c
c'est terminé, l'utilisateur sait qu'il y a un problème dans tel modu le,
telle procédure, il peut faire remonter l'information. J'ai en réserv e
un formulaire d'affichage de message dans une zone de texte, avec un
bouton Copie qui l'envoie dans le presse-papiers. Bien plus facile à
transférer dans une messagerie, on risque moins de se retrouver avec de s
copies d'écran au format bmp 24 bits plein écran, pour juste avoir le
message d'erreur.
Une fois que l'information est remontée au développeur, il ouvre le
formulaire frmTest, lequel contient juste un bouton de fermeture,
exécute la procédure dans des conditions aussi proches que possible d e
celles décrites, et lorsque l'erreur s'exécute, après affichage du
message, le code s'arrête sur Stop. En pressant deux fois sur F8, on se
retrouve sur l'instruction qui a généré l'erreur, ce qui en géné ral
permet d'y voir plus clair.
Tu remarqueras que j'ai utilisé une syntaxe qui passe lors d'une
migration d'Access 95 à Access 97, laquelle ne gère pas les conversio ns
automatiques des Variant, et donc refuse les concaténations par "&".
Par ailleurs j'ai simplifié en n'introduisant pas de traduction du mess age.
__________________________________________________
Isabelle ex Isa :-) a écrit, le 21/11/2007 14:41 :
Bonjour
qui peut m'expliquer
J'ai créer un bouton pour supprimer un enregistrement dans un
formulaire et je voudrais après la suppression de cet enregistrement
que la section Détail soit invisible. J'ai donc fait ceci
Private Sub Commande124_Click()
On Error GoTo Err_Commande124_Click
Ah oui, mais cette erreur, elle s'est exécutée sur quelle instruction ?
En voilà une grave question, à laquelle la réponse apporterait un éclairage à ton problème.
D'autant qu'a priori je ne devine pas, voilà qui me rappelle le conseil qui m'a été prodigué il y a quelques jours de préférer DoCmd.Ru nCommand suivi d'une constante avec un nom évocateur, plutôt que DoMenuItem.
Alors j'en reviens à mon histoire de procédure d'erreur.
J'ai l'habitude de mettre quelque chose qui ressemble à ça :
Err: MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _ vbCrLf + Err.Description,,"nom du module.Nom de la procédure" If ExisteFormulaire("frmTest") Then Stop Resume End If
Pour exploiter ça, bien entendu, il faut créer une procédure ExisteFormulaire. Il y a deux moyens pour ça, soit on parcourt tous les formulaires ouverts dans une boucle et on compare leurs noms à l'argument, soit on utilise Application.SysCmd acSysCmdGetObjectState (d'ailleurs, je trouve que l'aide de ceci était plus facile à trouver avec les versions précédentes d'Access).
Le résultat est qu'une fois que le message a été affiché, on test e l'existence du formulaire frmTest. Par défaut, il n'est pas ouvert, don c c'est terminé, l'utilisateur sait qu'il y a un problème dans tel modu le, telle procédure, il peut faire remonter l'information. J'ai en réserv e un formulaire d'affichage de message dans une zone de texte, avec un bouton Copie qui l'envoie dans le presse-papiers. Bien plus facile à transférer dans une messagerie, on risque moins de se retrouver avec de s copies d'écran au format bmp 24 bits plein écran, pour juste avoir le message d'erreur.
Une fois que l'information est remontée au développeur, il ouvre le formulaire frmTest, lequel contient juste un bouton de fermeture, exécute la procédure dans des conditions aussi proches que possible d e celles décrites, et lorsque l'erreur s'exécute, après affichage du message, le code s'arrête sur Stop. En pressant deux fois sur F8, on se retrouve sur l'instruction qui a généré l'erreur, ce qui en géné ral permet d'y voir plus clair.
Tu remarqueras que j'ai utilisé une syntaxe qui passe lors d'une migration d'Access 95 à Access 97, laquelle ne gère pas les conversio ns automatiques des Variant, et donc refuse les concaténations par "&".
Par ailleurs j'ai simplifié en n'introduisant pas de traduction du mess age. __________________________________________________ Isabelle ex Isa :-) a écrit, le 21/11/2007 14:41 :
Bonjour
qui peut m'expliquer
J'ai créer un bouton pour supprimer un enregistrement dans un formulaire et je voudrais après la suppression de cet enregistrement que la section Détail soit invisible. J'ai donc fait ceci
Private Sub Commande124_Click() On Error GoTo Err_Commande124_Click
Mais j'ai un message d'Access "Pas d'enregistrement courant"
Késako ? Que manque -t-il dans mon code ?
Que veut dire : acEditMenu, 8, ? et acEditMenu, 6, ?
Merci d'avance
Gloops
Gloops a écrit, le 21/11/2007 15:10 :
Err: MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _ vbCrLf + Err.Description,,"nom du module.Nom de la procédure" If ExisteFormulaire("frmTest") Then Stop Resume End If
Je promets qu'à la saisie, j'avais une indentation impeccable !
Gloops a écrit, le 21/11/2007 15:10 :
Err:
MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _
vbCrLf + Err.Description,,"nom du module.Nom de la procédure"
If ExisteFormulaire("frmTest") Then
Stop
Resume
End If
Je promets qu'à la saisie, j'avais une indentation impeccable !
Err: MsgBox "Error n° " + VBA.Str$(Err.Number) + " in " + Err.Source + _ vbCrLf + Err.Description,,"nom du module.Nom de la procédure" If ExisteFormulaire("frmTest") Then Stop Resume End If
Je promets qu'à la saisie, j'avais une indentation impeccable !