Données filtrées par ComboBox (VBA)

Amilo

XLDnaute Accro
Bonsoir le Forum,

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 d'avance pour votre soutien.

Cordialement.
 

Pièces jointes

  • Filtre.xls
    41 KB · Affichages: 217
  • Filtre.xls
    41 KB · Affichages: 210
  • Filtre.xls
    41 KB · Affichages: 244

ledzepfred

XLDnaute Impliqué
Re : Données filtrées par ComboBox (VBA)

bonsoir Amilo,

une solution parmi d'autres à optimiser (notamment l'alimentation des items du combobox en dur dans le code et donc pas dynamique)

A+
 

Pièces jointes

  • Filtre(1).xls
    47 KB · Affichages: 373
  • Filtre(1).xls
    47 KB · Affichages: 361
  • Filtre(1).xls
    47 KB · Affichages: 384

Amilo

XLDnaute Accro
Re : Données filtrées par ComboBox (VBA)

bonsoir Amilo,

une solution parmi d'autres à optimiser (notamment l'alimentation des items du combobox en dur dans le code et donc pas dynamique)

A+

Bonsoir ledzepfred,

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.

Merci encore pour solution.

Slts
 

kjin

XLDnaute Barbatruc
Re : Données filtrées par ComboBox (VBA)

Bonsoir,
La combo est chargée à l'ouverture du classeur...donc à voir
A+
kjin

Edit : salut Ledzep

A+
kjin
 

Pièces jointes

  • amilo.zip
    15.6 KB · Affichages: 277
  • amilo.zip
    15.6 KB · Affichages: 245
  • amilo.zip
    15.6 KB · Affichages: 242

ledzepfred

XLDnaute Impliqué
Re : Données filtrées par ComboBox (VBA)

Amilo, Kjin, le forum bonsoir,

la même chose sans utiliser la fonction filtre

Code:
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

A+
 

Amilo

XLDnaute Accro
Re : Données filtrées par ComboBox (VBA)

Amilo, Kjin, le forum bonsoir,

la même chose sans utiliser la fonction filtre

Code:
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

A+

Bonsoir ledzepfred, Kjin, le Forum,

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,

Ai-je bien recopié ces lignes ??

Merci pour votre soutien

Slts
 

Amilo

XLDnaute Accro
Re : Données filtrées par ComboBox (VBA)

Bonsoir ledzepfred, Kjin, le Forum,

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,

Ai-je bien recopié ces lignes ??

Merci pour votre soutien

Slts

Oups, voici le nouveau fichier

Slts
 

Pièces jointes

  • Filtre.xls
    35.5 KB · Affichages: 362
  • Filtre.xls
    35.5 KB · Affichages: 376
  • Filtre.xls
    35.5 KB · Affichages: 448

youky(BJ)

XLDnaute Barbatruc
Re : Données filtrées par ComboBox (VBA)

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......
 

Amilo

XLDnaute Accro
Re : Données filtrées par ComboBox (VBA)

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 youky,

Bien vu et merci pour cette petite correction qui change tout,

Un grand merci encore à lepzedfred et Kjin pour leur aide

Bonne soirée à tous.
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch