1 pièce(s) jointe(s)
Nommer des colonnes dans une ListBox
Bonjour à tous!
Des petites explications s'imposent.
je vous mets le contexte: j'ai dans un tableau en 10x4 différents fruits avec différentes variétés et d'autres données comme la quantité de la variété en stock ou son numéro de référence. En appuyant sur le bouton à coté du tableau, le fichier ouvre un formulaire. Je voulais que dans ce formulaire on puisse sélectionner le type de fruit avec une ComboBox et récupérer les données de chaque variété de ce fruit dans une ListBox adjacente. Après quelques galères j'ai réussi à faire marcher le code de cette façon.
Il reste un dernier petit problème que je n'arrive pas à résoudre. Dans ma ListBox j'aimerais pouvoir nommer mes Headers dans les 4 colonnes pour plus d'ésthétisme et de facilité de lecture. Mais j'ai pas trouvé la solution. De ce que j'ai compris on ne peut le faire qu'avec la propriété RowSource mais en l'essayant le logiciel me renvoie le message "Propriété ou méthode non gérée par cet objet".
J'utilise pourtant la partie Initialiser du UserForm.
Voici mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Private Sub ComboBox1_Change()
Dim k As Integer
ListBox1.Clear
For k = 2 To Sheets("Feuil1").Range("A65536").End(xlUp).Row
If ComboBox1.Value = Sheets("Feuil1").Range("A" & k).Value Then
ListBox1.AddItem Sheets("Feuil1").Range("A" & k).Value
ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Sheets("Feuil1").Range("B" & k).Value
ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Sheets("Feuil1").Range("C" & k).Value
ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Sheets("Feuil1").Range("D" & k).Value
End If
Next k
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer, TV As Variant
'Initialisation de la ComboBox
For i = 2 To Sheets("Feuil1").Range("A65536").End(xlUp).Row
ComboBox1 = Sheets("Feuil1").Range("A" & i)
'Supprimer les doublons
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem (Sheets("Feuil1").Range("A" & i))
Next i
ComboBox1.Value = ""
TV = Sheets("Feuil1").Range("A1").CurrentRegion
Me.ListBox1.ColumnCount = 5
Me.ListBox1.ColumnHeads = True
Me.ListBox1.List = TV
End Sub |
Des idées? C'est peut-être simple mais je suis débutant.
Pardon d'avance pour le dérangement et merci ^^