Créer une plage dynamique et appliquer un filtre à un ensemble de données, Excel VBA

Créer une plage dynamique et appliquer un filtre à un ensemble de données, Excel VBA

Voici un exemple de code VBA détaillé pour créer une plage dynamique et appliquer un filtre à un ensemble de données dans Excel. Cela vous permet de sélectionner automatiquement une plage de données qui peut changer de taille (ajout ou suppression de lignes) et d’appliquer un filtre. 

Étapes pour Créer une Plage Dynamique et Appliquer un Filtre avec VBA 

  1. Identifier la Plage Dynamique : Une plage dynamique signifie que le nombre de lignes ou de colonnes de vos données peut changer. Nous pouvons utiliser la propriété UsedRange, Cells, CurrentRegion, ou encore les méthodes End(xlDown) et End(xlToRight) pour définir cette plage dynamiquement. 
  2. Appliquer un Filtre : Une fois que nous avons la plage dynamique, nous pouvons appliquer le filtrage en utilisant la méthode AutoFilter. 

Exemple de Code VBA 

Voici un exemple de code VBA pour créer une plage dynamique et appliquer un filtre : 

Sub FiltragePlageDynamique() 
    ' Déclaration des variables 
    Dim ws As Worksheet 
    Dim derniereLigne As Long 
    Dim derniereColonne As Long 
    Dim plageDonnees As Range 
    Dim colonneFiltrage As Integer 
    ' Définir la feuille active 
    Set ws = ThisWorkbook.Sheets("Feuille1") 
    ' Trouver la dernière ligne et la dernière colonne avec des données 
    derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Dernière ligne utilisée dans la colonne A 
    derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column ' Dernière colonne utilisée dans la ligne 1 
    ' Définir la plage dynamique 
    Set plageDonnees = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)) 
    ' Supprimer tout filtre précédent 
    If ws.AutoFilterMode Then 
        ws.AutoFilterMode = False 
    End If 
    ' Appliquer un AutoFiltre sur la première ligne (ligne d'en-tête) 
    plageDonnees.AutoFilter 
    ' Spécifier la colonne sur laquelle appliquer le filtre (par exemple, filtrer selon la colonne 2) 
    colonneFiltrage = 2 ' Vous pouvez changer cela en fonction de vos données 
    ' Appliquer le filtre pour afficher uniquement les lignes où la colonne 2 est "Oui" (ajustez la condition selon vos besoins) 
    plageDonnees.AutoFilter Field:=colonneFiltrage, Criteria1:="Oui"  
End Sub

Explication du Code 

1. Définir la Feuille de Travail (ws)

  • Nous commençons par définir la feuille avec laquelle nous travaillons (ThisWorkbook.Sheets(« Feuille1 »)). Vous pouvez changer « Feuille1 » par le nom de votre propre feuille. 

2. Trouver la Dernière Ligne et la Dernière Colonne

  • derniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row: Cette ligne permet de trouver la dernière ligne utilisée dans la colonne A. Nous utilisons xlUp pour remonter à partir du bas de la feuille. 
  • derniereColonne = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column: Cette ligne permet de trouver la dernière colonne utilisée dans la ligne 1. Nous utilisons xlToLeft pour aller de la dernière colonne vers la gauche. 

3. Définir la Plage Dynamique

  • Set plageDonnees = ws.Range(ws.Cells(1, 1), ws.Cells(derniereLigne, derniereColonne)): Cette ligne définit la plage dynamique allant de la cellule A1 à la dernière ligne et la dernière colonne de données. Cette plage s’ajustera automatiquement en fonction des données présentes dans votre feuille. 

4. Supprimer les Filtres Précédents

  • If ws.AutoFilterMode Then ws.AutoFilterMode = False: Cette ligne vérifie s’il y a des filtres existants et les supprime si nécessaire. 

5. Appliquer l’AutoFiltre

  • plageDonnees.AutoFilter: Cette ligne applique la fonctionnalité de filtre automatique sur la première ligne (la ligne d’en-tête de la plage). 

6. Filtrer les Données Selon une Condition

  • plageDonnees.AutoFilter Field:=colonneFiltrage, Criteria1:= »Oui »: Cette ligne applique un filtre sur la deuxième colonne (vous pouvez changer la valeur de colonneFiltrage pour indiquer la colonne que vous souhaitez filtrer) et affiche uniquement les lignes où la valeur est « Oui ». Vous pouvez modifier le paramètre Criteria1 pour filtrer sur différentes valeurs ou critères (par exemple, Criteria1:= »>100″ pour filtrer les valeurs supérieures à 100). 

Explication du Concept de Plage Dynamique 

  • Plage Dynamique : Une plage dynamique s’ajuste automatiquement en fonction des données présentes. Cela est particulièrement utile lorsque le nombre de lignes ou de colonnes change fréquemment. Les propriétés comme UsedRange, End(xlUp), et End(xlToLeft) nous aident à trouver la dernière ligne et la dernière colonne de nos données. 
  • AutoFiltre : La méthode AutoFilter est utilisée pour filtrer une plage de données en fonction de critères spécifiques. C’est un outil très puissant car il permet de filtrer de grands ensembles de données en quelques lignes de code. 

Points à Prendre en Compte 

  • Lignes ou Colonnes Vides : Si vous avez des espaces dans vos données (lignes ou colonnes vides), cette méthode pourrait ne pas toujours fonctionner comme prévu. Assurez-vous que vos données ne contiennent pas de lignes/colonnes vides là où vous ne voulez pas. 
  • Critères Multiples : Vous pouvez appliquer plusieurs critères en ajoutant un autre paramètre Criteria2 dans votre méthode AutoFilter. 

Conclusion 

Ce code fournit une solution détaillée pour créer une plage dynamique et appliquer un filtre avec VBA. Il offre une grande flexibilité pour gérer des données dynamiques et les filtrer en fonction de critères spécifiques. Vous pouvez adapter ce code à vos besoins spécifiques pour filtrer et ajuster automatiquement la plage de données. 

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