Filtrer des données, Excel VBA

Filtrer des données, Excel VBA

Voici une explication détaillée sur l’utilisation de VBA pour filtrer des données dans Excel, accompagnée d’un exemple de code.
Code VBA : Filtrage des données dans Excel
Dans Excel, vous pouvez filtrer des données de manière manuelle ou automatisée via VBA. Le filtrage permet de se concentrer sur un sous-ensemble de données en fonction de certaines conditions, ce qui est particulièrement utile lorsque vous travaillez avec de grandes quantités de données. En VBA, vous pouvez appliquer des filtres à l’aide de la méthode AutoFilter, qui permet de filtrer les données en fonction de critères spécifiques pour des colonnes données.
Voici une explication détaillée et un exemple de code pour filtrer des données à l’aide de VBA dans Excel.
Explication étape par étape :
1. Définir la plage de données à filtrer :

  • Vous devez identifier la plage de données à laquelle vous souhaitez appliquer un filtre. Cela peut être une plage spécifique comme A1:C10, ou cela peut être dynamique en fonction de la taille de votre jeu de données.

2. Utiliser la méthode AutoFilter :

  • La méthode AutoFilter est utilisée pour appliquer un filtre sur une plage. Vous pouvez l’appliquer à une plage spécifique ou à un tableau, et elle permet de filtrer les données en fonction d’une valeur de colonne.

3. Définir les critères de filtrage :

    • Vous pouvez filtrer les données en spécifiant certaines conditions. Cela peut être :
      • Texte (par exemple, filtrer par un mot ou une chaîne spécifique).
      • Nombres (par exemple, filtrer les valeurs supérieures ou inférieures à un certain nombre).
      • Dates (par exemple, filtrer par une date spécifique ou une plage de dates).

4. Effacer les filtres :

  • Une fois que vous avez terminé de filtrer, vous pouvez vouloir supprimer les filtres de la plage. Cela peut être fait en utilisant la méthode ShowAllData.

Exemple de code VBA :

Sub FiltrerDonneesExemple()
    ' Déclarer les variables
    Dim ws As Worksheet
    Dim dernièreLigne As Long
    Dim plageDeDonnees As Range
    ' Définir l'objet de la feuille de travail
    Set ws = ThisWorkbook.Sheets("Feuille1")
    ' Trouver la dernière ligne du jeu de données (en supposant que les données commencent en A1)
    dernièreLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ' Définir la plage de données à filtrer (en supposant que les données sont dans les colonnes A à C)
    Set plageDeDonnees = ws.Range("A1:C" & dernièreLigne)
    ' Appliquer le filtre
    ' Filtre les données où la colonne B (2ème colonne) est supérieure à 100
    plageDeDonnees.AutoFilter Field:=2, Criteria1:=">100"
    ' Optionnel : Appliquer un autre filtre sur une autre colonne (par exemple la colonne C)
    ' Filtre les données où la colonne C (3ème colonne) contient le texte "Complété"
    plageDeDonnees.AutoFilter Field:=3, Criteria1:="Complété"
    ' Optionnel : Effacer tous les filtres
    ' Si vous voulez effacer le filtre appliqué ci-dessus, décommentez la ligne suivante
    ' ws.AutoFilterMode = False
End Sub

Explication détaillée du code :
1. Les variables :

  • ws : Cette variable représente la feuille de travail sur laquelle vous travaillez. Elle est définie sur Feuille1, mais vous pouvez la changer selon le nom de votre feuille.
  • dernièreLigne : Cette variable trouve la dernière ligne du jeu de données dans la colonne A en utilisant la méthode End(xlUp). Cela permet de s’adapter à la taille du jeu de données.
  • plageDeDonnees : Cette variable définit la plage qui sera filtrée. Elle s’étend dynamiquement pour couvrir toutes les lignes de la colonne A à C.

2. Méthode AutoFilter :

    • plageDeDonnees.AutoFilter Field:=2, Criteria1:=">100" :
      • Field:=2 : Cela fait référence à la colonne B (la deuxième colonne). Le filtre est appliqué sur cette colonne.
      • Criteria1:=">100" : Cela filtre les données pour ne montrer que les lignes où la valeur dans la colonne B est supérieure à 100.
    • plageDeDonnees.AutoFilter Field:=3, Criteria1:="Complété" :
      • Field:=3 : Cela fait référence à la colonne C (la troisième colonne).
      • Criteria1:="Complété" : Cela filtre les données pour ne montrer que les lignes où la colonne C contient le texte « Complété ».

3. Effacer les filtres :

    • ws.AutoFilterMode = False :
      • Cette ligne permet de supprimer les filtres. Si vous ne souhaitez plus de filtre, vous pouvez décommenter cette ligne pour effacer tous les filtres appliqués à la feuille.

Personnalisations supplémentaires :
1. Filtres multiples pour la même colonne : Si vous souhaitez filtrer avec plusieurs critères pour une même colonne (par exemple, trouver des valeurs supérieures à 50 mais inférieures à 100), vous pouvez utiliser Criteria1 et Criteria2 :
plageDeDonnees.AutoFilter Field:=2, Criteria1:=">50", Criteria2:="<100"
2. Filtres sur du texte : Vous pouvez utiliser des filtres basés sur du texte comme * pour les jokers (n’importe quel texte), ou ? pour un caractère spécifique :
plageDeDonnees.AutoFilter Field:=3, Criteria1:="Complété*"
Cela filtre la colonne C pour afficher uniquement les lignes où le texte commence par « Complété ».
3. Filtres sur des dates : Vous pouvez filtrer des dates en spécifiant une plage de dates :
plageDeDonnees.AutoFilter Field:=4, Criteria1:=">=01/01/2023", Criteria2:="<=31/12/2023"
Cela filtre la colonne D (supposant qu’elle contient des dates) pour n’afficher que les données de l’année 2023.
Conclusion :
Ce code montre comment appliquer des filtres dans Excel en utilisant VBA. Vous pouvez utiliser la méthode AutoFilter pour filtrer des données en fonction de différents critères comme des valeurs numériques, des chaînes de texte ou des dates. Le filtrage est très utile dans les grandes bases de données pour se concentrer sur des informations spécifiques. En automatisant ce processus avec VBA, vous pouvez gagner du temps et rendre votre flux de travail plus efficace.

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