1 pièce(s) jointe(s)
Faire une multiselection à partir d'une comboBox?
Bonjour,
Je suis nouvelle sur la programmation VBA et j'aurai besoin de votre aide svp.
J'ai fait un programme où je fais appel à des comboBox et textBox, uniquement sur une feuille excel (pas de userform)
Je renseigne mon département dans une comboBox, et j'associe le code correspondant grace à un textbox. Tout fonctionne.
Je souhaite maintenant selectionner plusieurs départements dans ma comboBox, tout en gardant quasimment le même affichage.
C'est à dire, en cliquant sur mon bouton departement, ma liste s'affiche, mes départements sont sélectionnés et mes valeurs alimentent par la suite ma comboBox. Par exemple: Hauts-de-Seine/Paris/Val-de-Marne en fonction de ce qui est sélectionné...
Je dois associer tout cela probablement à une LISTEBOX, mais je ne sais pas à quelle étape l'intégrer? Devrais je me séparer de mes comboBox???
Je m'embrouille entre les différents codes trouvés sur les forums. Surtout que ces codes sont faits pour des userforms :/
Voici un bout de code fait pour mes combobox (qui marche mais sans la multiselection):
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 36 37 38 39 40
| Sub ComboBox1_Initialize()
ComboBox1.Clear 'departement
TextBox1.Value = "" 'code
'pour remplir ma combobox, je stocke mes donnees filtrées et triées.
'(Je peux renseigner la combobox en enlevant les doublons:
'If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("Feuil2").Range("A" & j)) , c'est plus simple mais lent à l'exécution.)
Sheets("Feuil1").Range("b1:b65356").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("Feuil2").Range( _
"b1"), Unique:=True
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add Key:=Range("b1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("b2:b65536")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Dim departement As String
Dim lastdepartement As Integer
lastdepartement = Sheets("Feuil2").Range("b65536").End(xlUp).Row
For i = 2 To lastdepartement
departement = Sheets("Feuil2").Cells(i, 2).Value
ComboBox1.AddItem departement
Next i
End Sub
'le code associé
Sub ComboBox1_change()
If ComboBox1.Value = "" Then
TextBox1.Value = ""
End If
If ComboBox1.Value <> "" Then
TextBox1.Value = WorksheetFunction.VLookup(ComboBox1.Value, Sheets("Feuil2").Range("AA1:AB65536"), 2, False)
End If
End Sub
'fin code |
est ceque je dois refaire mon code en enlevant mes comboBox ou je peux insérer ma listBox quelque part?
Ci joint un exemple court du pgm et son affichage.
Je vous remercie par avance pour votre aide et votre patience.