Voilà,
comme tu as mis l'exploitation du remplissage des combos dans un module, j'ai changé le code du module
et dans ton USF, j'ai enlevé la déclaration de cbox
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 Option Explicit 'la variable public est déclarée ici Public cbox As String ' variable "public" Sub Creer_Liste_SansDoublons(Plage As Range) Dim Cell As Range Dim Un As Collection, i As Long Dim ssdoublon() Set Un = New Collection On Error Resume Next For Each Cell In Plage If Cell <> "" Then Un.Add Cell, CStr(Cell) Next Cell On Error GoTo 0 For i = 1 To Un.Count ReDim Preserve ssdoublon(i - 1) ssdoublon(i - 1) = Un.Item(i) Next i 'ci-dessous, comme on est dans un module, le "me" ne passe plus, il faut préciser le nom de l'USF UserForm1.Controls(cbox).List = ssdoublon() Set Un = Nothing End Sub
maintenant pour les filtres c'est simple si tu m'en dis plus, filtrer sur quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Option Explicit Private Sub UserForm_Initialize() 'à l'initialisation de l'USF Dim dl As Long With ActiveSheet dl = .Range("A" & .Rows.Count).End(xlUp).Row cbox = "ComboBox1" Creer_Liste_SansDoublons .Range("A1:A" & dl) ' pour la 1ere plage cbox = "ComboBox2" dl = .Range("B" & .Rows.Count).End(xlUp).Row 'parce que moins de cellules en B Creer_Liste_SansDoublons .Range("B1:B" & dl) 'pour la 2eme plage End With End Sub
Partager