Microsoft 365 Filtrer defiltrer via macro avec 1 seul bouton

greg63

XLDnaute Junior
Bonjour

J'essaie de filtrer défiltrer sur une feuille avec une seul bouton mais je n'y arrive pas

VB:
Sub Filtrer_AdrENv()
'

    ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
    ActiveSheet.Range("$B$31:$V$290").AutoFilter Field:=21, Criteria1:="<>"
     ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
      ActiveSheet.Range("$B$31:$V$2000").AutoFilter Field:=21
End Sub

J'ai un filtre ou j'ai un O qui s'affiche en ligne V si c'est ok je veux que ça me filtre la ligne

Le tableau part de la ligne B31 jusqu'a V....

J'aimerais qu'une fois que je clique, je filtre par le O et lorsque je reclique sur la forme ou est affecté la macro on déselectionne et que le tableau prenne les O et les celulles vides.

Je vous remercie pour votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Greg,
Sans fichier test, difficile de ... tester quoi que ce soit.
Une idée:
Vous réservez une cellule. Quand vous filtrez vous mettez dans cette cellule 0, quand vous défiltrez vous mettez 1.
VB:
Sub Test()
'Considérons que le flag est en A1
if [A1]=0 then
    Call Filtrage
    [A1]=1
    Exit Sub
Else
    Call Défiltrage
    [A1]=0
End If
End Sub
il y a donc qu'un seul bouton.
Le flag peut être une cellule, une variable publique ou tout autre chose qui permet de discriminer les deux états.

Une autre solution est d'utiliser la propriété Worksheet.FilterMode qui est à True si un filtre est activé, sinon False.
Mais cela suppose que dans votre feuille il n'y a qu'un jeu de filtre. Si plusieurs filtres peuvent être actifs dans des zones différentes, alors on ne peut savoir si ceux qui nous intéresse sont concernés ou non, uniquement si un filtre de la feuille quel qu'il soit est actif.

... d'où l'idée d'un fichier test.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 087
Messages
2 085 198
Membres
102 815
dernier inscrit
Henridic