Pour effacer tous les filtres dans VBA, vous devez effectuer les étapes suivantes:
- Insérer des données dans une feuille
- Cliquez sur les données et utilisez Ctrl+T pour créer un tableau
Effacez tous les filtres de la table active
Cliquez à l’intérieur d’une table et ouvrez l’éditeur VBA (Alt +F11).
Entrez et exécutez le code suivant.
Sub RemoveFiltersFromTable() ActiveSheet.ShowAllDataEnd Sub
Si une cellule active est en dehors de la table, elle renverra une erreur.
Effacer tous les filtres de la feuille de calcul
Dans notre exemple, il existe deux tableaux: Table1 et Table2. Chacun d’eux a appliqué des filtres.
Afin de vérifier le nom d’une table, allez dans Design > > Properties > > Nom de la table.
Vous pouvez utiliser le code VBA précédent, cliquer sur chacune des tables et exécuter le code. Mais cette fois, créons un code qui effacera tous les filtres de toutes les tables de la feuille de calcul.
Afin d’effacer le filtre à l’intérieur de chaque table sur une feuille de calcul, vous devez d’abord les parcourir toutes. Utilisez le code suivant.
Sub LoopThroughTablesInsideWorksheet()Dim myTable As ListObject For Each myTable In ActiveSheet.ListObjects MsgBox myTable Next myTableEnd Sub
Il renverra deux fenêtres de messages avec les noms de la table.
Au lieu d’un message, créons du code qui effacera les filtres de chaque table. Pour ce faire, il suffit de changer MsgBox myTable en myTable.Filtre automatique.Afficher toutes les données.
Sub LoopThroughTablesInsideWorksheet()Dim myTable As ListObject For Each myTable In ActiveSheet.ListObjects myTable.AutoFilter.ShowAllData Next myTableEnd Sub
La nouvelle ligne vérifiera chaque table et affichera toutes les données, en d’autres termes, elle supprimera tous les filtres.
Effacer tous les filtres dans le classeur
Pour le faire pour toutes les tables à l’intérieur du classeur, vous devez ajouter une boucle supplémentaire qui parcourra toutes les tables de chaque feuille et effacera les filtres.
Sub LoopThroughTablesInsideWorkbook()Dim myTable As ListObjectDim mySheet As WorksheetFor Each mySheet In Worksheets For Each myTable In mySheet.ListObjects myTable.AutoFilter.ShowAllData Next myTableNext mySheetEnd Sub
Tableur et passionné de Python.