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

IHM Discussion :

Filtrer Recordset à partir de valeurs zone de liste


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut Filtrer Recordset à partir de valeurs zone de liste
    Bonjour à tous,
    j'ai une zone de liste, avec choix multiple autorisé, contenant une colonne du type texte et une colonne de type numérique. Je souhaite ouvrir un RecordSet qui sera filtrer en fonction de toutes les valeurs selectionnées dans la zonne de liste.

    Illustration :
    Zone de liste :
    colonne1 : AG 01, AG 02, AG 03, ....
    colonne2: 1, 2, 3, 4, ....

    Si je sélectionne les trois premières lignes de la zone de liste, par exemple, je souhaite ouvrir le RecordSet en le filtrant en fonction de la selection. Et aussi compter le nombre d'enregistrement qu'il contient.

    Est-ce que quelqu'un peut m'aider ? Je galère !

  2. #2
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    A titre d'exemple, tu trouveras un exemple qui répond (en partie) à tes questions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cmdFiltre_Click()
        Dim varI As Variant
        Dim sFiltre As String
        sFiltre = ""
        If Me.lstMarques.ItemsSelected.Count = 0 Then
            MsgBox "Aucune marque n'a été sélectionnée"
        Else
            For Each varI In Me!lstMarques.ItemsSelected
                If sFiltre <> "" Then sFiltre = sFiltre & " OR "
                sFiltre = sFiltre & "[Marque]=" & Me!lstMarques.ItemData(varI)
            Next varI
            DoCmd.OpenForm "frmModeles", acNormal, , sFiltre
        End If
    End Sub
    Tu pourras utiliser sFiltre pour définir la condition WHERE de ton recordset.

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    Bonjour,
    j'ai essayé de tester le code. Mais j'ai un p'tit soucis. En fait je veux après avoir fait le filtrage, afficher dans un MsgBox le nombre d'enregistrements. As-tu une idée ?

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    As-tu testé sur clic d'un bouton de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Msgbox (Me.lstMarques.ItemsSelected.Count & "enregistrement(s)")
    Il faut bien sûr remplacer lstMarques par le nom de ta liste...

  5. #5
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 406
    Points : 1 683
    Points
    1 683
    Par défaut
    J'ai peut être mal compris si c'est le nombre d'enregistrements résultant de ta liste multiple.

    Dans ce cas, tu crées ton recordset en utilisant comme je te le disais
    Tu pourras utiliser sFiltre pour définir la condition WHERE de ton recordset.
    et tu comptes les enregistrements résultant en DAO (cf. l'excellent tuto de Christophe Warin) : Accès aux données : DAO

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 41
    Points : 34
    Points
    34
    Par défaut
    J'ai testé sur click d'un bouton. Le code que j'ai utilisé est le suivant :
    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 cmdFiltre_Click()
        Dim varI As Variant
        Dim sFiltre As String
        Dim MaBD As Database
        Dim MaRequete As Recordset
        Dim NbEnreg As Integer
     
        sFiltre = ""
        If Me.choix_proprietaire.ItemsSelected.Count = 0 Then
            MsgBox "Aucune marque n'a été sélectionnée"
        Else
            For Each varI In Me!choix_proprietaire.ItemsSelected
                If sFiltre <> "" Then sFiltre = sFiltre & " OR "
                sFiltre = sFiltre & "[code_secteur]=" & Me!choix_proprietaire.ItemData(varI)
            Next varI
     
       Set MaBD = CurrentDb()
       Set MaRequete = MaBD.OpenRecordset("R_proprietaire_publipostage", sFiltre)
       NbEnreg = MaRequete.RecordCount
       MsgBox NbEnreg
     
       End If
    End Sub
    avec code_secteur, de type texte, et colonne de ma zone de liste.

    Il me dit qu'il y a une erreur de conversion de type de données.

Discussions similaires

  1. [AC-2002] Filtrer un sous formulaire à partir d'une zone de liste
    Par peacefull dans le forum IHM
    Réponses: 4
    Dernier message: 30/10/2009, 15h29
  2. [AC-2007] Filtrer Etat à partir d'une zone de liste
    Par David42000 dans le forum IHM
    Réponses: 3
    Dernier message: 24/07/2009, 11h30
  3. zone de liste à partir d'une zone de liste
    Par ludo50 dans le forum Access
    Réponses: 3
    Dernier message: 22/11/2006, 20h17
  4. Réponses: 5
    Dernier message: 11/08/2006, 22h14
  5. requête à partir d'une zone de liste multiple??
    Par chambon.denis dans le forum Access
    Réponses: 5
    Dernier message: 23/01/2006, 10h46

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