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

'Erreur d'enregistrement...' a la fermeture d'un formulaire...

7 réponses
Avatar
Ryo
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose d'annuler la saisie
si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire n'ont pas été
saisie correctement." & vbLf & "Voulez vous annuler cette saisie ?",
vbYesNo + vbExclamation, "Erreur de saisie") = vbYes Then
DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée", vbExclamation, "Erreur
de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée", vbExclamation,
"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de vérifier que certain
champ du formulaire on bien était renseigné avant de sauvegarder
l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons que je n'ai pas
remplis la date et que je ferme avec la croix. La Sub Form_BeforeUpdate
s'éxecute avant la Sub Form_Unload et j'ai une erreur 'Impossible
d'enregistrer cet enregistrement pour l'instant...' et la Sub
Form_Unload ne s'execute pas. Je cherche donc une astuce pour ne pas
avoir ce message et que ma Sub Form_Unload puisse s'exécuter
tranquilement. Le plus simple a mon sens serait de détecter qu'on a
cliqué sur la croix de fermeture [X] et de ne pas executer
Form_BeforeUpdate a ce moment là. Mais à priori personne n'a jamais
réussit a trouver comment détecter qu'on a cliquer sur cette fichu
croix.
J'en appelle donc à votre expérience voir si quelqu'un sait comment
contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture pour en créer une à
moi mais c'est une solution qui ne me plait vraiment pas.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

7 réponses

Avatar
Raymond [mvp]
Bonjour.

je ne vois pas pourquoi tu places ta vérif également dans le unload car de
toute façon la procédure passe par beforeupdate et afterupdate avant de
passer dans le unload. et comme tout se passe dans le beforeupdate, dans le
unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message de
news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose d'annuler la saisie
si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire n'ont pas été
saisie correctement." & vbLf & "Voulez vous annuler cette saisie ?",
vbYesNo + vbExclamation, "Erreur de saisie") = vbYes Then
DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée", vbExclamation, "Erreur
de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée", vbExclamation,
"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de vérifier que certain
champ du formulaire on bien était renseigné avant de sauvegarder
l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons que je n'ai pas
remplis la date et que je ferme avec la croix. La Sub Form_BeforeUpdate
s'éxecute avant la Sub Form_Unload et j'ai une erreur 'Impossible
d'enregistrer cet enregistrement pour l'instant...' et la Sub
Form_Unload ne s'execute pas. Je cherche donc une astuce pour ne pas
avoir ce message et que ma Sub Form_Unload puisse s'exécuter
tranquilement. Le plus simple a mon sens serait de détecter qu'on a
cliqué sur la croix de fermeture [X] et de ne pas executer
Form_BeforeUpdate a ce moment là. Mais à priori personne n'a jamais
réussit a trouver comment détecter qu'on a cliquer sur cette fichu
croix.
J'en appelle donc à votre expérience voir si quelqu'un sait comment
contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture pour en créer une à
moi mais c'est une solution qui ne me plait vraiment pas.

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com



Avatar
Exa
-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.




Avatar
Exa
-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.




Avatar
Exa
-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.




Avatar
Exa
-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.




Avatar
Exa
-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.




Avatar
Je recommence (je sais pas sur quelle touche j'ai appuyé
mais le message est partis pendant que je le tapé...)
Tu as tout fait raison, j'ai donc viré le code du unload.
Par contre ca ne resoud pas mon problème, comment éviter
ce foutu message d'erreur a la fermeturedu formulaire ?
Merci.

-----Message d'origine-----
Bonjour.

je ne vois pas pourquoi tu places ta vérif également
dans le unload car de

toute façon la procédure passe par beforeupdate et
afterupdate avant de

passer dans le unload. et comme tout se passe dans le
beforeupdate, dans le

unload tu ne devrais pas avoir de modif en cours.

--
@+
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


"Ryo" a écrit dans le message
de

news:
Salut!

Voici 3 codes qui sont dans un formulaire:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Teste si les champs sont bien remplis
Cancel = VerifChamp
End Sub

Private Sub Form_Unload(Cancel As Integer)
'Teste si les champs sont bien remplis et propose
d'annuler la saisie


si non
If VerifChamp Then
If MsgBox("Tout les champs de ce formulaire
n'ont pas été


saisie correctement." & vbLf & "Voulez vous annuler
cette saisie ?",


vbYesNo + vbExclamation, "Erreur de saisie") = vbYes
Then


DoCmd.RunCommand acCmdUndo
Else
Cancel = VerifChamp
End If
End If
End Sub

Private Function VerifChamp() As Integer
'Teste les champs
VerifChamp = False
If IsNull(Me.Texte_Date) Then
MsgBox "La date doit être renseignée",
vbExclamation, "Erreur


de saisie..."
Me.Texte_Date.SetFocus
GoTo Erreur
End If
If IsNull(Me.Combo_Personne) Then
MsgBox "La personne doit être renseignée",
vbExclamation,


"Erreur de saisie..."
Me.Combo_Personne.SetFocus
GoTo Erreur
End If
Exit Function

Erreur:
VerifChamp = True
End Function
Vous l'aurez compris le but de ces code est de
vérifier que certain


champ du formulaire on bien était renseigné avant de
sauvegarder


l'enregistrement.
L'ennui c'est la fermeture du formulaire, admettons
que je n'ai pas


remplis la date et que je ferme avec la croix. La Sub
Form_BeforeUpdate


s'éxecute avant la Sub Form_Unload et j'ai une
erreur 'Impossible


d'enregistrer cet enregistrement pour l'instant...' et
la Sub


Form_Unload ne s'execute pas. Je cherche donc une
astuce pour ne pas


avoir ce message et que ma Sub Form_Unload puisse
s'exécuter


tranquilement. Le plus simple a mon sens serait de
détecter qu'on a


cliqué sur la croix de fermeture [X] et de ne pas
executer


Form_BeforeUpdate a ce moment là. Mais à priori
personne n'a jamais


réussit a trouver comment détecter qu'on a cliquer sur
cette fichu


croix.
J'en appelle donc à votre expérience voir si quelqu'un
sait comment


contourner ce problème.
J'ai déjà penser à suprimmer la croix de fermeture
pour en créer une à


moi mais c'est une solution qui ne me plait vraiment
pas.



--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com




.