Je suis novice en VBA et je souhaite faire un filtre sur la colonne B de mon tableau ci-joint mais avec le contrôle ActiveX "ComboBox1", plus rapide et plus pratique que le filtre manuel "Donnée>Filtre>Sélection".
Le contenu du ComboBox pour le filtre est indiqué dans la zone de texte dans le fichier.
Merci pour votre proposition,
elle est intéréssante et fonctionne parfaitement mais je voyais plutôt une méthode sans aucun "filtre apparent" en masquant simplement les lignes ne correspondant pas au critère choisi.
Le côté "non dynamique" de la liste ComboBox ne me dérange pas.
Private Sub ComboBox1_Change()
Dim lig As Integer
Dim cell As Range
Application.ScreenUpdating = False
Rows("3:65536").Hidden = False
lig = [B65536].End(xlUp).Row
If ComboBox1 <> "Tous" Then
For Each cell In Range("B3:B" & lig)
If cell = ComboBox1 Then cell.EntireRow.Hidden = True
Next cell
End If
End Sub
Par contre si ta base de données contient 20000 lignes, je ne garantis pas un temps d'execution aussi rapide que la méthode autofilter
Private Sub ComboBox1_Change()
Dim lig As Integer
Dim cell As Range
Application.ScreenUpdating = False
Rows("3:65536").Hidden = False
lig = [B65536].End(xlUp).Row
If ComboBox1 <> "Tous" Then
For Each cell In Range("B3:B" & lig)
If cell = ComboBox1 Then cell.EntireRow.Hidden = True
Next cell
End If
End Sub
Par contre si ta base de données contient 20000 lignes, je ne garantis pas un temps d'execution aussi rapide que la méthode autofilter
J'ai utilisé le nouveau code à ledzepfred avec celui de Kjin pour le côté dynamique de la ComboBox dans mon classeur ci-joint.
Ce nouveau code me convient presque sauf qu'il masque au contraire les lignes ayant la valeur sélectionnée dans le Combo au lieu de les afficher et de masquer tout le reste.
J'ai inversé les "True" et "False" mais sans succés,
J'ai utilisé le nouveau code à ledzepfred avec celui de Kjin pour le côté dynamique de la ComboBox dans mon classeur ci-joint.
Ce nouveau code me convient presque sauf qu'il masque au contraire les lignes ayant la valeur sélectionnée dans le Combo au lieu de les afficher et de masquer tout le reste.
J'ai inversé les "True" et "False" mais sans succés,
Bonsoir au fil du forum,
j'ai décelé une petite rectif à faire dans la dernière macro
If cell = ComboBox1 Then cell.EntireRow.Hidden = True
remplacer le "=" par "<>" comme ceci........
If cell <> ComboBox1 Then cell.EntireRow.Hidden = True
et c'est ok......
Bonsoir au fil du forum,
j'ai décelé une petite rectif à faire dans la dernière macro
If cell = ComboBox1 Then cell.EntireRow.Hidden = True
remplacer le "=" par "<>" comme ceci........
If cell <> ComboBox1 Then cell.EntireRow.Hidden = True
et c'est ok......