Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : filtre automatique présent ou non

1 réponse
Avatar
Jac
Bonjour à tous,

j'ai besoin de savoir si un filtre automatique est appliqué à mes données.
Avec ActiveSheet.FilterMode j'arrive à savoir si le tableau est filtré ou
non. Mais moi, ce que je veux savoir c'est si la fonctionalité "Filtre
automatique" est en place.

Pourquoi : je veux enlever le filtre existant s'il existe et le remettre
dans tous les cas afin d'éviter que le filtre ne s'applique pas à toutes
les colonnes du tableau (colonne ajoutée à gauche ou à droite du
tableau déjà filtré).

Avec Selection.AutoFilter, j'enlève le filtre s'il existe et je le remets
s'il n'existe pas. Mais comme je ne connais pas l'état de départ, je
ne sais pas si je dois faire Selection.AutoFilter 1x ou 2x.

Merci d'avance à qui me mettra sur la voie.

Jac

1 réponse

Avatar
MichDenis
Si tu veux savoir si les boutons d'un filtre automatique apparaissent
sur une feuille de calcul, tu peux utiliser l'une
des 2 procédures. Mais celles-ci ne peuvent distinguer
si un filtre est en application (une plage filtrée) sur la
feuille... détecte seulement la présence des boutons automatiques du filtre.

*************Méthode 1 ************
Sub PrésenceDesBoutonsDuFiltreOuNon()

With Worksheets("Feuil5")
If .AutoFilterMode Then
MsgBox "Filtre auto. en application."
Else
MsgBox "Aucun filtre auto. en application."
End If
End With

End Sub

*************Méthode 2 ************
Sub PrésenceDesBoutonsDuFiltreOuNon()

Dim Rg As Range
On Error Resume Next
Set Rg = Worksheets("Feuil5").AutoFilter.Range
If Err <> 0 Then
Err = 0
MsgBox "Les boutons du filtre auto ne sont " & _
"pas affichés dans la feuille"
Else
MsgBox "boutons du filtre auto. présents dans la feuille"
End If

Set Rg = Nothing
End sub

************************************

Si tu veux savoir si une plage de cellule de la feuille 1
est présentement appliqué (plage filtrée), tu peux utiliser
cette procédure. Tu peux même identifier la colonne
(ou les colonnes`) où le filtre est en application.
'---------------------------
Sub test()
If Feuil1.FilterMode Then
MsgBox "Des enregistrements sont filtrés"
Else
MsgBox "Aucun enregistrement filtré"
End If
End Sub
'---------------------------






"Jac" a écrit dans le message de news:
Bonjour à tous,

j'ai besoin de savoir si un filtre automatique est appliqué à mes données.
Avec ActiveSheet.FilterMode j'arrive à savoir si le tableau est filtré ou
non. Mais moi, ce que je veux savoir c'est si la fonctionalité "Filtre
automatique" est en place.

Pourquoi : je veux enlever le filtre existant s'il existe et le remettre
dans tous les cas afin d'éviter que le filtre ne s'applique pas à toutes
les colonnes du tableau (colonne ajoutée à gauche ou à droite du
tableau déjà filtré).

Avec Selection.AutoFilter, j'enlève le filtre s'il existe et je le remets
s'il n'existe pas. Mais comme je ne connais pas l'état de départ, je
ne sais pas si je dois faire Selection.AutoFilter 1x ou 2x.

Merci d'avance à qui me mettra sur la voie.

Jac