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 :

Récupérer les valeurs d'une combo box multiple [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut Récupérer les valeurs d'une combo box multiple
    Bonjour, et très bonne année 2015 à vous !

    Je suis actuellement en train d'apprendre Access en créant une base de donnée de film
    Je me trouve actuellement face à un problème concernant la récupération de valeurs d'une combo box :

    J'ai une table T_Pays qui contient une liste de pays (NumPays ; NomPays).

    Ces pays déterminent la nationalité du film (Provenance du financement).
    Or, il se trouve qu'un film n'a pas forcément qu'une seule nationalité.
    C'est pourquoi j'ai utilisé, sur mon formulaire une combo box (cboPays) qui autorise les valeurs multiples.

    J'aimerais ensuite utiliser cette information pour afficher dans une ImageBox (imgFlag), le drapeau du pays concerné.

    La source de ce contrôle est donc : ="D:\Access\FilmdB\Images\Flags\" & [cboPays].[column](2) & ".jpg"
    Avec, vous l'aurez compris, dans le dossier en question, toute une série d'images de drapeau.

    Or, celà fonctionne bien avec les films ayant une nationalité unique, mais pas avec ceux ayant double nationalité.
    Celà ne m'étonne pas trop, et dans l'idée, j'aurais pu mettre une image représentant une double nationalité.
    J'ai donc tapé [cboPays].[column](2) dans un TextBox pour voir le résultat, et c'est là que je suis surpris : L'absence de valeur.
    Alors que j'obtiens : USA, ou France lorsqu'il n'y a une seule valeur, je n'obtiens rien lorsqu'elles sont multiples.
    Pourtant : [cboPays] donne un résultat numérique séparé par des ";". On pourrait s'attendre a avoir la même chose sur la colonne 2, non ?

    J'espère avoir été assez clair, désolé si c'est le cas contraire, je suis en plein apprentissage ;-)

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Korleone,

    La seule technique valable consiste à parcourir les différentes valeurs de ta zone de liste et vérifier grâce à la propriété itemselected les lignes sélectionnées :

    http://msdn.microsoft.com/fr-fr/libr...ffice.15).aspx

    un exemple d'inspiration ici :

    http://www.developpez.net/forums/d61...hoix-multiple/

    Bonne continuation

    jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut
    Merci pour le coup de main, mais je dois mal m'y prendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub cboPays_AfterUpdate()
    Dim ctl As Control
    Dim vSel As Variant, strSelection As String
     
    Set ctl = Me.cboPays
    For Each vSel In ctl.ItemsSelected
        strSelection = strSelection = strSelection & Me.cboPays.ItemData(vSel) & vbCrLf
    Next
    strSelection = strSelection & Me.cboPays.ItemData(vSel) & vbCrLf
    MsgBox strSelection
    End Sub
    Chez moi, ctl.ItemsSelected semble toujours valoir 0. Du coup, on ne rentre pas dans la boucle.
    Pourtant, ctl.ItemsSelected.Count = 2

    Sur ta base, j'ai juste changé de méthode, car je sais que la séparation entre 2 valeurs est "; "
    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 cboPays_AfterUpdate()
    Dim ctl As Control
    Dim vSel As Variant, strSelection As String
    Dim NbPV As Integer
    Dim strTab() As String
     
    Set ctl = Me.cboPays
    strTab = Split(ctl.SelText, "; ")
    NbPV = UBound(strTab())
    For vSel = 0 To NbPV
        strSelection = strSelection & " " & strTab(vSel) & vbCrLf
    Next vSel
    MsgBox strSelection
    End Sub
    Cette solution est même trop développée pour ma recherche, puisqu'au final, je n'ai besoin que de savoir si le résultat est unique ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ctl.ItemsSelected.Count

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Korleone,

    euh résolu ou non

    jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut
    Disons que j'ai réussi (ou je pensais avoir réussi) à me dépatouiller de mon problème, mais je ne comprends pas pourquoi la procédure que tu m'as indiqué ne fonctionnait pas dans mon cas.

    Si quelqu'un peut y consacrer un peu de temps, ça m’intéresse néanmoins.

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Korleone

    j'essaie de te faire un exemple rapidement

    jimbo
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  7. #7
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Korleone,

    Comme promis je te joins deux techniques permettant d'arriver à tes fins :

    technique 1 : parcourt uniquement les entrées sélectionnées et concatène dans une variable msg les résultats escomptés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Commande2_Click()
    '
    For Each vsel In Me.cboPays.ItemsSelected
        msg = msg & Me.cboPays.Column(0, vsel) & "-" & Me.cboPays.Column(1, vsel) & vbCrLf
    Next
        Me.Result = msg
    End Sub
    technique 2 : parcourt toutes les entrées, vérifie la sélection et concatène dans une variable msg les résultats escomptés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande3_Click()
    If Me.cboPays.ItemsSelected.Count > 0 Then
        For vsel = 0 To Me.cboPays.ListCount - 1
            If Me.cboPays.Selected(vsel) Then
                msg = msg & Me.cboPays.Column(0, vsel) & "-" & Me.cboPays.Column(1, vsel) & vbCrLf
            '
            End If
        Next vsel
    End If
        Me.Result = msg
    End Sub
    A toi d'adapter tout çà suivant ta problématique, le reste ne devrait pas te poser de problèmes.

    je te joins la base ayant servi d'exemple.

    bonne continuation

    jimbolion
    Fichiers attachés Fichiers attachés
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut
    Merci pour le temps passé.
    J'utilisais une Zone de Liste déroulante du coup, je n'avais pas accès a la propriété ListBox.MultiSelect.
    Le mode de sélection se passe avec des cases à cocher et un bouton de validation (OK ou Cancel).
    Je pense que c'est ce qui causait mon problème.

    Tout compte fait, je pense que ta solution est meilleure.

    Encore merci pour l'aide apportée.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  2. Récupérer les valeur d'une liste à choix multiple
    Par steeveb dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/04/2012, 08h26
  3. Récupérer les valeurs d'une liste déroulante multiple
    Par noobyyy dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 27/05/2010, 22h43
  4. Réponses: 3
    Dernier message: 12/05/2009, 19h07
  5. Réponses: 4
    Dernier message: 13/11/2006, 17h49

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