Filtre automatique VBA

Filtre automatique Excel VBA

Le filtre automatique dans VBA est utilisé comme expression et sa syntaxe est la suivante Expression. Filtre automatique (champ, critère 1, opérateur, critère 2, liste déroulante) tous les arguments sont facultatifs. Le filtre est utile pour filtrer les données particulières des énormes données.

Si vous êtes un utilisateur régulier, les filtres Excel ne sont pas une chose étrange pour vous. Certains des outils que nous utilisons dans la feuille de calcul sont également intégrés à VBA et l'option de filtre automatique est l'un des outils importants disponibles dans VBA. Comme nous le savons tous, le filtre Excel est disponible sous l'onglet Données.

En utilisant cette option de filtre, nous pouvons jouer avec les données. Si vous avez affaire à une quantité minimale de données et si vous pensez que l'option de filtre automatique VBA n'est pas vraiment nécessaire, vous pouvez continuer à utiliser l'option de filtre de feuille de calcul.

Si vous traitez une énorme quantité de données, vous pouvez utiliser une option de filtre automatique pour simplifier le flux de processus.

Syntaxe de la fonction de filtre automatique

Le filtre automatique dans Excel VBA peut être utilisé avec un objet de plage. Comme nos autres fonctions, celle-ci a aussi sa propre syntaxe.

  • Plage: La plage correspond simplement à la plage dans laquelle vous souhaitez appliquer le filtre.
  • Champ: Champ signifie à partir de quelle colonne de la plage vous avez sélectionné vous souhaitez filtrer les données. Une colonne sera comptée de gauche à droite.

Par exemple, si votre plage est comprise entre A1 et D100 et que vous souhaitez appliquer un filtre pour la colonne D, votre numéro de champ est 4 car dans la plage sélectionnée, D est la quatrième colonne.

Critère 1: Dans le champ, vous avez sélectionné ce que vous souhaitez filtrer.

  • Opérateur: Si vous souhaitez appliquer plusieurs critères pour filtrer les données, nous devons utiliser des symboles d'opérateur. Certains des codes d'opérateur sont comme ci-dessous.

xlAnd, xlOr, xlBottom10Items, xlTop10Items, xlTop10Percent, xlBottom10Percent, xlFilterCellColor, xlFilterDynamic, xlFilterFontColor, xlFilterIcon, xlFilterValues.

Critère 2: Quelle est la deuxième chose que vous souhaitez filtrer avec le critère 1?

  • Visible Drop Down: Voulez-vous afficher l'icône du filtre fop down dans la colonne filtrée. Si vous voulez afficher TRUE est l'argument, sinon FALSE est l'argument.

Comment appliquer un filtre à l'aide du filtre automatique VBA? (avec exemple)

Vous pouvez télécharger ce modèle de filtre automatique VBA ici - Modèle de filtre automatique VBA

Supposons ci-dessous les données sur lesquelles vous travaillez.

Maintenant, en utilisant le code VBA, nous allons appliquer le filtre. Suivez les étapes ci-dessous pour appliquer le filtre.

Étape 1: Démarrez la sous-procédure en donnant un nom à la macro.

Code:

 Sub AutoFilter_Example1 () End Sub 

Étape 2: La première  chose est de savoir dans quelle plage nous devons appliquer le filtre. Dans ce cas, nous devons appliquer la plage de la plage A1 à E25.

Code:

 Sub AutoFilter_Example1 () Range ("A1: E25") End Sub 

Étape 3: Une fois la plage sélectionnée, appliquez maintenant l'option de filtre automatique.

Code:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter End Sub 

Nous ne sélectionnons aucune valeur à l'aide d'un filtre automatique, nous appliquons simplement le filtre à ce stade.

Exécutez le code en utilisant la touche F5 ou manuellement, il insérera un filtre pour la plage sélectionnée.

Il a donc appliqué un filtre aux données. Nous allons maintenant voir comment filtrer les données.

Exemple # 1 - Filtrer les données à l'aide du filtre automatique

Considérez les mêmes données de l'exemple ci-dessus. Maintenant, nous devons filtrer le département «Finances» de la colonne Département.

Étape 1: Une fois le filtre appliqué, le premier argument est de mentionner à partir de quelle colonne nous filtrons les données. Dans ce cas, nous devons filtrer les données de la colonne Département, donc le numéro de colonne est 5.

Code:

 Sub AutoFilter_Example1 () Range ("A1: E25"). Champ AutoFilter: = 5, End Sub 

Étape 2: Le critère 1 n'est rien d'autre que ce que nous voulons filtrer à partir de la 5ème colonne. Nous devons donc filtrer «Finance».

Code:

 Sub AutoFilter_Example1 () Range ("A1: E25"). AutoFilter Field: = 5, Criteria1: = "Finance" End Sub 

Donc c'est tout, exécutez ce code manuellement ou via la touche F5, il filtrera uniquement «Finance» de la liste.

Exemple # 2 - Opérateur dans le filtre automatique

Nous avons vu comment filtrer la valeur unique. Nous allons maintenant voir comment filtrer plusieurs éléments. Supposons qu'avec «Finance», vous souhaitez également filtrer le service «Ventes», afin que nous puissions le faire en utilisant des opérateurs.

Étape 1: Après avoir appliqué les premiers critères de l'argument suivant, sélectionnez l'opérateur «xlOr».

Code:

 Sub AutoFilter_Example2 () Range ("A1: E25"). Champ de filtre automatique: = 5, Criteria1: = "Finance", Operator: = xlOr End Sub 

Étape 2: Maintenant, dans le critère 2, mentionnez la valeur «Ventes».

Code:

 Sub AutoFilter_Example2 () Range ("A1: E25"). AutoFilter Field: = 5, Criteria1: = "Finance", Operator: = xlOr, Criteria2: = "Sales" End Sub 

Step 3: Ok, done run this code using F5 key or manually it will filter out both “Finance” & “Sales”.

In the Operator argument, I have used “xlOr” this will select both “Finance” & “Sales” under the filter.

Example #3 – Filter Numbers using AutoFilter

Using Operator symbol “XlAnd” we can filter out numbers as well. Assume from the Overtime column you want to filter out all the values which are >1000 but <3000.

Step 1: The first thing is changing the Field from 5 to 4.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4 End Sub 

Step 2: Criteria 1 is >1000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4,Criteria1:=">1000", End Sub 

Step 3: Here we need to match both the criteria so use “xlAnd” as the operator.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, End Sub 

Step 4: Criteria 2 will <3000.

Code:

 Sub AutoFilter_Example3() Range("A1:E25").AutoFilter Field:=4, Criteria1:=">1000", Operator:=xlAnd, Criteria2:="<3000" End Sub 

Now if you run this code manually or through the F5 key, it will filter out all the values from the Overtime column which are >1000 but <3000.

Example #4 – Filter from Different Columns using AutoFilter

In order to filter out data from different columns, we need to use a different process. Assume you want to filter out the “Finance” department and also you want to filter out Salary numbers which are >25000 but <40000.

You can use the below code does that.

Code:

 Sub AutoFilter_Example4()       With Range("A1:E25") .AutoFilter Field:=5, Criteria1:="Finance" .AutoFilter Field:=2, Criteria1:=">25000", Operator:=xlAnd, Criteria2:="<40000"       End With End Sub 

This will filter out two columns.

Run this code using the F5 key or you can run manually.

Things to Remember

  • Try different combinations under Operator to get the knowledge of VBA AutoFilter.
  • If you are not sure what to put in try using the macro recorder.
  • If you want to filter out text values then you need to supply them in double-quotes.
  • Use WITH statement to apply more than one column filter.