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

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    février 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : février 2007
    Messages : 3
    Points : 4
    Points
    4

    Par défaut [FORMULAIRE-VBA]imposer 1 champ obligatoire dans formulaire

    bonsoir,

    je souhaiterais savoir comment rendre l'enregistrement d'un champ de formulaire obligatopire avant l'enregistrement ou la fermeture du formulaire.

    merci pour votre aide

    (ps: l'utilisateur se déplace dans les différents champs avec la souris sans respecter d'ordre de tabulation)

  2. #2
    Membre habitué
    Inscrit en
    février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : février 2006
    Messages : 230
    Points : 176
    Points
    176

    Par défaut

    Je pense que tu veux parler de la saisie obligatoire de données dans un champ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Unload(Cancel As Integer)
    If IsNull(Ton_Champ) Then
    MsgBox "Vous devez sélectionner un item"
    Cancel = True
    End If
    Mais attention par cette méthode, il est difficile (je n'ai pas trouvé la solution même avec l'aide des "savants" de ce site) de refermer le formulaire sans avoir saisi la donnée obligatoire..

  3. #3
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : mars 2006
    Messages : 2 745
    Points : 3 822
    Points
    3 822

    Par défaut

    Bonsoir,
    ....rendre l'enregistrement d'un champ de formulaire obligatopire avant l'enregistrement ou la fermeture du formulaire.
    A mon avis, pour faire simple, il faut gérer soit même la fermeture du formulaire sans passer par la croix (X) de fermeture de celui-ci.
    Sur ton formulaire, un champ (Texte0) qui doit être obligatoirement renseigné ainsi qu'un bouton de commande (Commande2) qui permet la fermeture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Commande2_Click()
    Dim Msg, Style, Titre, Reponse
    Msg = "OUI = Saisie du champ       NON = Fermeture SANS sauvegarde"
    Style = vbYesNo + vbCritical + vbDefaultButton2 ' Boutons OUI / NON
    Titre = "Le champ XXXXX doit obligatoirement être renseigné"  ' Titre
     
    If (IsNull(Texte0) Or (Texte0 = vbNullString)) Then
     
        ' Affiche le message
        Reponse = MsgBox(Msg, Style, Titre)
     
    If Reponse = vbYes Then    ' L’utilisateur a choisit OUI
        Me.Texte0.SetFocus 'On se repositionne sur le champ à saisir
     
    Else    ' L’utilisateur a choisi NON
        DoCmd.Close
    End If
    End If
    End Sub
    Ceci n'est qu'un exemple........
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  4. #4
    Membre habitué
    Inscrit en
    février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : février 2006
    Messages : 230
    Points : 176
    Points
    176

    Par défaut

    Effectivement, cela a le mérite d'être simple et plus élégant...

    Néanmoins, je me permet une remarque qui d'ailleurs constitue un de mes soucis dans ma base... Attention à ne pas avoir d'incrémentation automatique de numéro (exemple un numéro de dossier sur la base d'une date (0703xxx) car effectivement dans ce cas l'on sort bien du formulaire de façon élégante mais un enregistrement a tout de même été créé...

  5. #5
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : mars 2006
    Messages : 2 745
    Points : 3 822
    Points
    3 822

    Par défaut

    Bonjour,
    @ delcroixf
    ....car effectivement dans ce cas l'on sort bien du formulaire de façon élégante mais un enregistrement a tout de même été créé...
    Mon exemple n'était qu'un principe......ensuite il faut adapter.
    Rien ne t'empêche de créer un formulaire qui n'est basé sur aucune table ou requête.......
    Tu saisie toute les données que tu as besoin, puis sur ton bouton de commande "Enregistrer":
    tu vérifie que tous les champs obligatoires sont remplis
    NON = tu te repossitionne sur le(s) champ(s) en question ou tu ferme simplement le Form (choix de l'utilisateur)

    OUI = Alors uniquement ici, tu sauvegarde tes données dans tes tables, avec un code du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub CdeR_Valider_Click()
    'AVANT validation verifie que tous les champs sont remplis
    If (IsNull(Texte3) Or (Texte3 = vbNullString)) Or (IsNull(Texte4) Or (Texte4 = vbNullString)) Or (IsNull(Modifiable7) Or (Modifiable7 = vbNullString)) Or (IsNull(Modifiable8) Or (Modifiable8 = vbNullString)) Then
        MsgBox "La saisie des 4 champs est OBLIGATOIRE avant validation", 48, "Saisie incomplète"
        Exit Sub 'Ou on se repositionne sur un champ à remplir
    Else
        Dim msg, style, Titre, Reponse
        msg = "Confirmez-vous la saisie ?" 
        style = vbYesNo + vbQuestion + vbDefaultButton2
        Titre = "*** Demande de confirmation ***"
     
        Reponse = MsgBox(msg, style, Titre)
     
    If Reponse = vbYes Then
    Dim sSQL As String
    sSQL = "INSERT INTO MaTable(Champ1,Champ2,Champ3,Champ4,Champ5)" 
    & "values(texte0,texte3,texte4,Modifiable7,Modifiable8)"
    DoCmd.RunSQL sSQL
    MsgBox "Création réussie " , vbInformation
    DoCmd.Close
    End If
    End If
    End Sub
    Voici une possibilité, bien sur à adapter à chaque application.......

    [EDIT] Dans le cas ou tes champs proviennent de différentes tables, et bien tu gére ceci avec l'exécution d'une requête...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  6. #6
    Membre habitué
    Inscrit en
    février 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 59

    Informations forums :
    Inscription : février 2006
    Messages : 230
    Points : 176
    Points
    176

    Par défaut

    Je te remercie de cette avancée... Comme quoi les questions des uns peuvent déboucher sur des ouvertures pour d'autres. Je ne vanterai jamais assez les mérites d'un tel forum pour ce qui est de l'apprentissage du VBA Access. Je suis plutôt un scolaire et j'avoue que la multitude des choses que j'apprends sur ce site est incomparable par rapport aux simples informations des livres...
    Merci encore et félicitations à toute l'équipe.
    f

Discussions similaires

  1. [SP-2010] Champs obligatoire dans formulaire MOSS2010
    Par jeremm54 dans le forum SharePoint
    Réponses: 15
    Dernier message: 07/11/2013, 09h05
  2. Champs obligatoires dans formulaire
    Par obehin dans le forum Formulaires
    Réponses: 6
    Dernier message: 15/04/2012, 10h13
  3. Réponses: 1
    Dernier message: 25/01/2012, 12h11
  4. Champs obligatoires dans un formulaire
    Par sagitarium dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 23/05/2006, 16h55
  5. Champs obligatoires dans un formulaire
    Par glloq8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/09/2005, 16h24

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