VBA : filtre automatique présent ou non

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #4963591
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" 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
Publicité
Poster une réponse
Anonyme