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

Macros et VBA Excel Discussion :

transfert éléments d'un combo dans listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 52
    Par défaut transfert éléments d'un combo dans listbox
    Bonjour,
    J'ai créé un comboBox, sur un userForm avec propriété RowSource qui charge une plage de 3 colonnes d'une base de données .
    Je voudrais que l'utilisateur puisse sélectionner un ou plusieurs éléments (en appuyant sur CTRL).. c.a.d. une ligne de 3 colonnes et les ajouter dans une listBox vide
    Quelqu'un pourrait-il me rendre le service de m'indiquer le code VBA susceptible de faire cela ? Je l'en remercie d'avance
    J.Avnaim

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonsoir,

    Un ComboBox ne permet pas la multisélection, on ne peut y sélectionner qu'un élément à la fois, il y a moyen de transférer les données à chaque sélection mais est-ce vraiment le bon choix d'utilisation ? Si on clic par erreur sur une ligne, les données seront transférées avant qu'on ait pu dire "zut..."

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 52
    Par défaut
    Bonjour et Merci Fring pour les conseils que tu me donnes.
    Je vais tâcher de mieux expliciter mon problème.
    Voila j'ai une grosse base de données alimentaires qui s'étend sur 8 feuilles.
    Chaque feuille est une catégorie d'aliments dont les lignes vont de B7 à T100.
    Denrée, Type, Calories, lipides………………………………..vitamine E déterminé pour 100gr.
    J'ai fait un UserForm qui contient : un comboBox , une listeBox, 8 boutons d'options

    Code de chaque bouton : (avec N° de bouton et feuille propre à chacun d'eux )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub OptionButton1_Click()
     ComboBox1.RowSource = ""
      Feuil4.Activate
    ComboBox1.RowSource = "$B$7:$C$100"
    End Sub
    Donc quand je clique sur un bouton Chaque ligne de mon comboBox est constituée d'une plage de 2 cellules de la base sur 93 lignes. Ce que je voudrais que mon code VBA fasse, c'est:
     Détecter la sélection de l'utilisateur et copier chaque ligne sélectionnée dans la liste
     Puis avec un inputBox ajouter à la liste la quantité en grammes de chaque denrées (il s'agit d'une recette cuisine pour un certain nombres de personnes ) qui compose la recette
     Enfin avec ces éléments je pense pouvoir faire une formule (règle de 3 mes capacités math ne vont pas bien loin) et afficher à l'utilisateur ce que chaque personne aura absorbé en calories, protides, glucides, …..minéraux…..vitamines
    Penses tu que mes élucubrations soient possibles en parlant VBA ??
    Re-merci
    Avnaim

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    VBA permet d'aller bien au-delà de nos élucubrations

    Pour transférer les éléments sélectionnés dans le Combo (un à un) vers une ListBox, la procédure est la suivante
    Code à insérer dans l'objet UserForm : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ComboBox1_Change()
    Me.ListBox1.AddItem Me.ComboBox1.Value
    End Sub

    Il me semble que l'on pourrait se passer de l'étape transfert du ComboBox vers la ListBox, pourquoi ne pas directement charger une ListBox avec les données dans laquelle l'utilisateur pourrait faire une multisélection des ingrédients ? Ensuite via un bouton "valider" par exemple, les données sélectionnées seraient transférées vers ...(ce que tu veux) en faisant apparaître éventuellement une InputBox pour chaque donnée.

    C'est juste un avis personnel.
    Je t'invite à jeter un oeil sur le lien ci-dessous qui explique les différentes manipulations possibles.
    http://silkyroad.developpez.com/VBA/ControlesUserForm

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 52
    Par défaut
    Merci mille fois Fring ! tu est ma bouée de sauvetage

    J'ai utilisé ton code pour mon comboBow :Me.ListBox1.AddItem Me.ComboBox1.Value
    Cela fonctionne parfaitement mais je croyais obtenir les deux éléments qui composent mon combo mais je n'obtiens que l'élément de gauche. J'ai alors suivi tes conseils en m'orientant vers la listeBox.
    J'ai tenté la liste box avec même code dans propriété RowSource $B$7:$C$100 j'obtiens bien les deux colonnes mais réunies en une seule !
    J'ai fait alors 2 listBoxs et une troisième pour transférer ça marche mais ce n'est pas génial
    J'ai farfouillé des heures dans les bouquins pour finalement deviner qu'il faut modifier la propriété ColonneCount et la mettre à deux et oh miracle !! j'ai obtenu exactement ce que je voulais.
    Une petite sub comme celle-ci pour chaque bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub OptionButton1_Click()
     ListBox1.RowSource = ""
      Feuil4.Activate
    ListBox1.RowSource = "$B$7:$C$100"
    End Sub
    Je peux maintenant essayer d'aller + loin récupérer les sélections, faire ajouter les quantités puis exécuter la règle de trois. Pour un nul comme moi et surtout à 90 ans c'est du boulot mais ça me distrait et m'entretient les neurones.
    Ps. j'ai noté ton proverbe chinois citation magnifique. Je constate que tu dois être quelque peu philosophe

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Re,

    Bravo pour ce début encourageant
    Je pense que le lien ci-dessous va t'aider à avancer

    http://silkyroad.developpez.com/VBA/ControlesUserForm/

    N'hésite pas si besoin d'aide

    PS : il fallait également mettre la propriété ColumnCount du ComboBox à 2 mais pour autoriser une multisélection, il vaut mieux opter pour une ListBox en n'oubliant pas...d'adapter sa propriété MultiSelect

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2010, 08h46
  2. Transfert de données dans listbox
    Par silver.beach dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/05/2010, 18h32
  3. sélectionner un élément d'une matrice dans listbox
    Par jane40 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 29/04/2009, 20h05
  4. [VB.NET] Associer une clé aux éléments d'une combo
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/03/2009, 14h52
  5. Éléments de couleurs différentes dans un CheckListBox
    Par shogoune dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/06/2003, 20h17

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