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

Contrôles sur champs obligatoires

10 réponses
Avatar
Isa
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir des champs
obligatoires à saisir et j'ai retenu la méthode de test dans le formulaire.
Le souci est que je souhaiterais trouver le bon évènement (pour l'instant,
j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour l'instant, le
message apparaît une fois et ensuite l'utilisateur pour faire l'action qu'il
souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit obligé de
remplir les champs nécessaires (qu'il ne puisse pas sortir ou changer
d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.

10 réponses

Avatar
Antoine Labusquière
Sur fermeture du formulaire, tu peux lancer une fonction de vérification.
Tant que la fonction ne retourne pas une valeur OK, tu peux empêcher la
fermeture du formulaire.
Et si tu permet de naviguer entre différents enregistrements, tu mets la
même fonction sur Form Current.

"Isa" a écrit dans le message de
news:
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir des
champs

obligatoires à saisir et j'ai retenu la méthode de test dans le
formulaire.

Le souci est que je souhaiterais trouver le bon évènement (pour l'instant,
j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour l'instant,
le

message apparaît une fois et ensuite l'utilisateur pour faire l'action
qu'il

souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit obligé de
remplir les champs nécessaires (qu'il ne puisse pas sortir ou changer
d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.


Avatar
Isa
Sur fermeture, le pb c'est qu'il ne vérifie que l'enregistrement en cours et
pas les autres.
Sur Current (par exemple, je clique sur le bouton de navigation "Aller à
l'enregistrement précédent"), c'est ce qu'il me faut mais le pb c'est qu'il
affiche le message d'erreur et quand on clique sur OK, il exécute l'action
(changement d'enregistrement).
Du coup, la personne n'est pas obligé de saisir.
Ce que je souhaite, c'est que le message apparaisse et que plus aucune
action ne se fasse.
Je ne sais pas si je suis claire.
Merci.


Sur fermeture du formulaire, tu peux lancer une fonction de vérification.
Tant que la fonction ne retourne pas une valeur OK, tu peux empêcher la
fermeture du formulaire.
Et si tu permet de naviguer entre différents enregistrements, tu mets la
même fonction sur Form Current.

"Isa" a écrit dans le message de
news:
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir des
champs

obligatoires à saisir et j'ai retenu la méthode de test dans le
formulaire.

Le souci est que je souhaiterais trouver le bon évènement (pour l'instant,
j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour l'instant,
le

message apparaît une fois et ensuite l'utilisateur pour faire l'action
qu'il

souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit obligé de
remplir les champs nécessaires (qu'il ne puisse pas sortir ou changer
d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.







Avatar
Antoine Labusquière
Exact.
Là je ne sait pas trop.
Pour contourner le problème, tu peux créer des boutons de navigation entre
les enregistrmeents (suivant, précédent...) pour remplacer ceux d'Access. Du
coup, tu peux mettre tes vérifications dans le code de tes boutons.

Je cherche, mais là je sèche un peu.
Si quelqu'un a des idées...


"Isa" a écrit dans le message de
news:
Sur fermeture, le pb c'est qu'il ne vérifie que l'enregistrement en cours
et

pas les autres.
Sur Current (par exemple, je clique sur le bouton de navigation "Aller à
l'enregistrement précédent"), c'est ce qu'il me faut mais le pb c'est
qu'il

affiche le message d'erreur et quand on clique sur OK, il exécute l'action
(changement d'enregistrement).
Du coup, la personne n'est pas obligé de saisir.
Ce que je souhaite, c'est que le message apparaisse et que plus aucune
action ne se fasse.
Je ne sais pas si je suis claire.
Merci.


Sur fermeture du formulaire, tu peux lancer une fonction de
vérification.


Tant que la fonction ne retourne pas une valeur OK, tu peux empêcher la
fermeture du formulaire.
Et si tu permet de naviguer entre différents enregistrements, tu mets la
même fonction sur Form Current.

"Isa" a écrit dans le message de
news:
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir des
champs

obligatoires à saisir et j'ai retenu la méthode de test dans le
formulaire.

Le souci est que je souhaiterais trouver le bon évènement (pour
l'instant,



j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour
l'instant,



le
message apparaît une fois et ensuite l'utilisateur pour faire l'action
qu'il

souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit obligé de
remplir les champs nécessaires (qu'il ne puisse pas sortir ou changer
d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.









Avatar
Isa
Justement j'ai mes propres bouton de navigation mais j'en ai également
d'autres pour faire d'autres choses et il faudrait donc mettre les contrôles
sur tous les boutons.
De plus, sur fermeture du form (par exemple), le message d'erreur s'affiche
puis le form se ferme donc ça ne sert à rien car les utilisateurs ne sont
plus obligés de rien.
Merci pour ton aide.




"Antoine Labusquière" wrote:

Exact.
Là je ne sait pas trop.
Pour contourner le problème, tu peux créer des boutons de navigation entre
les enregistrmeents (suivant, précédent...) pour remplacer ceux d'Access. Du
coup, tu peux mettre tes vérifications dans le code de tes boutons.

Je cherche, mais là je sèche un peu.
Si quelqu'un a des idées...


"Isa" a écrit dans le message de
news:
Sur fermeture, le pb c'est qu'il ne vérifie que l'enregistrement en cours
et

pas les autres.
Sur Current (par exemple, je clique sur le bouton de navigation "Aller à
l'enregistrement précédent"), c'est ce qu'il me faut mais le pb c'est
qu'il

affiche le message d'erreur et quand on clique sur OK, il exécute l'action
(changement d'enregistrement).
Du coup, la personne n'est pas obligé de saisir.
Ce que je souhaite, c'est que le message apparaisse et que plus aucune
action ne se fasse.
Je ne sais pas si je suis claire.
Merci.


Sur fermeture du formulaire, tu peux lancer une fonction de
vérification.


Tant que la fonction ne retourne pas une valeur OK, tu peux empêcher la
fermeture du formulaire.
Et si tu permet de naviguer entre différents enregistrements, tu mets la
même fonction sur Form Current.

"Isa" a écrit dans le message de
news:
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir des
champs

obligatoires à saisir et j'ai retenu la méthode de test dans le
formulaire.

Le souci est que je souhaiterais trouver le bon évènement (pour
l'instant,



j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour
l'instant,



le
message apparaît une fois et ensuite l'utilisateur pour faire l'action
qu'il

souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit obligé de
remplir les champs nécessaires (qu'il ne puisse pas sortir ou changer
d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.














Avatar
Antoine Labusquière
Effectivement, tu devras mettre le code sur chaque bouton.
Par contre, pour la fermeture du formulaire, je me suis trompé.
Si tu mets le code suivant, ça marche
Private Sub Form_Unload(Cancel As Integer)
If Not Vérification Then Cancel = True
End Sub

Vérification étant une fonction renvoyant Vrai si les vérifications sont OK,
False dans le cas contraire.


"Isa" a écrit dans le message de
news:
Justement j'ai mes propres bouton de navigation mais j'en ai également
d'autres pour faire d'autres choses et il faudrait donc mettre les
contrôles

sur tous les boutons.
De plus, sur fermeture du form (par exemple), le message d'erreur
s'affiche

puis le form se ferme donc ça ne sert à rien car les utilisateurs ne sont
plus obligés de rien.
Merci pour ton aide.




"Antoine Labusquière" wrote:

Exact.
Là je ne sait pas trop.
Pour contourner le problème, tu peux créer des boutons de navigation
entre


les enregistrmeents (suivant, précédent...) pour remplacer ceux
d'Access. Du


coup, tu peux mettre tes vérifications dans le code de tes boutons.

Je cherche, mais là je sèche un peu.
Si quelqu'un a des idées...


"Isa" a écrit dans le message de
news:
Sur fermeture, le pb c'est qu'il ne vérifie que l'enregistrement en
cours



et
pas les autres.
Sur Current (par exemple, je clique sur le bouton de navigation "Aller
à



l'enregistrement précédent"), c'est ce qu'il me faut mais le pb c'est
qu'il

affiche le message d'erreur et quand on clique sur OK, il exécute
l'action



(changement d'enregistrement).
Du coup, la personne n'est pas obligé de saisir.
Ce que je souhaite, c'est que le message apparaisse et que plus aucune
action ne se fasse.
Je ne sais pas si je suis claire.
Merci.


Sur fermeture du formulaire, tu peux lancer une fonction de
vérification.


Tant que la fonction ne retourne pas une valeur OK, tu peux empêcher
la




fermeture du formulaire.
Et si tu permet de naviguer entre différents enregistrements, tu
mets la




même fonction sur Form Current.

"Isa" a écrit dans le message de
news:
Salut à tous,

J'ai demandé hier quelle était la meilleur solution pour avertir
des





champs
obligatoires à saisir et j'ai retenu la méthode de test dans le
formulaire.

Le souci est que je souhaiterais trouver le bon évènement (pour
l'instant,



j'ai testé sur Après MAJ) sur lequel mettre mes tests car pour
l'instant,



le
message apparaît une fois et ensuite l'utilisateur pour faire
l'action





qu'il
souhaite sans problème.
Ce que je voudrais, c'est qu'il soit vraiment bloqué et soit
obligé de





remplir les champs nécessaires (qu'il ne puisse pas sortir ou
changer





d'enregistrement).
Comment puis-je faire ?
D'avance merci de vos réponses.
















Avatar
3stone
Salut Isa,

"Isa"
| Justement j'ai mes propres bouton de navigation mais j'en ai également
| d'autres pour faire d'autres choses et il faudrait donc mettre les contrôles
| sur tous les boutons.
| De plus, sur fermeture du form (par exemple), le message d'erreur s'affiche
| puis le form se ferme donc ça ne sert à rien car les utilisateurs ne sont
| plus obligés de rien.


La seule bonne place pour mettre un code de vérification des saisies
est l'événement "BeforeUpdate" du formulaire (avant mise à jour)

Après mise à jour, c'est trop tard... ;-)

Cela ressemble donc à ceci:

Sub Form_BeforeUpdate(cancel as true)
if isnull([monchamp]) or _
isnull([autrechamp]) Then

cancel = True
msgbox "saisie incomplète..."
end if

end sub


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Isa
Le pb est que ça marche bien pour le cas où je clique sur les boutons de
navigation mais pour le cas où je clique sur des autres boutons (boutons de
raccourci qui permettent d'atteindre d'autres écrans), cela ne marche pas car
ça ouvre d'abord l'autre écran et ensuite affiche le message d'erreur.

Voici, par exemple, le code sous un de mes boutons :

Private Sub btn_ouvrir_F03_etude_Click()
On Error GoTo Err_btn_ouvrir_F03_etude_Click

Dim stDocName As String

stDocName = "F03_etude"
DoCmd.OpenForm stDocName, acNormal

' Fermeture du formulaire appelant
DoCmd.Close acForm, "F02_client"

Exit_btn_ouvrir_F03_etude_Click:
Exit Sub

Err_btn_ouvrir_F03_etude_Click:
MsgBox Err.Description
Resume Exit_btn_ouvrir_F03_etude_Click

End Sub

Comment puis-je faire pour que l'action BeforeUpdate s'exécute avant le code
du bouton et que donc le code du bouton reste sans conséquence s'il y a le
message d'erreur ?

D'avance merci de vos réponses.

Isa.



"3stone" wrote:

Salut Isa,

"Isa"
| Justement j'ai mes propres bouton de navigation mais j'en ai également
| d'autres pour faire d'autres choses et il faudrait donc mettre les contrôles
| sur tous les boutons.
| De plus, sur fermeture du form (par exemple), le message d'erreur s'affiche
| puis le form se ferme donc ça ne sert à rien car les utilisateurs ne sont
| plus obligés de rien.


La seule bonne place pour mettre un code de vérification des saisies
est l'événement "BeforeUpdate" du formulaire (avant mise à jour)

Après mise à jour, c'est trop tard... ;-)

Cela ressemble donc à ceci:

Sub Form_BeforeUpdate(cancel as true)
if isnull([monchamp]) or _
isnull([autrechamp]) Then

cancel = True
msgbox "saisie incomplète..."
end if

end sub


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw




Avatar
3stone
Salut,

"Isa"
| Le pb est que ça marche bien pour le cas où je clique sur les boutons de
| navigation mais pour le cas où je clique sur des autres boutons (boutons de
| raccourci qui permettent d'atteindre d'autres écrans), cela ne marche pas car
| ça ouvre d'abord l'autre écran et ensuite affiche le message d'erreur.
|
| Voici, par exemple, le code sous un de mes boutons :
|
| Private Sub btn_ouvrir_F03_etude_Click()
| On Error GoTo Err_btn_ouvrir_F03_etude_Click


' ici, tu oblige Access à (tenter) de sauver l'enregistrement...

DoCmd.RunCommand acCmdSaveRecord


| Dim stDocName As String
|
| stDocName = "F03_etude"
| DoCmd.OpenForm stDocName, acNormal



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
Isa
Je te remercie beaucoup, tout est presque résolu.

Presque parce que si j'ajoute la sauvegarde de l'enregistrement, il me met
un message "l'action RunCommand a été annulée...".
Comment puis-je enlever ce message (ne pas qu'il apparaisse) ?
Merci.



"3stone" wrote:

Salut,

"Isa"
| Le pb est que ça marche bien pour le cas où je clique sur les boutons de
| navigation mais pour le cas où je clique sur des autres boutons (boutons de
| raccourci qui permettent d'atteindre d'autres écrans), cela ne marche pas car
| ça ouvre d'abord l'autre écran et ensuite affiche le message d'erreur.
|
| Voici, par exemple, le code sous un de mes boutons :
|
| Private Sub btn_ouvrir_F03_etude_Click()
| On Error GoTo Err_btn_ouvrir_F03_etude_Click


' ici, tu oblige Access à (tenter) de sauver l'enregistrement...

DoCmd.RunCommand acCmdSaveRecord


| Dim stDocName As String
|
| stDocName = "F03_etude"
| DoCmd.OpenForm stDocName, acNormal



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw




Avatar
3stone
re,

"Isa"
| Presque parce que si j'ajoute la sauvegarde de l'enregistrement, il me met
| un message "l'action RunCommand a été annulée...".
| Comment puis-je enlever ce message (ne pas qu'il apparaisse) ?


Il faut "traper" l'erreur dans la gestion des erreurs que tu as intégré par le :


On error goto machin


et dans machin, tu modifie...

machin:
If err.number = xyz then
exit sub
else
...
resume truc
end if
End sub

Je te laisse chercher la valeur de "xyz" ;-))


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw