Problème de combobox et listbox
TitiPointCom67
Messages postés
38
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaie d'adapter du code que j'ai trouvé sur internet de manière à pouvoir lister dans une listbox les personnes habitant dans une commune.
La liste totale s'affiche bien dans la listbox, la liste de choix s'affiche bien dans le combobox, mais quand je clic sur la combobox pour effectuer le tri, un message d'erreur s'affiche et je n'arrive pas à comprendre pourquoi.
Il me dit que la variable BD est vide.
Merci d'avance
EDIT : Ajout des balises de code
J'essaie d'adapter du code que j'ai trouvé sur internet de manière à pouvoir lister dans une listbox les personnes habitant dans une commune.
La liste totale s'affiche bien dans la listbox, la liste de choix s'affiche bien dans le combobox, mais quand je clic sur la combobox pour effectuer le tri, un message d'erreur s'affiche et je n'arrive pas à comprendre pourquoi.
Il me dit que la variable BD est vide.
Merci d'avance
Private Sub UserForm_Initialize()
Set f = Sheets("INSCRIPTIONS")
ColVisu = Array(1, 2, 5, 6, 7, 8, 9, 13, 11, 10, 14, 15, 20) ' Colonnes à visualiser
Ncol = UBound(ColVisu) + 1
Set d = CreateObject("Scripting.Dictionary")
BD = f.Range("A2:U" & f.[A65000].End(xlUp).Row)
'---- ComboBox trié
For i = LBound(BD) To UBound(BD)
If BD(i, 1) <> "" Then d(BD(i, 1)) = ""
Next i
'ComboBox1.List = d.keys ' sans tri
Tmp = d.keys
Tri Tmp, LBound(Tmp), UBound(Tmp)
Me.ComboBox1.List = Tmp
'-- en têtes de colonne ListBox
x = 16
y = Me.ListBox1.Top - 10
For Each k In ColVisu
Set Lab = Me.Frame1.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(1, k)
Lab.Top = y
Lab.Left = x
x = x + f.Columns(k).Width * 1#
temp = temp & f.Columns(k).Width * 1# & ";"
Next
temp = Left(temp, Len(temp) - 1)
Me.ListBox1.ColumnCount = UBound(ColVisu) + 1
Me.ListBox1.ColumnWidths = temp
Me.Frame1.Width = 860
Me.Frame1.ScrollWidth = Me.ListBox1.Width + 1
Me.Frame1.ScrollBars = 1
'---- Contenu ListBox initial
Dim Tbl(): ReDim Tbl(1 To UBound(BD), 1 To Ncol)
For i = 1 To UBound(BD)
c = 0
For Each k In ColVisu
c = c + 1: Tbl(i, c) = BD(i, k)
Next k
Next i
TriMultiCol Tbl, LBound(Tbl), UBound(Tbl), 1
Me.ListBox1.List = Tbl
Me.Label4.Caption = Me.ListBox1.ListCount & " Ligne(s)"
End Sub
Private Sub ComboBox1_click()
Dim Tbl(): j = 0
For i = 1 To UBound(BD) ' PLANTAGE A CE NIVEAU
If BD(i, 1) = Me.ComboBox1 Then
j = j + 1: ReDim Preserve Tbl(1 To Ncol, 1 To j)
c = 0
For Each k In ColVisu
c = c + 1: Tbl(c, j) = BD(i, k)
Next k
End If
Next i
Me.ListBox1.Column = Tbl
Me.Label4.Caption = Me.ListBox1.ListCount & " Ligne(s)"
End Sub
EDIT : Ajout des balises de code
A voir également:
- Impossible de définir la propriété columnwidths
- Propriétés combobox vba ✓ - Forum VB / VBA
- Vb6 listbox ✓ - Forum VB / VBA
- Vba listbox additem plusieurs colonnes ✓ - Forum VB / VBA
- Remplir combobox vba ✓ - Forum Excel
- Combobox vba liste déroulante dynamique ✓ - Forum Excel
3 réponses
Bonjour,
Où as tu déclaré ta variable BD ? Elle est en "Public" ?? Sinon... c'est normal qu'il ne la connaisse pas.... vu que tu lui assignes une valeur dans une autre sub que celle où tu as le plantage....
Si tu ne comprends pas... renseigne toi sur ce qu'est la portée des variables
Où as tu déclaré ta variable BD ? Elle est en "Public" ?? Sinon... c'est normal qu'il ne la connaisse pas.... vu que tu lui assignes une valeur dans une autre sub que celle où tu as le plantage....
Si tu ne comprends pas... renseigne toi sur ce qu'est la portée des variables
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, je suggère d'ajouter
option expliciten haut de module, cela va te forcer à déclarer toutes tes variables, et t'aidera grandement à clarifier la situation et éviter des erreurs ultérieures.