Implémenter des techniques de filtrage de données de base et de filtrage de données avancé, Excel VBA
Voici un guide détaillé sur la manière d’implémenter des techniques de filtrage de données de base et de filtrage de données avancé dans Excel VBA. Nous allons diviser cela en sections pour plus de clarté.
1. Filtrage de données de base avec VBA
Le filtrage de données de base permet de filtrer les lignes dans une plage en fonction d’un critère, comme une valeur spécifique ou une condition.
Explication :
- Plage : La plage de cellules que vous souhaitez filtrer.
- Critère : La condition ou la valeur sur laquelle le filtrage se fait.
- AutoFilter : Excel offre une méthode AutoFilter qui permet d’appliquer des filtres sur des colonnes.
Exemple de code pour le filtrage de base :
Sub FiltrageDeBase() ' Définir la feuille de calcul et la plage de données Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Définir la plage de données à filtrer Dim plageDonnees As Range Set plageDonnees = ws.Range("A1:D100") ' Adaptez cette plage selon vos données ' Appliquer le filtre automatique à la plage plageDonnees.AutoFilter Field:=1, Criteria1:="John" ' Filtrer par "John" dans la colonne 1 (A) ' Optionnel : Si vous voulez supprimer le filtre après, utilisez : ' ws.AutoFilterMode = False End Sub
Explication détaillée :
1. Définir la Plage : Set plageDonnees = ws.Range("A1:D100")
sélectionne la plage de données de la feuille où vous voulez appliquer le filtre.
2. Appliquer le Filtre : plageDonnees.AutoFilter Field:=1, Criteria1:="John"
applique un filtre sur la première colonne (Field:=1) pour ne montrer que les lignes où la valeur est « John ».
3. Effacer les Filtres : Si vous voulez enlever le filtre après l’avoir appliqué, vous pouvez utiliser ws.AutoFilterMode = False
.
2. Filtrage avancé de données avec VBA
Le filtrage avancé permet d’appliquer des critères plus complexes, comme l’utilisation de plusieurs conditions ou filtrer les données à partir d’une plage séparée (plage de critères).
Explication :
- Plage de critères : Il s’agit d’une plage qui contient les critères de filtrage. Elle peut être sur la même feuille ou sur une feuille différente.
- Mode de filtrage : Vous pouvez utiliser la méthode AdvancedFilter pour des opérations de filtrage plus puissantes, avec plus de flexibilité.
Exemple de code pour un filtrage avancé :
Sub FiltrageAvance() ' Définir la feuille de calcul et la plage de données Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Définir la plage de données à filtrer Dim plageDonnees As Range Set plageDonnees = ws.Range("A1:D100") ' Adaptez cette plage selon vos données ' Définir la plage de critères (cela peut être sur la même feuille ou une autre feuille) Dim plageCritères As Range Set plageCritères = ws.Range("F1:G2") ' Adaptez la plage des critères ' Appliquer le filtre avancé pour extraire les données selon les critères plageDonnees.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=plageCritères, _ CopyToRange:=ws.Range("I1") ' Sortie des données filtrées à partir de la colonne I ' Optionnel : Vous pouvez aussi filtrer directement dans la plage d'origine en utilisant Action:=xlFilterInPlace ' plageDonnees.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=plageCritères End Sub
Explication détaillée :
1. Définir la Plage de Données et la Plage de Critères :
-
- La plageDonnees est la plage des données que vous voulez filtrer.
- La plageCritères est la plage qui contient les critères de filtrage. Elle doit inclure les en-têtes de colonnes et les conditions en dessous d’eux. Par exemple :
F1: "Nom" F2: "John" G1: "Âge" G2: ">=30"
Cela filtrera les lignes où « Nom » est égal à « John » et « Âge » est supérieur ou égal à 30.
2. Filtrage Avancé avec Action de Copie :
- Action:=xlFilterCopy indique que les données filtrées doivent être copiées dans un autre emplacement (ici, à partir de la colonne « I »).
- Vous pouvez aussi choisir de filtrer in situ (sans copier les données) en utilisant Action:=xlFilterInPlace.
3. Filtrage In-Situ :
- Au lieu de copier les données filtrées dans un autre endroit, vous pouvez filtrer directement dans la plage d’origine en définissant Action à xlFilterInPlace.
3. Sortie des données filtrées
Pour sortir les données filtrées dans une nouvelle plage (une autre feuille ou un autre emplacement), vous pouvez utiliser la méthode AdvancedFilter, qui permet à la fois de copier et de filtrer les résultats.
Exemple de code pour la sortie des données filtrées :
Sub SortieDesDonneesFiltrees() ' Définir la feuille de calcul et la plage de données Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ' Définir la plage de données à filtrer Dim plageDonnees As Range Set plageDonnees = ws.Range("A1:D100") ' Adaptez cette plage selon vos données ' Définir la plage de critères Dim plageCritères As Range Set plageCritères = ws.Range("F1:G2") ' Adaptez la plage des critères ' Définir la feuille de sortie Dim feuilleSortie As Worksheet Set feuilleSortie = ThisWorkbook.Sheets("Output") feuilleSortie.Cells.Clear ' Effacer les anciennes données dans la feuille de sortie ' Appliquer le filtre avancé et copier les résultats vers la nouvelle feuille plageDonnees.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=plageCritères, _ CopyToRange:=feuilleSortie.Range("A1") ' Sortie des données dans la feuille "Output" à partir de A1 End Sub
Explication détaillée :
1. Effacer la Feuille de Sortie : Avant de coller les nouveaux résultats, il est recommandé d’effacer la feuille de sortie avec feuilleSortie.Cells.Clear pour supprimer les anciennes données.
2. Copier les Données Filtrées : Les données filtrées seront copiées dans la feuilleSortie à partir de la cellule A1.
Points clés à retenir :
- Plage de Critères : Elle doit toujours avoir les mêmes en-têtes que votre plage de données, et les conditions (par exemple, valeurs ou formules) doivent être placées en dessous des en-têtes.
- AutoFilter vs. AdvancedFilter : Utilisez AutoFilter pour un filtrage simple (une colonne, une condition), et utilisez AdvancedFilter lorsque vous avez besoin de filtrer par plusieurs critères ou lorsque vous voulez extraire les résultats filtrés vers un autre emplacement.
- Sortie : Vous pouvez filtrer les données dans la même plage ou copier les résultats dans une autre feuille ou plage en utilisant la méthode AdvancedFilter.
En comprenant ces étapes et exemples, vous devriez être capable de gérer à la fois le filtrage de données de base et avancé dans Excel en utilisant VBA. Si vous avez des besoins spécifiques ou si vous avez des questions sur des scénarios de filtrage personnalisés, n’hésitez pas à demander !