Implémenter des techniques de filtrage de données de base et de filtrage de données avancé, Excel VBA

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 !

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x