Tableaux de filtres VBA

Les Fonction de filtre VBA vous permet de filtrer rapidement les tableaux. Plusieurs paramètres doivent être pris en compte lors du filtrage des baies. Nous les aborderons ci-dessous.

Filtre - Correspondance

Par défaut, la fonction de filtre VBA filtrera un tableau pour les correspondances. Dans l'exemple ci-dessous, nous allons filtrer le tableau pour les correspondances avec « Smith ».

1234567891011121314 Sub Filter_Match()'Définir le tableauDim strNames en tant que variantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtrer la matriceDim strSubNames comme variantestrSubNames = Filter(strNames, "Smith")'Compter le tableau filtréMsgBox "Trouvé " & UBound(strSubNames) - LBound(strSubNames) + 1 & " noms."Fin du sous-marin

Quelques points importants :

  • La variable de tableau filtrée doit être déclarée comme variant de type de données pour éviter de définir la taille du tableau.
  • Par défaut, la fonction Filtre est sensible à la casse. Donc filtrer sur « smith » donnerait un résultat différent de « Smith ». Ci-dessous, nous allons vous montrer comment modifier ce paramètre.

Filtre - Insensible à la casse

Par défaut, VBA est sensible à la casse. Cela signifie que « smith » n'est pas égal à « Smith ». Cela est vrai pour la fonction de filtre, ainsi que pour toutes (la plupart ?) les autres fonctions ou comparaisons VBA.

Personnellement, je ne veux jamais que VBA soit sensible à la casse, j'ajoute donc toujours Option Compare Text en haut de tous mes modules de code. L'option Comparer le texte indique à VBA d'ignorer la casse afin qu'elle soit insensible à la casse :

1 Option Comparer le texte

L'ajout du texte de comparaison d'options en haut de votre module rendra la fonction de filtre insensible à la casse. Alternativement, vous pouvez indiquer à la fonction de filtre elle-même d'être insensible à la casse avec l'argument vbTextCompare :

1 strSubNames = Filter(strNames, "smith", , vbTextCompare)

Exemple complet :

1234567891011121314 Sous-filtre_MatchCase()'Définir le tableauDim strNames en tant que variantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtrer la matriceDim strSubNames comme variantestrSubNames = Filter(strNames, "smith", , vbTextCompare)'Compter le tableau filtréMsgBox "Trouvé " & UBound(strSubNames) - LBound(strSubNames) + 1 & " noms."Fin du sous-marin

Filtre - Ne correspond pas

La fonction de filtre peut également être utilisée pour identifier les éléments du tableau qui NE PAS correspondent aux critères saisis en définissant l'argument Inclure sur FALSE :

1 strSubNames = Filter(strNames, "Smith", False)

Exemple complet :

1234567891011121314 Sous-filtre_NoMatch()'Définir le tableauDim strNames en tant que variantestrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filtrer la matriceDim strSubNames comme variantestrSubNames = Filter(strNames, "Smith", False)'Compter le tableau filtréMsgBox "Trouvé " & UBound(strSubNames) - LBound(strSubNames) + 1 & " noms."Fin du sous-marin

Fonction de filtre

La fonction Filtre VBA renvoie un sous-ensemble de tableau d'un tableau de chaînes fourni.

La syntaxe de la fonction de filtre est :

Filtre (TableauSource, Correspondance, [Inclure], [Comparer])

Les arguments de la fonction sont :

  • TableauSource - Le tableau d'origine à filtrer
  • Rencontre - La chaîne à rechercher
  • [Comprendre] - OPTIONNEL TRUE (Renvoie des correspondances), FALSE (Renvoie des éléments qui ne correspondent pas)
  • [Comparer] - OPTIONNEL vbBinaryCompare - comparaison binaire, vbTextCompare - comparaison de texte, vbDatabaseCompare - comparaison de base de données

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave