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

VBA Filtre et Filtre auto

7 réponses
Avatar
Domi
Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un filtre
automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre Encours,
s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:=False
End Sub

Merci
Domi

7 réponses

Avatar
Jean-François Aubert
Salut Domi,

Une soluce:
Appliquer un filtre bidon pour pouvoir ensuite ôter tous les filtres.
Rajoutes ceci au début de ta deuxième macro :

Range("a10").AutoFilter Field:=1, Criteria1:=""
Range("A10").AutoFilter

--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}


"Domi" a écrit dans le message de news:
Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un filtre
automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre Encours,
s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:úlse
End Sub

Merci
Domi




Avatar
Denis Michon
Bonsoir Domi,


Tu peux adapter ce type de procédure à ta situation :

'----------------------
Sub LeFiltre()

With Worksheets("Feuil1")
If .FilterMode = True Then
MsgBox "Le filtre est en place."
'Enlève le filtre si il est présent...
.Range("A10").AutoFilter
Else
MsgBox "pas de filtre"
End If
End With

End Sub
'----------------------



Salutations!



"Domi" a écrit dans le message de news:
Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un filtre
automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre Encours,
s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:úlse
End Sub

Merci
Domi
Avatar
Domi
Merci Denis, c'est le genre de soluce pour laquelle je voudrais opter (Celle
de Jean-François fonctionne) mais il y a un petit hic.
Ma seconde macro FiltreEnCours ne renvoie rien si le filtre Auto est activé,
j'entend par activé le simple fait qu'il soit coché dans Données filtre et
que les petit menus deroulants apparaissent dans les cellules de titre, même
si aucun filtre n'est vraiment appliqué (toutes lignes visibles).
Hors avec les quelques tests que j'ai fais, If .FilterMode = True Then... me
renvoie que le filtre n'est pas activé dans ce cas..., pour lui il faut
qu'il y ait (apparement) réellement des lignes filtrées...:o(
Dommage.
Encore merci
Domi

"Denis Michon" a écrit dans le message de news:
GOGib.158188$
Bonsoir Domi,


Tu peux adapter ce type de procédure à ta situation :

'----------------------
Sub LeFiltre()

With Worksheets("Feuil1")
If .FilterMode = True Then
MsgBox "Le filtre est en place."
'Enlève le filtre si il est présent...
.Range("A10").AutoFilter
Else
MsgBox "pas de filtre"
End If
End With

End Sub
'----------------------



Salutations!



"Domi" a écrit dans le message de
news:

Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un
filtre

automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre
Encours,

s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:úlse
End Sub

Merci
Domi





Avatar
AV
Avec des données filtrées ou pas, suppression du filtre s'il est présent

Essaye comme ça :
If Not ActiveSheet.AutoFilter Is Nothing Then ActiveSheet.[A1].AutoFilter

AV
Avatar
michdenis
Bonjour Domi,

Une suggestion :

Utilise une cellule de ta feuille pour conserver la valeur suivante :

Range("iv65534")=1 ' les flèches du filtre auto. sont visibles
Range("iv65534")=0 ' les flèches du filtre auto ne sont pas visibles.

Pour ce faire, à chaque fois que tu appelles la commande du filtre automatique, la ligne de code suivante est :
Range("iv65534")=1

Maintenant, si tu veux tester si les flèches du filtre sont présents sur ta feuille, tu n'as qu'à vérifier la valeur de
ta cellule Range("iv65534").

if Range("iv65534") = 1 then
Msgbox "Les flèches du filtre sont présentes."
else
Msgbox "Pas de flèches".
End if.



Salutations!




"Domi" a écrit dans le message de news:%
Merci Denis, c'est le genre de soluce pour laquelle je voudrais opter (Celle
de Jean-François fonctionne) mais il y a un petit hic.
Ma seconde macro FiltreEnCours ne renvoie rien si le filtre Auto est activé,
j'entend par activé le simple fait qu'il soit coché dans Données filtre et
que les petit menus deroulants apparaissent dans les cellules de titre, même
si aucun filtre n'est vraiment appliqué (toutes lignes visibles).
Hors avec les quelques tests que j'ai fais, If .FilterMode = True Then... me
renvoie que le filtre n'est pas activé dans ce cas..., pour lui il faut
qu'il y ait (apparement) réellement des lignes filtrées...:o(
Dommage.
Encore merci
Domi

"Denis Michon" a écrit dans le message de news:
GOGib.158188$
Bonsoir Domi,


Tu peux adapter ce type de procédure à ta situation :

'----------------------
Sub LeFiltre()

With Worksheets("Feuil1")
If .FilterMode = True Then
MsgBox "Le filtre est en place."
'Enlève le filtre si il est présent...
.Range("A10").AutoFilter
Else
MsgBox "pas de filtre"
End If
End With

End Sub
'----------------------



Salutations!



"Domi" a écrit dans le message de
news:

Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un
filtre

automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre
Encours,

s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:úlse
End Sub

Merci
Domi





Avatar
Domi
Concis et efficace :o)
Merci beaucoup.
Domi

"AV" a écrit dans le message de news:
bmftrp$d4n$
Avec des données filtrées ou pas, suppression du filtre s'il est présent

Essaye comme ça :
If Not ActiveSheet.AutoFilter Is Nothing Then ActiveSheet.[A1].AutoFilter

AV




Avatar
Denis Michon
Bonjour Domi,


ActiveSheet.AutoFilterMode = False

Pour éviter qu'un filtre auto. soit déjà en application, tu places cette ligne de code juste avant d'exécuter ton
nouveau filtre.

Cette ligne seule, enlève le filtre auto. de la feuille active, y compris les flèches du filtre, le cas échéant.



Salutations!


"Domi" a écrit dans le message de news:
Bonsoir,
Cette simple macro me permet d'activer sur la ligne de titres (10) un filtre
automatique, associée à un bouton cela m'evite d'avoir à passer par les
menus...
Un click l'active, un deuxieme click le desactive et affiche tous les
enregistrements . Tout va bien.

Sub FiltreAuto()
Range("A10").Select
Selection.AutoFilter
End Sub

Mon pb survient avec cette 2eme macro qui me permet de filtrer les
enregistrements de la colonne AV ayant pour critère "True".
Cette macro ne fonctionne pas si un filtre auto est toujours activé par la
macro précédente.
Est-il possible de la modifier pour obtenir quelque chose du genre "Si un
filtre auto est déjà appliqué, le désactiver et appliquer le filtre Encours,
s'il aucun Filtre auto n'est appliqué, filtrer Encours directement".

Sub FiltreEnCours()
Range("AV10").Activate
Range("AV10:AV50000").AutoFilter Field:=1, Criteria1:="True",
VisibleDropDown:úlse
End Sub

Merci
Domi