attribuer des colonnes a une listbox

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.
 
C

CHti160

Guest
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
 
H

Hervé

Guest
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é
 
H

Hervé

Guest
re

Afin d'argumenter le choix de la deuxième solution, je te propose de regarder la pièce jointe.

Salut
Hervé
 

Pièces jointes

  • Classeur4.zip
    13.3 KB · Affichages: 34
  • Classeur4.zip
    13.3 KB · Affichages: 34
  • Classeur4.zip
    13.3 KB · Affichages: 36
D

dart

Guest
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.
 
H

Hervé

Guest
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é
 
D

dart

Guest
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.
 
H

Hervé

Guest
re re re

en pièce jointe

si tes textbox sont sur un autre userform (ex : userform2):

userform2.textbox1.value=listbox1.list(listbox1.listindex,0)

Salut
Hervé
 

Pièces jointes

  • Classeur4.zip
    15.4 KB · Affichages: 41
  • Classeur4.zip
    15.4 KB · Affichages: 32
  • Classeur4.zip
    15.4 KB · Affichages: 34

Discussions similaires

Statistiques des forums

Discussions
312 438
Messages
2 088 417
Membres
103 847
dernier inscrit
Girardon