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

[VBA] Détection de filtre activé ne fonctionne pas...

9 réponses
Avatar
HD
Bonjour,

Sur une feuille, je dois détecter si le filtre est activé et si c'est le
cas le désactiver... mon problème est que cela ne fonctionne pas.

J'ai :
If ActiveSheet.AutoFilterMode = True Then
Range("A1").Select
Selection.AutoFilter
End If
Et rien ne se passe...

Avec :
If ActiveSheet.AutoFilterMode = True Then
MsgBox "filtre"
End If
Je n'obtiens aucun message "filtre"...

Je suis en Excel 2007.

Cordialement,

HD

9 réponses

Avatar
HD
Je m'en suis sorti avec cette fonction:

Function Filtre(BActive As Boolean)
'BActive=True si il faut activer le filtre
'BActiveúlse si il faut le désactiver
On Error Resume Next
Dim retV As Variant

retV = ActiveSheet.AutoFilter.Filters(1).On
If retV <> "" And BActive = False Then
Range("A1").AutoFilter
End If
If retV = "" And BActive = True Then
Range("A1").AutoFilter
End If
End Function

Mais c'est bizarre que ActiveSheet.AutoFilterMode = True ne fonctionne
pas ? Si vous auriez une explication... Merci.

@+
HD
Avatar
Jacky
Bonjour,
Mais c'est bizarre que ActiveSheet.AutoFilterMode = True ne fonctionne pas ? Si vous auriez une
explication... Merci.



Aucun problème pour faire fonctionner ce qui est décrit.

--
Salutations
JJ


"HD" a écrit dans le message de news: lm4cfh$6af$
Je m'en suis sorti avec cette fonction:

Function Filtre(BActive As Boolean)
'BActive=True si il faut activer le filtre
'BActiveúlse si il faut le désactiver
On Error Resume Next
Dim retV As Variant

retV = ActiveSheet.AutoFilter.Filters(1).On
If retV <> "" And BActive = False Then
Range("A1").AutoFilter
End If
If retV = "" And BActive = True Then
Range("A1").AutoFilter
End If
End Function

Mais c'est bizarre que ActiveSheet.AutoFilterMode = True ne fonctionne pas ? Si vous auriez une
explication... Merci.

@+
HD
Avatar
MichD
Bonjour,

2 procédures : la première détecte la présence des boutons d'un filtre sur la feuille de calcul nonobstant qu'un filtre
puisse être actif ou non. La prodédure 2 détecte si un filtre est actuellement en application dans la feuille.

Procédure 1
'-----------------------------------------------------------
Sub PrésenceDesBoutonsDuFiltreOuNon()
With Feuil1
If .AutoFilterMode Then
MsgBox "Les boutons du filtre auto. sont absents."
Else
MsgBox "Les boutons du filtre auto. sont absents."
End If
End With
'-----------------------------------------------------------


Procédure 2
'-----------------------------------------------------------
Sub test()
With Feuil1
If .FilterMode Then
MsgBox "Un filtre est en application."
End If
End With
End Sub
'-----------------------------------------------------------

'----------------------------------------------------
Sub test()
With Feuil1
If .FilterMode Then
MsgBox "Un filtre est en application."
End If
End With
End Sub





"HD" a écrit dans le message de groupe de discussion : lm4bjl$5h4$

Bonjour,

Sur une feuille, je dois détecter si le filtre est activé et si c'est le
cas le désactiver... mon problème est que cela ne fonctionne pas.

J'ai :
If ActiveSheet.AutoFilterMode = True Then
Range("A1").Select
Selection.AutoFilter
End If
Et rien ne se passe...

Avec :
If ActiveSheet.AutoFilterMode = True Then
MsgBox "filtre"
End If
Je n'obtiens aucun message "filtre"...

Je suis en Excel 2007.

Cordialement,

HD
Avatar
DanielCo
Bonjour,
Je ne peux pas reproduire ton cas. Est-ce que tu peux charger un
fichier sur cjoint.com ?
Daniel


Je m'en suis sorti avec cette fonction:

Function Filtre(BActive As Boolean)
'BActive=True si il faut activer le filtre
'BActiveúlse si il faut le désactiver
On Error Resume Next
Dim retV As Variant

retV = ActiveSheet.AutoFilter.Filters(1).On
If retV <> "" And BActive = False Then
Range("A1").AutoFilter
End If
If retV = "" And BActive = True Then
Range("A1").AutoFilter
End If
End Function

Mais c'est bizarre que ActiveSheet.AutoFilterMode = True ne fonctionne pas ?
Si vous auriez une explication... Merci.

@+
HD
Avatar
HD
Voici le lien cjoint (valable pendant 4 jours):
http://cjoint.com/?3ECoR4rQPOr

J'ai encore testé... et rien n'y fait. ActiveSheet.AutoFilterMode
m'affiche toujours Faux que le filtre soit activé ou non.



@+
HD
Avatar
HD
With Feuil1
If .AutoFilterMode Then
MsgBox "Les boutons du filtre auto. sont présents."
Else
MsgBox "Les boutons du filtre auto. sont absents."
End If
End With

J'ai "Les boutons du filtre auto. sont absents." qui s'affiche.


Sub test()
With Feuil1
If .FilterMode Then
MsgBox "Un filtre est en application."
Else
MsgBox "Un filtre n'est pas en application."
End If
End With
End Sub

J'ai "Un filtre n'est pas en application." qui s'affiche...

@+
HD
Avatar
MichD
Ne perds pas ton temps à faire des commentaires qui sont compréhensibles, surtout pas!

Je te laisse t'organiser tout seul si tu arrives à comprendre tes propres commentaires!
Avatar
DanielCo
Le problème vient du fait qu'il s'agit du filtre d'un tableau. Si tu
fais un filtre en dehors du tableau, ton code fonctionnera.
Daniel


Voici le lien cjoint (valable pendant 4 jours):
http://cjoint.com/?3ECoR4rQPOr

J'ai encore testé... et rien n'y fait. ActiveSheet.AutoFilterMode m'affiche
toujours Faux que le filtre soit activé ou non.



@+
HD
Avatar
HD
Le problème vient du fait qu'il s'agit du filtre d'un tableau. Si tu
fais un filtre en dehors du tableau, ton code fonctionnera.



Ouille... effectivement... D'habitude je n'utilise pas de tableaux mais
là j'ai repris les classeurs d'une collègue qui elle a due faire ses
tableaux en passant par un tableau Excel. Merci de votre aide.



@+
HD