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écupérer par vba les éléments d'un champ multivalué dans un formulaire


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Par défaut Récupérer par vba les éléments d'un champ multivalué dans un formulaire
    Bonsoir tous!

    Je me permet de faire resurgir ce sujet
    http://www.developpez.net/forums/d94...s/#post5598424
    puisque:
    1 - il n'a pas été résolu;
    2 - il ne date pas de trop longtp non plus;
    3 - ben c'est qui m'intéresse fortement ce sujet: j'ai exactement le même problème que jollyjohn, à savoir:

    Comment récupérer dans une liste déroulante à choix multiples (source/contenu codé par vba) les éléments d'une autre liste déroulante à choix multiples (qui elle, est modifiable par l'utilisateur)?

    Merci d'avance à tous pour les idées!

  2. #2
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Le principe des listes dépendantes est le suivant :
    la sélection d'un item dans la liste provoque l'ouverture de la liste dépendante dont la source est restreinte aux valeurs égales à celle de la sélection dans la première liste.

    Pour ma part, je suis un adepte du sql pour ce qui est des sources de requêtes, listes....

    Dans le cas d'une liste à choix multiple (zone de liste) la difficulté vient du fait que la construction de la source SQL de la seconde liste va devoir inclure le choix de toutes les valeurs choisies . Il faut falloir donc travailler un peu la chaine SQL avant de la passer comme source.

    Voici comment je vois les choses.


    Sur click d'un choix dans la liste
    Pour chaque item sélectionné dans la liste
    récupérer la valeur du choix
    créer la chaine SQL source de la seconde liste en concaténant son contenu avec " OR monchamp= valeurchoisie"

    une fois tous les item sélectionnés traités, supprimer le premier "OR" de la chaine sql

    Finir la chaine en ajoutant devant les informations de sélection, et derrière les informations de tri éventuels.

    A vous de jouer !
    NE pas hésiter à regarder dans la FAQ sur les listes, il y a une mine d'information.

    Pierre

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Par défaut
    Bien le bonjour pier.antoine,

    A vrai dire, j'avais déjà l'idée, je cherchais plutôt le code.
    Voici le mien pour l'instant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.Liste1.RowSource = "SELECT DISTINCT (Illustrations.[Domaine(s)].Value) AS Expr1 FROM Illustrations ORDER BY (Illustrations.[Domaine(s)].Value);"
    Me.Liste1.Requery
    Me.Liste1.MultiSelect = True
    Le problème vient de la dernière ligne en fait: j'aimerais que cette liste soit à choix multiple mais Access n'a pas l'air de vouloir me laisser faire

    A quoi cela est il du?

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Par défaut
    Les progrès sont en cours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Me.Liste1.RowSource = "SELECT DISTINCT (Illustrations.[Domaine(s)].Value) AS Expr1 FROM Illustrations ORDER BY (Illustrations.[Domaine(s)].Value);"
    Me.Liste1.Requery
     
    ListLine = ""   'initialisation de la boucle
    For j = 1 To Liste1.ListCount  'boucle
    ListLine = ListLine & ";" & Liste1.ItemData(j)  'concaténation
    Next j
    MsgBox ListLine 'reste plus qu'à mettre ça en tant que contenu "Valeur" de la Liste1
    EDIT: bon en fait je n'ai pas l'impression qu'il soit nécessaire de passer par la boucle et le chgmt de type de données accepté dans la liste pour se servir de la fonction MultiSelect(?)
    Quelqu'un sait il pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Liste1.MultiSelect = 1
    ne fonctionne pas?

    EDIT 2: en fait j'ai fini par comprendre que ma liste Liste1 n'était pas une listbox mais une combobox (je vois pas encore trop la différence mais bon). La propriété MultiSelect ne s'applique tout simplement pas aux combobox mais seulement aux listbox (c'était la réponse de l'article cité tout en haut!!!).

    Du coup, maintenant je cherche à transformer ma combobox en liste déroulante à choix multiple, comme celles que l'on défini dès la création d'une table (vous savez, avec les cases à cocher).

    Merci d'avance!

  5. #5
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Plusieurs choses.

    Je ne connais pas Access 2007, mais en version 2003, ni les zones de listes, ni les listes déroulantes ne comportent de case à cocher. Il est possible, je crois de faire ça avec des sous formulaire, mais je n'ai jamais essayé (il y a un tutoriel là dessus).

    Dans Access 2003, pour modifier la nature d'un contrôle faire ceci :
    -en mode création
    - sélectionner la liste déroulante
    - click droit
    - choisir "Remplacer par zone de liste".

    La différence entre les deux c'est que la combobox (ou liste modifiable) accepte que l'on tape du texte. Elle ressemble à une zone de texte d'ailleurs. Vous pouvez afficher la liste des items proposés, mais vous pouvez aussi saisir les premières lettres. Vous pouvez aussi gérer le cas où l'on saisit un item qui n'appartient pas à la liste, et donner la possibilité d'ajouter de nouvelles valeurs à cette liste.

    Par contre, dans une zone de liste, pas de tout ça.
    Vous devez choisir un des items proposés, point.

    Pierre

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 103
    Par défaut
    Salut,

    En fait ici, je parle de ceci: http://office.microsoft.com/global/i...ZA101555031033
    j'ai exactement le même problème que dans ce fil là: http://www.access-programmers.co.uk/...d.php?t=184095

    Apparemment, c'est que ma ListBox est en champ multivalué d'où la possibilité de choisir plusieurs valeurs dans la liste (nouveauté Access 2007).
    Donc pour revenir à mon problème:
    comment remplacer ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Liste1.MultiSelect = 1
    pour qu'il puisse s'appliquer à un champ multivalué de ListBox (spécificité Access 2007)???


    Merci d'avance

Discussions similaires

  1. [Toutes versions] comment récupérer via VBA les arguments d’une fonction excel contenue dans une cellule ?
    Par popaul88 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/08/2014, 18h27
  2. Réponses: 2
    Dernier message: 20/10/2011, 20h54
  3. [SP-2010] filtrer les éléments d'un champ "recherche" dans sharepoint 2010e
    Par francis.richter dans le forum SharePoint
    Réponses: 1
    Dernier message: 10/06/2011, 08h45
  4. Récupérer la/les valeurs d'un champ multivalué
    Par nicolas2603 dans le forum VBA Access
    Réponses: 0
    Dernier message: 13/05/2008, 16h40
  5. Réponses: 6
    Dernier message: 17/10/2006, 19h55

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