1 pièce(s) jointe(s)
Filtres horizontaux multicritères avec userform
Bonjour à tous,
Je souhaiterai pourvoir effectuer des filtres horizontaux, multicritères à l'aide d'un userform et d'un champ recherche
La première partie de code permet de rechercher un fichier, je souhaite pouvoir sélectionner plusieurs item et que lorsque je recherche un item je puisse avoir le choix (ajouter à la selection ou filtrer avec, un peu comme le filtre vertical déjà par défaut)
Or cette première partie de code ne permet pas d'ajouter à la une selection une fois que j'efface le textbox la listbox se réinitialise,
aussi pour masquer les colonnes mon essai était beaucoup trop long et faisait planter l'application, Y a-t-il une solution autre que de passer par for i = .. to ... if tab<>listbox then cellshiddencolumn=true (en gros)
Merci d'avance
Pièce jointe 248915
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
| Option Compare Text
Private Sub TextBox2_Change()
Dim derl%
derl = Worksheets("GMD").Cells(Rows.Count, 2).End(xlUp).Row
Application.ScreenUpdating = False
If TextBox2 <> "" Then
ListBox2.Clear
For Ligne = 7 To derl
If Cells(Ligne, 2) Like "*" & TextBox2 & "*" Then
ListBox2.AddItem Cells(Ligne, 2) 'Exemple 2 (ListBox)
End If
Next
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub ListBox2_Click()
End Sub |
J'ai initialisé mon userforme avec des données de mon fichier
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
|
Private Sub UserForm_Initialize()
Dim cell1 As Range
Dim Unique1 As New Collection
Dim Valeur1
Dim i As Integer
Dim derl%
i = Worksheets("GMD").Cells(Rows.Count, 2).End(xlUp).Row
On Error Resume Next
'boucle sur les Cell1ules de la colonne A
For Each cell1 In Worksheets("gmd").Range("B7:B" & i)
'Stocke les données dans une collection
'(La collection n'accepte que des données uniques et permet donc
' de filtrer facilement les doublons).
If cell1 <> "" Then
Unique1.Add cell1, CStr(cell1)
End If
Next cell1
On Error GoTo 0
'Boucle sur le contenu de la collection pour alimenter la ListBox
For Each Valeur1 In Unique1
Me.ListBox2.AddItem Valeur1
Me.ListBox2.MultiSelect = fmMultiSelectMulti
Me.ListBox2.ListStyle = fmListStyleOption
Next Valeur1
Set Unique1 = Nothing
End Sub |