IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Obliger les utilisateurs à saisir certains champs?


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut [Résolu] Obliger les utilisateurs à saisir certains champs?
    Voici mon problème:
    j'ai un formulaire de saisie,avec deux boutons associées à des macros:
    - un bouton "retour menu",qui ferme ce formulaire de saisie et rouvre un formulaire d'accueil
    - un bouton "quitter" qui ferme le formulaire et quiite la base.
    J'aimerais que lors de la saisie il soit obligatoire que l'utilisateur saisisse certains champs,et donc qu'un message le lui rappelle s'il clique sur un de ces 2 boutons sans les avoir remplis lors d'un enregistrement.
    Au départ j'avais tout simplement mis un critère "not null" lors de la définition des champs,et cela me met bien un message d'erreur (=du style [nom du champ] doit être rempli) si le champ n'a pas été rempli,mais cela fait également planter la macro correspondant au bouton sur lequel l'utilisateur clique en m'affichant un message d'erreur sur la lecture de la macro.
    Comment éviter cela?
    Et est-il possible de personnaliser le message s'affichant si la saisie des champs obligatoires n'a pas été effectuée?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Le mieux c'est de passé par le code.
    Dans la propriété : "Sur clic" de ton bouton tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me![Nom_du_champ] <> "" Then
      'ici tu met le code qui était déja présent
    Else
        MsgBox "Un champs n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
    End If
    Bon courage

  3. #3
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    Le mieux c'est de passé par le code.
    Dans la propriété : "Sur clic" de ton bouton tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me![Nom_du_champ] <> "" Then
      'ici tu met le code qui était déja présent
    Else
        MsgBox "Un champ n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
    End If
    Bon courage
    Merci pour ta réponse mais j'ai plusieurs problèmes:
    -j'ai essayé ta méthode avec le nom d'un seul champ,mais j'ai une erreur de compilation au niveau du [Nom_du_champ] (attendu: then ou goto)

    -quand tu me dis "ici tu met le code qui était déja présent",je mets quoi?directement le nom de la macro qui me permet de fermer le formulaire (que j'ai appelé fermerFormulaireSaisie)? ça n'est pas une macro VB que j'avais créé et je ne sais pas trop comment faire (désolé je n'y connais quasiment rien).

    -dernier problème: je me suis peut être mal exprimé,mais tous les champs de mon formulaire de saisie ne sont pas obligatoires à remplir,il y en a des facultatifs,comment faire pour vérifier que seulement les obligatoires sont remplis?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    ta macro elle sert juste à fermer le formulaire, car si c'est le cas tu met le code suivant toujours dans la propiété "sur clic" de ton bouton :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub boutonfermer_Click()
     
      If Me.texte1 <> "" And Me.texte2 <> "" and etc... Then
        DoCmd.Close
      Else
        MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
      End If
     
    end sub

  5. #5
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    ta macro elle sert juste à fermer le formulaire, car si c'est le cas tu met le code suivant toujours dans la propiété "sur clic" de ton bouton :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub boutonfermer_Click()
     
      If Me.texte1 <> "" And Me.texte2 <> "" and etc... Then
        DoCmd.Close
      Else
        MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
      End If
     
    end sub

    Oui ma macro sert bien uniquement à fermer mon formulaire.
    Par contre quand j'utilise ce code,j'ai un message erreur de compilation: utilisation incorrecte du mot-clé Me.Donc ça marche toujours pas
    Autre question:pour l'uiliser,dans "sur clic" au niveau de mon bouton de formulaire j'inscris juste le nom de la macro (boutonfermer_Click()?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Je le fait sans macro et ça fonctionne pour moi,
    essaye de mettre le code que je t'es donné dans la propriété "sur clic "pour ça tu clic sur la fléche à coté du champs "sur clic" puis tu met [procédure évenementiel] puis tu clic sur "..." à coté de la flèche, ensuite t'a plus qu'a metre le code. bon courage.

  7. #7
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    Je le fait sans macro et ça fonctionne pour moi,
    essaye de mettre le code que je t'es donné dans la propriété "sur clic "pour ça tu clic sur la fléche à coté du champs "sur clic" puis tu met [procédure évenementiel] puis tu clic sur "..." à coté de la flèche, ensuite t'a plus qu'a metre le code. bon courage.
    Je viens de faire comme cela,ça fonctionne impec!Merci beaucoup!.
    Par contre cela fonctionne tellement bien que je me retrouve devant une difficulté supplémentaire:
    -si l'utilisateur ouvre le formulaire de saisie et puis finalement ne saisit aucun champ ou bien supprime un enregistrement,puis clique sur le bouton,ta fenêtre de message d'erreur apparaît (logique puisque les champs de saisie obligatoires sont vides!). Mais dans ce cas là il faudrait qu'elle n'apparaisse pas et laisse l'utilisateur quitter.
    Donc comment faire pour que cette fenêtre n'apparaisse pas si l'utilisateur clique sur le bouton et que la totalité des champs est vide??

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    si j'ai bien compris il faut que quand absolument aucun champs n'est rempli tu puisse quitté donc si c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If (Me.texte1 <> "" And Me.texte2 <> "" and .......) OR (Me.texte1 = "" and me.texte2 = "" and me.texte3 = "" ..........)  Then 
        DoCmd.Close 
      Else 
        MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur" 
      End If

  9. #9
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    si j'ai bien compris il faut que quand absolument aucun champs n'est rempli tu puisse quitté donc si c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If (Me.texte1 <> "" And Me.texte2 <> "" and .......) [b]OR (Me.texte1 = "" and me.texte2 = "" and me.texte3 = "" ..........)[b]  Then 
        DoCmd.Close 
      Else 
        MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur" 
      End If
    OK je me doutais qu'il fallait rajouter une condition de ce type,mais après essai ça ne marche pas! Si tous les champs sont vides je me retrouve toujours dans le Else et la boîte du message d'erreur s'affiche

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    essaye ça, ça doit marché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    If Me.t1 <> "" Or Me.t2 <> "" Or Me.t3 <> "" Then 'ici tu met toutes tes zones de texte
            If Me.t1 <> "" And Me.t2 <> "" Then 'ici tu met celle qui sont obligatoire
                DoCmd.Close
            Else
                MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
            End If
    Else
            DoCmd.Close
    End If

  11. #11
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    essaye ça, ça doit marché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    If Me.t1 <> "" Or Me.t2 <> "" Or Me.t3 <> "" Then 'ici tu met toutes tes zones de texte
            If Me.t1 <> "" And Me.t2 <> "" Then 'ici tu met celle qui sont obligatoire
                DoCmd.Close
            Else
                MsgBox "Un champ obligatoire n'a pas été saisi", vbOKOnly & vbCritical, "Erreur"
            End If
    Else
            DoCmd.Close
    End If

    ça fonctione pas avec les If imbriqués de cette façon,je vais essyaer de triturer un peu.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    J'ai essayer exactement ce code et ça fonctionne pour moi, qu'est ce qui ne fonctionne pas pour toi.

  13. #13
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    J'ai essayer exactement ce code et ça fonctionne pour moi, qu'est ce qui ne fonctionne pas pour toi.
    ça me fait le Close si tous les champs sont vides

  14. #14
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Si tous les champs sont vides je me retrouve toujours dans le Else et la boîte du message d'erreur s'affiche
    c'est bien ce que tu souhaitait faire, non?

  15. #15
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par fazerman
    Si tous les champs sont vides je me retrouve toujours dans le Else et la boîte du message d'erreur s'affiche
    c'est bien ce que tu souhaitait faire, non?
    En fait:
    -si TOUS les champs sont vides je ne veux pas de msg d'erreur et le formulaire peut se fermer
    -si au moins un des champs n'est pas vide,il faut que tous les champs obligatoires soient remplis pour quitter le formulaire (si ça n'est pas le cas
    le msg d'erreur DOIT apparaître).

    Je ne comprend pas pquoi ton dernier algo ne fonctionne pas,puisqu'apparemment :
    -dans le premier if tu regarde les champs un par un pour voir si au moins un n'est pas vide;si ça n'est pas le cas (donc si tous les champs sont vides, tu entre dans le else du bas et ferme le formulaire, c'est bien ce que je voulais).
    -si c'est le cas tu entre dans le deuxième if pour vérifier que tous les champs obligatoires sont remplis,si ça n'est pas le cas message d'erreur sinon tu ferme le formulaire.
    Quand j'ai tous mes champs vides avec ce code j'ai pourtant le message d'erreur qui apparaît,je ne comprend pas pourquoi.
    Voici le code que j'ai entré:

    Private Sub Commande50_Click()

    If (Me.[DateRDV] <> "" <> "" Or Me.[CodeVendeur] <> "" Or Me.[NumDevis] <> "" Or Me.[CodeClient] <> "" Or Me.[NomClient] <> "" Or Me.[Ville] <> "" Or Me.[Act] <> "" Or Me.[Ets] <> "" Or Me.[NatMouv] <> "" Or Me.[OrigineRDV] <> "" Or Me.[EtatDevis] <> "" Or Me.[CAHT] <> "" Or Me.[pqcmt] <> "" Or Me.[MotifAttente] <> "" Or Me.[AcompteAccepte] <> "" Or Me.[DateRelance] <> "") Then

    If (Me.[Date Visite] <> "" And Me.[CodeVendeur] <> "" And Me.[NumDevis] <> "" And Me.[CodeClient] <> "" And Me.[NomClient] <> "" And Me.[Ville] <> "" And Me.[Act] <> "" And Me.[Ets] <> "" And Me.[NatMouv] <> "" And Me.[OrigineRDV] <> "" And Me.[EtatDevis] <> "") Then
    DoCmd.Close
    Else
    MsgBox "Un champ obligatoire n'a pas été saisi,veuillez le remplir", vbOKOnly & vbCritical, "Attention!"
    End If
    Else
    DoCmd.Close
    End If
    End Sub

    En tout cas merci pour ton aide.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Effectivement c'est etrange que ça ne fonctionne pas, je viens juste de faire un test avec 4 champs dont 2 obligatoire, dès que je rentre du texte dans un des deux non-obligatoire il me met le message mais si je ne rempli rien le form se ferme. peut etre que c'est u début du 1er if tu à mis 2 fois <> "" <>""., mis je suis septique. tiens moi au courant, désormais je pourais t'aider que lundi, bon WE.

  17. #17
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    J'ai supprimé le premier <>"" au début du premier if mais pas de changement Peut être que je teste un trop grand nombre de champs??

  18. #18
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Salut, j'ai fait un test avec le meme nombre d'éléments que toi et ça fonctionne je ne vois vraiment pas pourquoi chez toi ça marche pas.
    qqs question :
    - certains de tes champs sont ils formatté (ex : Date)
    - y a t-il des zones de liste modifiables

    sinon tu peut essayer d'enlever quelques champs de ton code puis voir ce que ça donne et si ça fonctionne tu les rajoutes un par un

  19. #19
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 217
    Points : 66
    Points
    66
    Par défaut
    ça y est ça fonctionne!
    L'erreur était idiote: un des champs avait en fait une valeur par défaut,et donc il n'était jamais nul! C'est pour cela que j'avais toujours la boîte de message d'erreur qui s'affichait,puisque j'avais toujours un champ non vide et que les obligatoires n'étaient pas remplis.

    En tout cas fazerman je te remercie beaucoup!

    A présent j'aimerais si possible améliorer la boîte de message d'erreur en affichant le nom du ou des champs obligatoires qui ne sont pas remplis,comment pourrais-je faire?

  20. #20
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 45
    Points : 37
    Points
    37
    Par défaut
    Petite suggestion : le nom de ton champ "Date Visite" comporte un espace, c'est peut etre a cause de ça. Sinon tu peut aussi enlever tout les crochets autour de tes noms de champs, comme ça si il y en a un qui est mal orthographié tu aura un message d'erreur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/02/2013, 15h14
  2. Réponses: 3
    Dernier message: 03/02/2012, 14h03
  3. Comment obliger un utilisateur à remplir tous les champs d'un Userform
    Par Gibé2201 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/08/2011, 11h49
  4. Enlever les répétitions de certains champs
    Par hacksi dans le forum Langage SQL
    Réponses: 7
    Dernier message: 31/07/2008, 15h12
  5. Modifier les valeurs de certains champs d'une table
    Par Xorbane dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/10/2007, 22h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo