OVH Cloud OVH Cloud

Vérification

6 réponses
Avatar
Allez les bleus
Hello la communaut=E9,

je voudrais savoir quel est la fa=E7on la plus simple de=20
rendre obligatoire l'introduction de certains champs d'une=20
table et d'avoir un message customis=E9 quand ce champ n'est=20
pas rempli dans le formulaire.

En vous remerciant d'avance chers amis de la communaut=E9,
Le bleu

6 réponses

Avatar
Raymond [mvp]
Bonjour.

Valide si : Est Pas Null
Message si erreur : Il faut entrer une valeur
tu peux le faire au niveau du formulaire ou au niveau de la table.
le faire au niveau du formulaire permet de personnaliser le message dans le
contexte tandis que le mettre au niveau de la table oblige de mettre un
message plus général, mais permet de ne pas s'en occuper en saisie, le
contrôle étant généralisé.
--
@+
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


"Allez les bleus" a écrit dans le
message de news:2849401c463ab$d9dfb250$
Hello la communauté,

je voudrais savoir quel est la façon la plus simple de
rendre obligatoire l'introduction de certains champs d'une
table et d'avoir un message customisé quand ce champ n'est
pas rempli dans le formulaire.

En vous remerciant d'avance chers amis de la communauté,
Le bleu
Avatar
Raymond [mvp]
Bonjour.

(j'avais répondu mais j'ai annulé le message car plus compliqué)

Au niveau de la table:
propriété Chaîne vide autorisée : ne joue pas.
si propriété Null interdit = oui, C'est le meilleur moyen de bloquer toute
non saisie dans toute l'application. Mais ce contrôle est réalisé en premier
et le message est un message général access.
au niveau du formulaire:
Le contrôle de null interdit du niveau table est réalisé en premier. Si on
place est pas null dans la propriété valide si, ce contrôle n'est jamais
réalisé si oui est indiqué dans la table.
si on met non dans la table et est pas null dans le formulaire, c'est le
message du formulaire qui est affiché. Mais le contrôle de la valeur est
réalisé en sortie du champ, donc si on ne passe pas dans le champ le
contrôle n'est pas réalisé. Dans ce cas, on est obligé de rajouter un
controle IsNull(champ) dans l'événement Form_BeforeUpdate avec un message
personnel.
si tu veux impérativement un message personnel, il faut passer par non dans
la table (ce qui est dangereux selon le champ) et faire un contrôle dans
Form_BeforeUpdate en doublette éventuellement avec le BeforeUpdate du champ.
--
@+
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


"Allez les bleus" a écrit dans le
message de news:2849401c463ab$d9dfb250$
Hello la communauté,

je voudrais savoir quel est la façon la plus simple de
rendre obligatoire l'introduction de certains champs d'une
table et d'avoir un message customisé quand ce champ n'est
pas rempli dans le formulaire.

En vous remerciant d'avance chers amis de la communauté,
Le bleu
Avatar
Luis
Bonjour Raymond,
Moi j'ai fait quelque chose comme ça:
Private Sub Form_Current()
DoCmd.Maximize

If IsNull(Me.NomChamp1) Then
MsgBox "ATTENTION! Le NomChamp1 ne doit pas rester vide"
Me. NomChamp1.SetFocus
End If

If IsNull(Me.NomChamp2) Then
MsgBox "ATTENTION! Le NomChamp2 ne doit pas rester vide"
Me. NomChamp2.SetFocus
End If

End Sub

Bien sûr ça n'empêche pas de passer outre mais dans tous
les cas il y a un avertissement pour chaque champ.
Je ne sais pas si c'est très rigoureux mais ça fonctionne.
Luis
-----Message d'origine-----
Bonjour.

Valide si : Est Pas Null
Message si erreur : Il faut entrer une valeur
tu peux le faire au niveau du formulaire ou au niveau de
la table.

le faire au niveau du formulaire permet de personnaliser
le message dans le

contexte tandis que le mettre au niveau de la table
oblige de mettre un

message plus général, mais permet de ne pas s'en occuper
en saisie, le

contrôle étant généralisé.
--
@+
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


"Allez les bleus" a
écrit dans le

message de news:2849401c463ab$d9dfb250$
Hello la communauté,

je voudrais savoir quel est la façon la plus simple de
rendre obligatoire l'introduction de certains champs d'une
table et d'avoir un message customisé quand ce champ n'est
pas rempli dans le formulaire.

En vous remerciant d'avance chers amis de la communauté,
Le bleu


.



Avatar
Raymond [mvp]
Bonjour Luis.

D'accord avec toi, c'est une solution, mais pas dans Form_Current, dans
Form_BeforeUpdate car il peut y avoir d'autres contrôles.

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


"Luis" a écrit dans le message de
news:27e3501c463f1$03ac53f0$
Bonjour Raymond,
Moi j'ai fait quelque chose comme ça:
Private Sub Form_Current()
DoCmd.Maximize

If IsNull(Me.NomChamp1) Then
MsgBox "ATTENTION! Le NomChamp1 ne doit pas rester vide"
Me. NomChamp1.SetFocus
End If

If IsNull(Me.NomChamp2) Then
MsgBox "ATTENTION! Le NomChamp2 ne doit pas rester vide"
Me. NomChamp2.SetFocus
End If

End Sub

Bien sûr ça n'empêche pas de passer outre mais dans tous
les cas il y a un avertissement pour chaque champ.
Je ne sais pas si c'est très rigoureux mais ça fonctionne.
Luis
Avatar
Luis
Merci Raymond.
Luis
-----Message d'origine-----
Bonjour Luis.

D'accord avec toi, c'est une solution, mais pas dans
Form_Current, dans

Form_BeforeUpdate car il peut y avoir d'autres contrôles.

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


"Luis" a écrit dans
le message de

news:27e3501c463f1$03ac53f0$
Bonjour Raymond,
Moi j'ai fait quelque chose comme ça:
Private Sub Form_Current()
DoCmd.Maximize

If IsNull(Me.NomChamp1) Then
MsgBox "ATTENTION! Le NomChamp1 ne doit pas rester vide"
Me. NomChamp1.SetFocus
End If

If IsNull(Me.NomChamp2) Then
MsgBox "ATTENTION! Le NomChamp2 ne doit pas rester vide"
Me. NomChamp2.SetFocus
End If

End Sub

Bien sûr ça n'empêche pas de passer outre mais dans tous
les cas il y a un avertissement pour chaque champ.
Je ne sais pas si c'est très rigoureux mais ça fonctionne.
Luis


.



Avatar
Jessy Sempere [MVP]
Bonjour

Sinon tu peux utiliser ce code, tu le places dans un module général,
l'avantage est que tu n'auras pas à refaire ton code pour chaque formulaire

********************************************************
Public Function DataNull() As String
'** Retourne une chaine de caractère contenant le nom
'** de tous les contrôles (zone de texte, zone de liste,
'** zone de liste modifiable) qui n'ont pas été renseignés.

Dim frm As Form
Dim ctl As Control
Dim strMsg As String

Set frm = Screen.ActiveForm

For Each ctl In frm.Controls
If ctl.ControlType = acTextBox _
Or ctl.ControlType = acListBox _
Or ctl.ControlType = acComboBox Then
If IsNull(ctl.Value) Or ctl.Value = "" Then _
strMsg = strMsg & vbCrLf & vbTab & "- " & ctl.name
End If
Next

If strMsg <> "" Then DataNull = "Vous devez saisir : " & vbCrLf & strMsg

'** Mettre le code qui suit dans le formulaire
'** Private Sub Form_Unload(Cancel As Integer)
'** Dim strMsg As String
'** strMsg = DataNull
'** If strMsg <> "" Then Cancel = True: MsgBox strMsg, vbCritical
'** End Sub

End Function
********************************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Luis" a écrit dans le message news:
27d3801c463f6$fe210ce0$
Merci Raymond.
Luis
-----Message d'origine-----
Bonjour Luis.

D'accord avec toi, c'est une solution, mais pas dans
Form_Current, dans

Form_BeforeUpdate car il peut y avoir d'autres contrôles.

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


"Luis" a écrit dans
le message de

news:27e3501c463f1$03ac53f0$
Bonjour Raymond,
Moi j'ai fait quelque chose comme ça:
Private Sub Form_Current()
DoCmd.Maximize

If IsNull(Me.NomChamp1) Then
MsgBox "ATTENTION! Le NomChamp1 ne doit pas rester vide"
Me. NomChamp1.SetFocus
End If

If IsNull(Me.NomChamp2) Then
MsgBox "ATTENTION! Le NomChamp2 ne doit pas rester vide"
Me. NomChamp2.SetFocus
End If

End Sub

Bien sûr ça n'empêche pas de passer outre mais dans tous
les cas il y a un avertissement pour chaque champ.
Je ne sais pas si c'est très rigoureux mais ça fonctionne.
Luis


.