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

VBA Access Discussion :

Rédaction d'un test de vérification avec des champs définis


Sujet :

VBA Access

  1. #1
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut Rédaction d'un test de vérification avec des champs définis
    Bonsoir à tous,

    J'ai un formulaire pour lequel je souhaiterai vérifier que certains champs soient bien renseignés avant de valider l'inscription.

    J'ai trouvé sur le forum la solution suivante par Philippe JOCHMANS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub TestCtrl()
    Dim Ctrl As control
        For Each Ctrl In Me.Controls
            If TypeOf Ctrl Is TextBox Then
                If Ctrl.Value = "" Or IsNull(Ctrl.Value) Then
                    MsgBox "Toutes les cases doivent être renseignées", vbOKOnly + vbExclamation, "Sélection"
                    Ctrl.SetFocus
                    Exit Sub
                End If
            End If
        Next Ctrl
    End Sub
    Seulement moi je souhaite vérifier seulement une partie des Textbox j'ai donc pensé qu'il fallait mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        For Each Ctrl In Me.Controls!NomClient or Me.Controls!PrenomClient or Me.Controls![Date début] or Me.Controls![Date fin])
    Mais Access n'aime pas du tout ma syntaxe. Je ne vois pas comment rédiger ma liste autrement alors si quelqu'un peut me venir en aide je lui serai reconnaissant.

    Bonne soirée

    Oliv'

  2. #2
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    bonjour
    Puisque tu n'as que 4 ou 5 controls à vérifier, tu pourrais peut etre faire une serie de If...End If non?
    comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     If isnull(Me!NomClient) Then
      msgbox "Le nom du client.....",vbexclamation,"monAppli"
      exit sub
    End if
    Faire ça pour les 5 controls; non?
    @+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je pense que tu n'as pas compris le principe des collection.

    Dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For Each Ctrl In Me.Controls
    On passe en revu tous les contrôles du formulaire en cours, hors ce que tu écris ici
    n'a aucun sens, car tu ne trouves qu'un contrôle.

    Par contre ce que tu peux faire c'est jouer sur la propriété Name du contrôle.

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim Ctrl As Control
        For Each Ctrl In Me.Controls
            If TypeOf Ctrl Is TextBox Then
                If Ctrl.Name = "NomClient" Or Ctrl.Name = "PrenomClient" Then
                    If Ctrl.Value = "" Or IsNull(Ctrl.Value) Then
                        MsgBox "Il manque des informations", vbOKOnly + vbExclamation, "Sélection"
                        Ctrl.SetFocus
                        Exit Sub
                    End If
                End If
            End If
        Next Ctrl
    Une autre solution plus judicieuse est de créer une fonction où tu passes en paramètre le nom de la zone de texte et le nom du formulaire, et qui renvoie un booléen (de type Vrai Faux).

    Il faut tester le résultat de cette fonction par une suite de If, l'avantage si tu as pleins de formulaires tu auras une fonction qui fait tout.


    Philippe

  4. #4
    Membre averti Avatar de Oliv'83
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mars 2008
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Mars 2008
    Messages : 421
    Points : 309
    Points
    309
    Par défaut
    Bonjour Keita, bonjour Philippe,

    Merci de vos aides respectives

    Keita ta solution ne me convient pas complètement car je ne pourrais pas l'adapter (ou alors avec de fortes contraintes) si un jour j'ai un test sur de nombreux champs à faire. Merci quand même

    Philippe, je pense que je vais tenter ta solution.

    Citation Envoyé par Philippe JOCHMANS Voir le message
    Je pense que tu n'as pas compris le principe des collection.

    Dans cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For Each Ctrl In Me.Controls
    On passe en revu tous les contrôles du formulaire en cours, hors ce que tu écris ici
    n'a aucun sens, car tu ne trouves qu'un contrôle.
    Je pensais que si on établissait une liste des contrôles à vérifier le passage en revue se faisait au sein de cette liste, du moins je l'espérais...

    Citation Envoyé par Philippe JOCHMANS Voir le message
    Par contre ce que tu peux faire c'est jouer sur la propriété Name du contrôle.
    Merci pour cette piste et ton exemple que je vais essayer d'adapter de ce pas.

    Citation Envoyé par Philippe JOCHMANS Voir le message
    Une autre solution plus judicieuse est de créer une fonction où tu passes en paramètre le nom de la zone de texte et le nom du formulaire, et qui renvoie un booléen (de type Vrai Faux).

    Il faut tester le résultat de cette fonction par une suite de If, l'avantage si tu as pleins de formulaires tu auras une fonction qui fait tout.
    Philippe
    Je ne suis pas sur d'être encore "au niveau" pour arriver à ce que tu préconises ma difficulté étant de faire passer le non des champ à contrôler à la fonction.

    En tout cas merci beaucoup

    Oliv'

  5. #5
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    bonjour
    Dans ce cas ceci devrais suffire;non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Ctrl As Control
        For Each Ctrl In Me.Controls
            If TypeOf Ctrl Is TextBox Then
                If Ctrl.Value = "" Or IsNull(Ctrl.Value) Then
                        MsgBox "Il manque des informations ici: " & Ctrl.name, vbOKOnly + vbExclamation, "Sélection"
                        Ctrl.SetFocus
                        Exit Sub
                End If
            End If
        Next Ctrl
    @+

Discussions similaires

  1. [Python 3.X] test d'égalité avec des lancers de dés
    Par bosskev62 dans le forum Général Python
    Réponses: 2
    Dernier message: 07/03/2015, 19h45
  2. Tests de conditions avec des IF
    Par candrau dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/06/2012, 18h14
  3. Between avec des champs de tables
    Par talggir dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/05/2005, 09h11
  4. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  5. [word] Generer un document avec des champs
    Par webbulls dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2004, 10h47

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