OVH Cloud OVH Cloud

Opération sur fermeture d'un formulaire

15 réponses
Avatar
Codial
Bonsoir,

voilà sur des form j'ai un bouton fermer avec un code qui teste si des
mofications ont eu lieu sur l'enregistrement en cours.

If Me.Dirty Then
If MsgBox("Voulez vous enregistrer les modifications en cours ?",
vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If

If Me.NewRecord Then
If MsgBox("Voulez vous enregistrer les saisies en cours ?",
vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If

Me.AllowEdits = False

Voulant faire l'économie d'un bouton je me suis dis je vais le mettre
dans l''évènement Close de mon form
Stupeur! Il passe bien sur le code mais pour Access il n'y a pas de
modif (Alors qu'évidemment j'en ai faites!)

J'ai essayé sur tout les évènements de fermeture mais rien n'y fait!

Je suis surpris qu'en cliquant sur mon bouton ça marche mais en en
cliquant sur la crois fermer!

Quelqu'un peut m'expliquer ?

Cordialement

Codial

5 réponses

1 2
Avatar
3stone
Salut,

"Codial"
Je reviens sur mon pb de fermeture de form en cours de modification ou de
d'ajout

J'ai bien compris ce que tu m'as expliqué mais j'ai un problème:

Effectivement j'ai mis sur l'évènement "Avant mise à jour" du formulaire
Msgbox "Il y a eu modification..."
Cancel = True

Cependant j'ai fait un bouton pour permettre à l'utilisateur de valider la
modif avec

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdSaveRecord

et le problème c'est qu'en cliquant sur le bouton ça me donne le message
Msgbox "Il y a eu modification..."

Or il me semble qu'une fois validé il ne devrait pas afficher ce message,
non?



Le texte était là pour l'exemple...
Regarde ton message original et modifie en concéquence !

Sous ton bouton, tu mets simplement:
DoCmd.RunCommand acCmdSaveRecord

le reste, tu le mets dans le "Form_BeforeUpdate"
puisque c'est événement a *toujours* lieu avant
une mise à jour, quelque soit la méthode...
bouton, clic ci, clic là, clic sur l'icone de fermeture...

--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Codial
Oui j'ai bien compris que le texte était là pour l'exemple...
Mais même avec mon message original il passe dessus.
Or avec DoCmd.RunCommand acCmdSaveRecord il devrait considérer qu'il n'y a
plus de modification en cours?

Parce que c'est pas marrant je clique sur le bouton d'enregistrement et il
me pose la question si je veux enregistrer les modifications en cours.
lol!!!

Codial


"3stone" a écrit dans le message de news:
uf5lZ$
Salut,

"Codial"
Je reviens sur mon pb de fermeture de form en cours de modification ou
de


d'ajout

J'ai bien compris ce que tu m'as expliqué mais j'ai un problème:

Effectivement j'ai mis sur l'évènement "Avant mise à jour" du formulaire
Msgbox "Il y a eu modification..."
Cancel = True

Cependant j'ai fait un bouton pour permettre à l'utilisateur de valider
la


modif avec

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdSaveRecord

et le problème c'est qu'en cliquant sur le bouton ça me donne le message
Msgbox "Il y a eu modification..."

Or il me semble qu'une fois validé il ne devrait pas afficher ce
message,


non?



Le texte était là pour l'exemple...
Regarde ton message original et modifie en concéquence !

Sous ton bouton, tu mets simplement:
DoCmd.RunCommand acCmdSaveRecord

le reste, tu le mets dans le "Form_BeforeUpdate"
puisque c'est événement a *toujours* lieu avant
une mise à jour, quelque soit la méthode...
bouton, clic ci, clic là, clic sur l'icone de fermeture...

--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome







Avatar
3stone
Salut,

"Codial"
[...]
Parce que c'est pas marrant je clique sur le bouton d'enregistrement et il
me pose la question si je veux enregistrer les modifications en cours.



Normal, puisqu'il passe toujours par là... ;-)


Si tu ne veux pas d'avertissement lors du clic sur ton bouton,
tu peux faire ceci:


En haut, au dessus de la première SUB, tu mets:

Dim boClicBouton As Boolean


Ensuite, dans l'événement "Avant mise à jour" du form:

If boClicBouton = False Then
If MsgBox("Voulez vous... ?", vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If
boClicBouton = False

If Me.NewRecord Then
If MsgBox("Voulez vous enregistrer les saisies en cours ?",
vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If


Dans le code du bouton, tu ajoute:

boClicBouton = True


Ainsi, si tu clic sur ton bouton, il ne demande pas,
sinon, si tu ferme ou si tu passe à un autre enregistrement
il demande...


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Codial
"3stone" a écrit dans le message de news:
#
Salut,

"Codial"
[...]
Parce que c'est pas marrant je clique sur le bouton d'enregistrement et
il


me pose la question si je veux enregistrer les modifications en cours.



Normal, puisqu'il passe toujours par là... ;-)


Si tu ne veux pas d'avertissement lors du clic sur ton bouton,
tu peux faire ceci:


En haut, au dessus de la première SUB, tu mets:

Dim boClicBouton As Boolean


Ensuite, dans l'événement "Avant mise à jour" du form:

If boClicBouton = False Then
If MsgBox("Voulez vous... ?", vbQuestion + vbYesNo, "Enregistrer?") vbNo Then
Me.Undo
End If
End If
boClicBouton = False

If Me.NewRecord Then
If MsgBox("Voulez vous enregistrer les saisies en cours ?",
vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If


Dans le code du bouton, tu ajoute:

boClicBouton = True


Ainsi, si tu clic sur ton bouton, il ne demande pas,
sinon, si tu ferme ou si tu passe à un autre enregistrement
il demande...


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome








Avatar
Codial
Bonjour 3stone
merci pour ta patience et d'avoir pris le temps de me guider: j'ai testé et
c'est bon ça fonctionne comme je le souhaitais

Cordialement
A++

Codial



"3stone" a écrit dans le message de news:
#
Salut,

"Codial"
[...]
Parce que c'est pas marrant je clique sur le bouton d'enregistrement et
il


me pose la question si je veux enregistrer les modifications en cours.



Normal, puisqu'il passe toujours par là... ;-)


Si tu ne veux pas d'avertissement lors du clic sur ton bouton,
tu peux faire ceci:


En haut, au dessus de la première SUB, tu mets:

Dim boClicBouton As Boolean


Ensuite, dans l'événement "Avant mise à jour" du form:

If boClicBouton = False Then
If MsgBox("Voulez vous... ?", vbQuestion + vbYesNo, "Enregistrer?") vbNo Then
Me.Undo
End If
End If
boClicBouton = False

If Me.NewRecord Then
If MsgBox("Voulez vous enregistrer les saisies en cours ?",
vbQuestion + vbYesNo, "Enregistrer?") = vbNo Then
Me.Undo
End If
End If


Dans le code du bouton, tu ajoute:

boClicBouton = True


Ainsi, si tu clic sur ton bouton, il ne demande pas,
sinon, si tu ferme ou si tu passe à un autre enregistrement
il demande...


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome








1 2