Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

remplir une lisbox a partir d'une feuille

A

Akeya06

Guest
Bonjour à tous,

Etant novice en VBA et sur ce forum, j'ai parcouru les messages concernant les listbox mais n'ai pas trouvé mon bonheur.
Ceque j'aimerai faire c'est remplir une listbox à 2 colonnes a partir d'une feuille. C'est à dire récupérer les données de la colonne A et B dans ma listbox. J'espère avoir été assez clair...

D'avance merci à vous et bravo pour ce forum...
 
R

Rai

Guest
Bonsoir,

Alors, tu as 2 solutions.

1. Tu affectes les propriétés nécessaires (cf. ci-après) lors de la conception, en utilisant la fenêtre des Propriétés de l'éditeur VBE

2. Tu affectes les propriétés par le biais du Code VBA, lors de l'initialisation de ta UserForm.


Les propriétés dont tu as besoin :
ColumnCount (=2 dans ton cas)
qui indique combien de colonnes sont présentes dans ta ListBox

RowSource (=Feuil1!A1:B6 par exemple)
Pour indiquer où trouver les données

BoundColumn (=1 pour utiliser l1ere colonne)
Pour indiquer quelle est la colonne significative sur les 2

Si besoin :
ControlSource (Feuil2!A1 par ex.)
qui indique quelle cellule de ton classeur donne et reçoit l'info sélectionnée
L'info provenant de la colonne indiquée par BoundColumn


------

Avec ça, tu devrais t'en sortir.
Sinon, reviens-nous poser des questions, tu es le bienvenu

Bonne soirée

Rai
 
A

Akeya06

Guest
Bonjour Rai et re le forum,

Merci pour ta réponse aussi rapide. Je ne comprends pas tout mais je vais plancher pour voir comment faire avec les infos que tu m'as donné, mon problème étant la syntaxe.

Encore mille merci....
 
M

myDearFriend

Guest
Bonjour Akeya06, Rai,

En complément de la réponse de l' excellent Rai (que je salue au passage), si on souhaite éviter l'utilisation de la propriété RowSource (non compatible avec Mac) et si le nombre d'éléments en colonne A ou B est susceptible de varier, on peut faire aussi comme ça :

   Dim L As Long, L1 As Long, L2 As Long
   ListBox1.ColumnCount = 2
   With Sheets(1)
      L1 = .Range("A65536").End(xlUp).Row
      L2 = .Range("B65536").End(xlUp).Row
      L = Application.WorksheetFunction.Max(L1, L2)
      ListBox1.List = .Range(.Cells(1, 1), .Cells(L, 2)).Value
   End With

Cordialement.

Didier_mDF
 
R

Rai

Guest
Re-,

OK, disons que tu veux gérer ta ListBox lors de l'initialisation de ta UF (UserForm), et que ta ListBox porte le joli nom de MaListe.

Alors ouvre l'éditeur VBE (en théorie c'est déjà fait), un petit clic-droit sur ta UF, tu choisis 'code' et tu insères le code suivant :

Private Sub UserForm_Initialize()
MaListe.ColumnCount = 2
MaListe.BoundColumn = 1
MaListe.RowSource = "Feuil1!A1:B6"
MaListe.ControlSource = "Feuil1!D1"
End Sub


Tu reviens vers ton classeur XL, tu mets des données dasn A1:B6 de ta Feuil1.
Ensuite, tu exécute ta UF, et tu observe ce qui se passe ;o))

A bientôt (et avec plaisir)

Rai
 
A

Akeya06

Guest
Rai, MyDearFriend, et le forum...

Merci pour vos précieux renseignements et votre disponibilité. Je vais de ce pas appliquer vos infos et reviendrai vous donner des infos sur l'avancement de mon travail....

encore merci à vous tous...
 
A

Akeya06

Guest
Déja de retour,


Rai, le code que tu m'as donné est exactement ce que je cherchais. La petite chose que je voulais faire c'est lorsque je sélectionne 1 ou plusieurs lignes de la listbox, les infos aillent s'écrirent dans la feuille 2 en B5 par exemple.


Merci....
 
R

Rai

Guest
Salut Patrick,

Ya pas de propriété LinkedCell, du moins sur Excel XP sous Windows, pour l'objet ListBox.


Bonsoir Didier,

Je ne savais pas que sur Mac la propriété .RowSource ne fonctionnait pas. Pourtant j'ai travaillé un certain temps avec des macs, même si ça date un peu maintenant.

Merci pour cette info, j'en tiendrai compte pour garantir l'interopérabilité.

Bonne soirée

Rai
 
M

myDearFriend

Guest
Re- tout le monde

Patrick,

Tout dépend de quoi on parle :

- s'il s'agit d'une ListBox placée directement sur une feuille de calcul (collection OLEObjects), tu as raison Patrick, la source de données correspond à la propriété ListFillRange et c'est bien LinkedCell qui reçoit la valeur sélectionnée.

- s'il s'agit, par contre, d'une ListBox dans un Userform (et c'est de ça dont nous parlions Rai et moi-même), c'est bien de RowSource et de ControlSource qu'il faut parler.


Cordialement.

Didier_mDF
 
A

Akeya06

Guest
Oups,


Petite précision, lorsque je sélectionne 1 ou plusieurs lignes de la listbox, la colonne 1 de la listbox aillent s'écrirent dans la feuille 2 en B5 et la colonne 2 de la listbox dans la feuille 2 en C5 par exemple.


Bonnée soirée à tous.
 
P

patrick

Guest
My Dear Friends

Merci de ta précision , mais ca n'apparaissait pas asusi clairement ds la 1ere reponse de Rai.

Pour une fois qu'il me semblait pouvoir apporter qqe chose au fil...

Bonne soiree
 
A

Akeya06

Guest
Re: remplir une lisbox a partir d'une feuille et renvoie des données

Bonsoir le forum,

Lorsque je sélectionne 1 ou plusieurs lignes de la listbox (qui comporte 2 colonnes), la colonne 1 de la listbox aillent s'écrirent dans la feuille 2 en B5 et la colonne 2 de la listbox dans la feuille 2 en C5 par exemple.

Cette listbox est dans une USF

Merci de votre patience
 
A

Akeya06

Guest
Données d'une listbox à colonne vers feuille

Bjour le forum,

Voici mon problème. Lorsque je sélectionne 1 ou plusieurs lignes de la listbox (qui comporte 2 colonnes), j'aimerais que la colonne 1 de la listbox aillent s'écrirent dans la feuille 2 en B5 et la colonne 2 de la listbox dans la feuille 2 en C5 par exemple.

Cette listbox est dans une USF

D'avance merci.

Akeya
 
M

myDearFriend

Guest
Re: Données d'une listbox à colonne vers feuille

Bonjour Akeya06,

Ci-joint un petit exemple qui répondra peut-être à ta demande...

Cordialement.

Didier_mDF
 

Pièces jointes

  • PourAkeya06.zip
    14.7 KB · Affichages: 307
  • PourAkeya06.zip
    14.7 KB · Affichages: 287
  • PourAkeya06.zip
    14.7 KB · Affichages: 318

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…