Activé et Désactivé Filtre, 1 seul Bouton

Bonjour à tous,

J'ai une macro pour filtrer ma colonne Nom, j'aimerai avec le même bouton quand je clic une fois il filtre tout sauf les vides, quand je clic une deuxième fois il efface le filtre. Et le faire sur les autres colonnes, j'ai beaucoup de colonnes. Merci pour votre aide.

Sub FiltrerNom()

    Application.ScreenUpdating = False
    Range("C6").Select
    ActiveSheet.Range("$B$6:$H$419").AutoFilter Field:=2, Criteria1:="<>"

End Sub

Bonjour Junot,

Un essai pour la colonne C :

Sub FiltrerNom()
Static Blank As Boolean
   ActiveSheet.Range("$B$6:$H$419").AutoFilter Field:=2
   If Not Blank Then ActiveSheet.Range("$B$6:$H$419").AutoFilter Field:=2, Criteria1:="<>"
   Blank = Not Blank
   Range("C6").Select
End Sub

nota : les filtres des autres colonnes reste inchangés.

Je n'ai pas bien compris : Et le faire sur les autres colonnes

Doit-on faire une macro ? :

  • Pour chaque colonne individuellement (l'utilisateur choisit sa colonne)
  • Ou bien alors est ce que le filtre doit repérer si sur la ligne il y a au moins une cellule vide et dans ce cas masquer la ligne ?

Bonjour,

Moi dans ma tête c'est une macro pour chaque colonne, mais bon ... je vais essayer votre macro, je reviens.

re,

Je vais recopier cette macro pour les autres colonnes dont nous avons besoins de filtrer. Merci beaucoup

Re,

Un exemple de ce qu'on peut faire :

  • la plage du filtre est indiquée dans la constante RefPlage (RefPlage = "$B$6:$H$419")
  • les colonnes concernées du filtre sont indiquées dans la constante RefColonnes (RefColonnes = "2 4 5 7")
  • quand on double-clique sur le titre d'une colonne concernée alors on alterne entre le filtrage des vides et l'affichage de toute la colonne
  • quand on double-clique sur le titre d'une colonne qui n'est pas concernée alors on ne touche pas au filtre de la colonne

Le code est dans le module de code de la feuille du filtre (Feuil1) :

Const RefPlage = "$B$6:$H$419"      ' la plage de l'autofilter
Const RefColonnes = "2 4 5 7"       ' les index des colonnes concernées du filtre

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Plage As Range, i&, crit
   Set Plage = Range(RefPlage)
   If Intersect(Target, Plage) Is Nothing Then Exit Sub Else Cancel = True
   i = Target.Column - Plage.Column + 1
   If Not (" " & RefColonnes & " " Like "* " & i & " *") Then Exit Sub
   On Error Resume Next: crit = Me.AutoFilter.Filters(i).Criteria1:
   If crit <> "<>" Then Plage.AutoFilter Field:=i, Criteria1:="<>" Else Plage.AutoFilter Field:=i
   On Error GoTo 0
End Sub

Re,

Intéressant je vais garder pour un autre fichier, je vais garder votre 1erè solution parce que la colonne à coté je filtre tout SAUF LES 0. Je vais prendre pour cette partie que la colonne C pour les vides et D pour les zéro, et pour les col N,R,V je recopie la macro pour juste les zéros.

Rechercher des sujets similaires à "active desactive filtre seul bouton"