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 Multiselect dans une listbox


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 26
    Par défaut Requête Multiselect dans une listbox
    Bonjour,

    J'aimerais exécuter une requête à partir d'une sélection multiple d'une listbox, en cherchant sur le net j'ai trouvé ce code là :

    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
     
    Private Sub Liste55_AfterUpdate()
        Dim itm As Variant
        Dim S, S1 As String
     
     
        For Each itm In Liste55.ItemsSelected
            S = S & Liste55.ItemsSelected(itm) & ","
        Next itm
     
        S = Left(itm, Len(S) - 1)
        S1 = "SELECT YEAR(Match.date) FROM Match WHERE Match.type_match IN(S)"
     
        ComboAnnée.RowSource = S1
    End Sub
    Le but étant de créer une chaine et de l'utiliser pour générer la requête, seulement j'ai le message d'erreur suivant :

    Erreur d'exécution 2480 :
    Vous avez fait référence à une propriété à l'aide d'un argument numérique qui ne fait pas partie des numéros de propriété de la collection

    Quelqu'un peut m'aider à y voir plus clair ?

    Merci bien

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 962
    Par défaut
    Bonsoir,
    c'est peut-être à cause de la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        S1 = "SELECT YEAR(Match.date) FROM Match WHERE Match.type_match IN(" & S & ")"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 26
    Par défaut
    Merci de ta réponse ! J'avais déjà essayé mais l'erreur ne vient pas de là ! Mais c'est vrai la syntaxe était incorrect !

    Le débogage me dit que l'erreur vient de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     S = S & Liste55.ItemsSelected(itm) & ","
    Je vois vraiment pas....

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 962
    Par défaut
    Bonsoir,
    Essaie de remplacer la "," par ";"

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 962
    Par défaut SOLUTION
    J'ai trouvé d'ou vient l'erreur : tu ne récupérais que les index de la multi-sélection, il faut déclarer ta zône de liste en tant que contrôle pour accéder aux données se trouvant dans les colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim objCtl As Control
    Dim itm As Variant
        Set objCtl = Me!Liste55
    	For Each itm In objCtl.ItemsSelected
            S = S & objCtl.Column(0, itm) & " ; "
        Next itm
    0 représente la première colonne de la liste, à changer selon ton besoin

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 26
    Par défaut Ca marche !
    Merci pour ta rep ça marche mais j'ai dû rajouter quelque chose en plus :

    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
    Private Sub Liste55_AfterUpdate()
        Dim itm As Variant
        Dim object As Control
        Dim S, S1, S2 As String
        'S2 =
     
       Set Objctl = Me!Liste55
     
        For Each itm In Objctl.ItemsSelected
            S = S & """" & Objctl.Column(0, itm) & ""","
        Next itm
     
        S = Left(S, Len(S) - 1)
        S1 = "SELECT DISTINCT YEAR(Match.date) FROM Match WHERE Match.Type_Match IN (" & S & ")"
     
        ComboAnnée.RowSource = S1
    End Sub
    En effet comme c'est du texte j'ai dû rajouter les guillemets à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S = S & """" & Objctl.Column(0, itm) & ""","
    J'ai pas compris exactement pourquoi en revanche...

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 10h19
  2. Valeur null dans multiselect d'une listbox
    Par lbar012001 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/11/2009, 13h29
  3. Réponses: 8
    Dernier message: 12/08/2009, 11h32
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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