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 :

Requête multicritères booléen [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut Requête multicritères booléen
    Bonjour à tous,
    Je suis relativement novice en VBA, cependant j'aimerais rajouter une fonction de recherche multicritères à ma base de donnée.

    Nom : Films 2.jpg
Affichages : 201
Taille : 4,9 Ko

    Il s'agit d'une base de donnée de films : il y a plusieurs champs booléen qui déterminent le type de support (VHS, LD, DVD, BD, etc...), ainsi que la version (VO). Ce que je voudrais obtenir, c'est un sous-formulaire, dans lequel on coche les différents supports et ou version, qui servirait à créer dynamiquement une requête sur base des champs choisi pour me restituer la liste des enregistrements où la valeur de ces champs est "Vrai".

    Nom : Films 1.jpg
Affichages : 211
Taille : 17,2 Ko

    Par exemple, si je coche LD et BD, la requête m'affiche les films que je possède en LD ET en BD.

    D'avance merci pour votre aide,
    Gaston

  2. #2
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut
    Il y a un module "recherche" sur DEV. Ça tombe bien, nul besoin d'être novice, initié ou expert en vba.
    ici et .
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Merci hyperion13,

    J'avais déjà consulté la recherche multicritères de Charles A., mais ce n'est pas vraiment ce que je recherche. Je regarde l'article de Jean Ballat et je reviens vers vous.

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Sans passer par une req.
    A tester et à adapter à ton IHM
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub FilterForm()
    Dim strWhere As String
    If Me.chkvhs = True Then
        strWhere = "AND [vhs] = True"
    End If
    If Me.chkld = True Then
        strWhere = strWhere & " AND [ld] = True"
    End If
    If Me.chkdvd = True Then
        strWhere = strWhere & " AND [dvd] = True"
    End If
    If Me.chkbd = True Then
        strWhere = strWhere & " AND [bd] = True"
    End If
    If Me.chkcopie = True Then
        strWhere = strWhere & " AND [copie] = True"
    End If
    If Me.chkvo = True Then
        strWhere = strWhere & " AND [vo] = True"
    End If
    If strWhere = "" Then
        Me!frm_film_sf.Form.FilterOn = False
    Else
        strWhere = Mid(strWhere, 5)
        Me!frm_film_sf.Form.Filter = strWhere
        Me!frm_film_sf.Form.FilterOn = True
    End If
    End Sub
    Private Sub btnfiltre_Click()
    FilterForm
    End Sub
    Private Sub btnreset_Click()
    Me!frm_film_sf.Form.FilterOn = False
    Me.chkvhs = False
    Me.chkld = False
    Me.chkdvd = False
    Me.chkbd = False
    Me.chkcopie = False
    Me.chkvo = False
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Un grand merci pour ton aide hyperion13, mais je suis un peu perdu (je suis novice en la matière).
    Je suppose que FilterForm est le formulaire principal et frm_film_sf le sous-formulaire et que tout le code est mis dans le formulaire principal ?

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Re
    Sub FilterForm() est une proc. qu'il faut coller dans le form principal.
    frm_film_sf est effectivement le sform.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    J'obtiens l'erreur suivante :

    Nom : erreur1.jpg
Affichages : 185
Taille : 13,2 Ko

  8. #8
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Vérifier le nom de l'objet inséré dans le form
    Images attachées Images attachées  
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Ça commence à prendre forme, mais dans mon sous-formulaire j'obtiens seulement un record à la place d'une liste des films qui répondent aux critères.

    Nom : Films.jpg
Affichages : 188
Taille : 23,9 Ko

  10. #10
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Citation Envoyé par Gaston62 Voir le message
    ...mais dans mon sous-formulaire j'obtiens seulement un record à la place d'une liste des films qui répondent aux critères.
    Sauf si vous avez plusieurs enregistrements de l'Odyssée de l'Espace au format vhs, bd, copie, vo avec le filtre vous ne pouvez avoir qu'un seul résultat.
    en attache un exemple modifié
    Fichiers attachés Fichiers attachés
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    OK, ça marche. Voici les fautes que j'avais commises sur frm_film

    chkvhs source contrôle : vhs
    chkld source contrôle : ld
    etc...

    Là, je ne sais pas comment mais les champs pères et champs fils de frm_film_sf étaient mis à N°

    Un tout grand merci pour ton aide hyperion13.

    Dernière petite question, je voudrais que le sous-formulaire s'ouvre dans une autre fenêtre.
    Comment faut-il procéder ?

    Cordialement,
    Gaston

  12. #12
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Un truc comme ça
    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
    24
    25
    26
    27
    28
    29
    Private Sub btnfiltre_Click()
    Dim strWhere As String
    strWhere = ""
    If Not IsNull(Me.cbofilm) And Me.cbofilm <> "" Then
        strWhere = "AND [film] = '" & Me.cbofilm & "'"
    End If
    If Me.chkvhs = True Then
        strWhere = strWhere & " AND [vhs] = True"
    End If
    If Me.chkld = True Then
        strWhere = strWhere & " AND [ld] = True"
    End If
    If Me.chkdvd = True Then
        strWhere = strWhere & " AND [dvd] = True"
    End If
    If Me.chkbd = True Then
        strWhere = strWhere & " AND [bd] = True"
    End If
    If Me.chkcopie = True Then
        strWhere = strWhere & " AND [copie] = True"
    End If
    If Me.chkvo = True Then
        strWhere = strWhere & " AND [vo] = True"
    End If
    If strWhere <> "" Then
        strWhere = Mid(strWhere, 5)
    End If
    DoCmd.OpenForm "frm_film1", acViewNormal, , strWhere
    End Sub
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  13. #13
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Quelle est la source de cbofilm ?
    Doit-elle être crée dans le nouveau formulaire frm_film1 ?

  14. #14
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Event Gotfocus() de la cbo
    Citation Envoyé par Gaston62 Voir le message
    Quelle est la source de cbofilm ?

    ben non.
    Citation Envoyé par Gaston62 Voir le message
    Doit-elle être crée dans le nouveau formulaire frm_film1 ?
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  15. #15
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Je comprends ton étonnement (), mais mes connaissances en VBA sont limitées.
    J'ai beau chercher, mais je ne vois pas d'où viennent le combo "cbofilm" et le formulaire "frm_film1"

  16. #16
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Alt F11 pour ouvrir l'environnement VBA
    Un peu de lecture pour comprendre le vba sous Access. L'histoire commence ici.

    le postulat initial filtrer un sform selon un jeu booléen
    le postulat change à votre initiative, vous voulez afficher le résultat dans un autre form.
    j'ai donc créer cet autre form que j'ai nommé frm_film1 en affichage datasheet.
    la combobox remplace votre textbox, plus simple pour récupérer une valeur que de saisir la valeur surtout avec 2001, L'odyssée de l'espace. Combien vont oublier de saisir la virgule après 2001 ?
    Fichiers attachés Fichiers attachés
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  17. #17
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2019
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2019
    Messages : 52
    Points : 21
    Points
    21
    Par défaut
    Le frm_film1 en affichage datasheet est exactement ce qu'il me fallait.

    La raison pour laquelle je voulais un formulaire séparé est le manque de place sur le formulaire père ; l'affiche du film prend la moitié de l'écran. Désolé d'avoir changé de postulat en cour de route.

    J'ai appris pas mal de chose avec cette discussion, je ne regrette pas de m'être inscrit sur ce forum.

    Encore merci pour ta patience,
    Gaston

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête multicritères avec listing et export vers excel
    Par pochagnole dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/08/2008, 16h38
  2. [SQL] Requête Multicritère Vba
    Par holoaccess dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/04/2007, 11h00
  3. Filtre ou Requête multicritère avec case coché
    Par StelproJoe dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/02/2007, 21h16
  4. [SQL] Requête multicritères et implode
    Par djedje37et28 dans le forum PHP & Base de données
    Réponses: 30
    Dernier message: 11/08/2006, 16h02
  5. Requête multicritère PHP-Mysql
    Par pod1978 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/05/2006, 18h42

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