Bonjour à tous,
Titre on ne peut plus explicite: je cherche à alimenter une ComboBox avec un tableau trié, sur base de deux paramètres/critères. Ces deux critères sont choisis dans le formulaire (USF) par l'utilisateur: deux ComboBox.
Voici le code que j'ai pu construire avec ce que j'ai pu trouvé sur internet et l'enregistreur de macro:
Comme vous l'aurez compris, c'est le tableau "TableauCriteres" sur la page "Criteres" que je cherche à trier pour alimenter ma ComboBox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Public Sub AlimenterComboBox() 'Permet d'alimenter une ComboBox sur base des critères de tri envoyés à la fonction. Dim A As Range, Plage As Range, C As Range, Dico As Object Dim Domaine As String, Niveau As String '######## Définition des critères de tri ############# Domaine = ComboBoxDomaineDeCompetence.Text Niveau = ComboBoxNiveau.Text Set Dico = CreateObject("Scripting.Dictionary") With Sheets("Criteres").ListObjects("TableauCriteres") '###### Le code plante à partir d'ici ###### .Range.AutoFilter Field:=2, Criteria1:=Domaine 'Trie TableauCriteres selon les paramètres envoyés en argument .Range.AutoFilter Field:=3, Criteria1:=Niveau End With Set Plage = Range("TableauCriteres[Critères]").SpecialCells(xlCellTypeVisible) With Me.ComboBoxCriteresAlimentes 'Alimente la ComboBox For Each A In Plage For Each C In A If Not Dico.Exists(C.Value) Then .AddItem C.Value Dico.Add C.Value, C.Value End If Next C Next A End With ActiveSheet.ListObjects("TableauCriteres").Range.AutoFilter Field:=2 'Annule le filtrage ActiveSheet.ListObjects("TableauCriteres").Range.AutoFilter Field:=3 End Sub
Si une âme charitable pouvait m'aider, à m'en sortir, je lui en serait très reconnaissant !
Partager