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 :

[État]Comment afficher uniquement les sélections d'une liste à choix multiples ?


Sujet :

IHM

  1. #1
    Membre régulier
    Femme Profil pro
    Développement de produit
    Inscrit en
    Juin 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développement de produit
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2006
    Messages : 124
    Points : 106
    Points
    106
    Par défaut [État]Comment afficher uniquement les sélections d'une liste à choix multiples ?
    Bonjour,

    Je suis actuellement en train d'essayer de créer un état à partir d'un formulaire qui contient des listes déroulantes, des listes non déroulantes à choix multiples, des cadres de texte et des groupes d'option.

    J'arrive à afficher correctement le contenu des listes déroulantes (http://www.developpez.net/forums/sho....php?t=176204).
    J'arrive également à faire afficher dans mon état le contenu des listes non déroulantes, à sélection multiple.
    Cependant j'aimerai faire apparaître uniquement les choix réalisés par l'utilisateur dans le formulaire.

    Dans les propriétes de la liste de l'état, j'ai mis :
    - dans "Source du contrôle" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Formularios]![Prueba]![B_desc].Column(0)
    où Prueba est le nom de mon formulaire, B_desc le nom de mon champ avec le numéro de colone dans la table correspondante, t_B.

    - dans "Source données" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [t_B].[B_desc], [t_B].[B_id] FROM t_B;
    Je ne vois pas du tout comment faire en VBA pour affiche uniquement le ou les sélections réalisées par l'utilisateur

    Est-ce que quelqu'un aurait une idée du code à mettre ou de la manip à réaliser ?

    Merci beaucoup d'avance

  2. #2
    Membre régulier
    Femme Profil pro
    Développement de produit
    Inscrit en
    Juin 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développement de produit
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2006
    Messages : 124
    Points : 106
    Points
    106
    Par défaut
    Bonjour à nouveau !

    Cette fois, ça y est, ça marche !! Je suis arrivée à résoudre mon problème toute seule. Je marque ma solution au cas où ça soit utile pour d'autres ayant rencontré le même problème et j'élimine mes posts inutiles précédents.

    Le contexte :

    J'ai un formulaire et un état. Dans le formulaire, l'utilisateur réalise différents choix sur diverses listes, en particulier des listes à sélection multiple. Quand il a terminé, il dispose d'un bouton de commande pour visualiser le formulaire sous forme d'état (il existe un 2ème bouton pour imprimer).

    L'objectif :

    Faire afficher uniquement les choix réalisés dans une liste à sélection multiple d'un formulaire (et pas toute la liste...)

    Solution :

    1- Faire générer une liste de valeurs:

    Dans le générateur de codes du formulaire, on écrit le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub AllSelectedData()
        Dim frm As Form, ctl As Control
        Dim varItm As Variant, intI As Integer
     
        Set frm = Forms!Prueba
        Set ctl = frm!zona_desc
        For Each varItm In ctl.ItemsSelected
            For intI = 0 To ctl.ColumnCount - 1
                Debug.Print ctl.Column(intI, varItm)
            Next intI
            Debug.Print
        Next varItm
    End Sub
    où Prueba est le nom de mon formulaire et zona_desc le nom de ma liste à sélection multiple.

    2-Appeler cette liste de valeur depuis l'état

    Ensuite, dans les propriétés de l'état, onglet Évènement, ligne, au moment d'Ouvrir, je marque le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Report_Open(Cancel As Integer)
     
        Dim frm As Form, ctl As Control
        Dim varItm As Variant, intI As Integer
     
        Set frm = Forms!Prueba
        Set ctl = frm!zona_desc
     
        Me.zona_desc.RowSource = ""
        For Each varItm In ctl.ItemsSelected
            Me.zona_desc.RowSource = Me.zona_desc.RowSource & ctl.Column(1, varItm) & ";"
        Next varItm
    End Sub
    où le numéro de la colonne correspond à la colonne -1 que l'on veut faire afficher.

    Ensuite dans les propriétés de la liste de l'état, onglet Données, je marque dans Type d'origine de la rangée Liste de valeurs


    Voilà, normalement ça marche !! En tout cas moi j'ai ce qu'il faut !! J'espère n'avoir rien oublié.
    J'espère que j'ai été assez claire et que ça va servir à d'autres !!

    Bon courage !!

+ 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éponses: 2
    Dernier message: 10/07/2009, 19h17
  4. Réponses: 3
    Dernier message: 12/05/2009, 19h07
  5. Réponses: 2
    Dernier message: 03/03/2009, 17h10

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