attribuer des colonnes a une listbox

  • Initiateur de la discussion Initiateur de la discussion dart
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

dart

Guest
Salut le forum !

Voila, j'ai une base de donnée qui se presente sous la forme de tableau a 5 colonnes. Je voudrais creer une listbox à 5 colonnes ! Comment dois-je faire pour attribuer une colonne de cette base de donnée à une colonne de la listbox ???

Merci a tous d'avance.
 
Salut"dart"
tu affectes a la propriété Rowsource de ta listBox1 par exemple la plage feuil3!A2:E10
ensuite tu affectes à la propriété
ColumnCount le nombre de colonnes que tu veux voir dans ta listBox1
tu veux voir les 2 premieres colonnes ColumnCount=2
ensuite tu affectes à la propriété
BoundColumn le numero de la colonne dont l'élément sera retourné
par exemple BoundColumn=2
quelque soit la colonne de la listBox1 qui est sélectionné c'est l'élément de la colonne 2 de ton tableau qui sera retourné
en colonne & tu as le nom en colonne 2 le Prénom tu clics sur le nom c'est le prénom qui s'affichera dans la cellule destination
en espérant avoir été clair
n'hésites pas à y revenir lol
A+++
Jean Marie
 
Re

2 solutions :

1) Tu ne veux vraiment que 3 colonnes sur 5 dans la listbox , l’inconvénient est que tu perds l’entête des colonnes :

Private Sub UserForm_Initialize()
Dim l As Integer
Dim cell As Range
Dim z as byte

Me.ListBox1.ColumnCount = 3
l = Sheets("Feuil1").Range("a65536").End(xlUp).Row
For Each cell In Sheets("feuil1").Range("a2:a" & l)
Me.ListBox1.AddItem cell.Value
Me.ListBox1.List(z, 0) = cell.Value
Me.ListBox1.List(z, 1) = cell.Offset(0, 1).Value
Me.ListBox1.List(z, 2) = cell.Offset(0, 4).Value
z = z + 1
Next cell

End Sub


2) tu met toutes les colonnes dans la listbox, mais tu caches les colonnes 3 et 4, ainsi tu gardes les entêtes de colonne :

Private Sub UserForm_Initialize()
Dim l As Integer
Dim Plage As String

Me.ListBox1.ColumnCount = 5
Me.ListBox1.ColumnHeads = True
Me.ListBox1.ColumnWidths = "40 pt;40 pt;0 pt;0 pt;40 pt"

l = Sheets("Feuil1").Range("a65536").End(xlUp).Row
Plage = Sheets("Feuil1").Range("a2:e" & l).Address
ListBox1.RowSource = "Feuil1!" & Plage

End Sub

La deuxième solution à ma préférence : entêtes des colonnes, toutes les données sont dans la listbox, le code s’exécute plus vite.

Salut
Hervé
 
Merci hervé pour tes réponses elles me sont trés utiles !!!
Je sais que j'abuse, mais je voudrais maintenant savoir comment transferer les données que je sélectionne dans la listbox sur une feuille de calcul par exemple. j'ai beau chercher je ne vois pas !!!
Je te remercie encore !!!

Julien.
 
re

En partant du principe que tu à utilisé la 2ème solution :

Private Sub CommandButton2_Click()
Dim l As Integer
l = Sheets("Feuil2").Range("a65536").End(xlUp).Row
With Sheets("feuil2")

.Range("a" & l + 1).Value = ListBox1.List(ListBox1.ListIndex, 0)
.Range("b" & l + 1).Value = ListBox1.List(ListBox1.ListIndex, 1)
.Range("c" & l + 1).Value = ListBox1.List(ListBox1.ListIndex, 4)
End With
End Sub

Salut
Hervé
 
j'ai bien utilisé la deuxieme solutions qui est bcp pluis facile mais comment faire pour tranferer les données de la listbox vers des champs d'une userform déja crée ??
Excuse moi si j'abuse de ton temps !

Merci par avance.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
158
Réponses
2
Affichages
292
Réponses
6
Affichages
262
Retour