Bonjour à tous,
Voilà mon problème,
par l'intermédiaire d'un combobox, je sélectionne la feuille que je veux visualiser dans le listbox.
je souhaite ajouter d'autres combobox pour affiner la selection mais je n'y arrive pas.
Merci d'avance pour votre aide
Est-ce que quelqu'un a une idée?
Voici mon code :
Private Sub CommandButton1_Click()
Dim nbLignes As Long, nbColonnes As Long
Dim I As Integer, J As Integer
Dim Largeur As Integer, Tablo()
Dim Formule As String
ReDim Tablo(0)
Sheets(ComboBox2.Text).Activate
nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column
Range(Cells(1, 1), Cells(nbLignes, nbColonnes)).Select
ListBox1.ColumnCount = nbColonnes
ListBox1.RowSource = Selection.Address
'ajuster la largeur des colonnes qui se calcule en Points
'J'ai mis *6, parce que le test semblait correct
'en VB6, on utiliserait Textwidth qui ne semble pas exister sous Excel
'ou ScaleMode, twips, pixels,....
'Vérification des largeurs maximales des colonnes
'On stocke la plus grande valeur de chaque colonne dans un Tableau
For I = 0 To ListBox1.ColumnCount - 1
For J = 0 To ListBox1.ListCount - 1
If Largeur < Len(ListBox1.List(J, I)) * 8 Then
Largeur = Len(ListBox1.List(J, I)) * 8
End If
Next
Tablo(UBound(Tablo)) = Largeur
ReDim Preserve Tablo(UBound(Tablo) + 1)
Largeur = 0
Next
'Avec ce tableau, on génère une formule pour "ColumnWidths"
For I = 0 To UBound(Tablo) - 1
Formule = Formule & Tablo(I) & ";"
Next
'enlever le dernier point-virgule de la chaîne
Formule = Left(Formule, Len(Formule) - Len(Chr(34)))
'ajuster les colonnes d'un coup
ListBox1.ColumnWidths = Formule
End Sub
Private Sub retour_Click()
Me.Hide
End Sub
Private Sub UserForm_Initialize()
' z = Sheets("matériel en stock").Range("A1").Value
ComboBox2.ColumnWidths = "200"
ComboBox2.ColumnCount = 5
ComboBox2.Clear
ComboBox2.AddItem "matériel en stock"
ComboBox2.AddItem "VHL en stock"
ComboBox2.AddItem "Données"
ComboBox2.AddItem "Clients"
ComboBox2.AddItem "DIVERS"
' ComboBox2.Column(3, I) = z
' ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0
End Sub
Voilà mon problème,
par l'intermédiaire d'un combobox, je sélectionne la feuille que je veux visualiser dans le listbox.
je souhaite ajouter d'autres combobox pour affiner la selection mais je n'y arrive pas.
Merci d'avance pour votre aide
Est-ce que quelqu'un a une idée?
Voici mon code :
Private Sub CommandButton1_Click()
Dim nbLignes As Long, nbColonnes As Long
Dim I As Integer, J As Integer
Dim Largeur As Integer, Tablo()
Dim Formule As String
ReDim Tablo(0)
Sheets(ComboBox2.Text).Activate
nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
nbColonnes = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column
Range(Cells(1, 1), Cells(nbLignes, nbColonnes)).Select
ListBox1.ColumnCount = nbColonnes
ListBox1.RowSource = Selection.Address
'ajuster la largeur des colonnes qui se calcule en Points
'J'ai mis *6, parce que le test semblait correct
'en VB6, on utiliserait Textwidth qui ne semble pas exister sous Excel
'ou ScaleMode, twips, pixels,....
'Vérification des largeurs maximales des colonnes
'On stocke la plus grande valeur de chaque colonne dans un Tableau
For I = 0 To ListBox1.ColumnCount - 1
For J = 0 To ListBox1.ListCount - 1
If Largeur < Len(ListBox1.List(J, I)) * 8 Then
Largeur = Len(ListBox1.List(J, I)) * 8
End If
Next
Tablo(UBound(Tablo)) = Largeur
ReDim Preserve Tablo(UBound(Tablo) + 1)
Largeur = 0
Next
'Avec ce tableau, on génère une formule pour "ColumnWidths"
For I = 0 To UBound(Tablo) - 1
Formule = Formule & Tablo(I) & ";"
Next
'enlever le dernier point-virgule de la chaîne
Formule = Left(Formule, Len(Formule) - Len(Chr(34)))
'ajuster les colonnes d'un coup
ListBox1.ColumnWidths = Formule
End Sub
Private Sub retour_Click()
Me.Hide
End Sub
Private Sub UserForm_Initialize()
' z = Sheets("matériel en stock").Range("A1").Value
ComboBox2.ColumnWidths = "200"
ComboBox2.ColumnCount = 5
ComboBox2.Clear
ComboBox2.AddItem "matériel en stock"
ComboBox2.AddItem "VHL en stock"
ComboBox2.AddItem "Données"
ComboBox2.AddItem "Clients"
ComboBox2.AddItem "DIVERS"
' ComboBox2.Column(3, I) = z
' ComboBox2.ListIndex = 0
ComboBox2.ListIndex = 0
End Sub
Dernière édition: