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

Filtre et Macro

12 réponses
Avatar
Lepaic07
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance

10 réponses

1 2
Avatar
papou
Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True si le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance


Avatar
Lepaic07
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True si le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance







Avatar
papou
Re
Dans ce cas propriété AutoFilterMode, ex:
If Worksheets("Feuil1").AutoFilterMode Then

Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True si
le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le message
de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance









Avatar
Lepaic07
Merci Papou mais
Ce n'est toujours pas ce que je cherches, mes filtes sont déjà présent sur
le classeur, je veux juste tester si l'un d'entre eu filtre ou non


Re
Dans ce cas propriété AutoFilterMode, ex:
If Worksheets("Feuil1").AutoFilterMode Then

Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True si
le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le message
de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance














Avatar
papou
Et bien c'est donc ma première réponse qui t'intéresse !
La propriété FilterMode prend la propriété True si la feuille est filtrée
(et qu'il y a donc par conséquent des lignes masquées).

Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Merci Papou mais
Ce n'est toujours pas ce que je cherches, mes filtes sont déjà présent sur
le classeur, je veux juste tester si l'un d'entre eu filtre ou non


Re
Dans ce cas propriété AutoFilterMode, ex:
If Worksheets("Feuil1").AutoFilterMode Then

Cordialement
Pascal

"Lepaic07" a écrit dans le message
de
news:
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu
peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True
si
le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le
message
de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance
















Avatar
Lepaic07
Le quiproquo viens du fais que tu as utilisé "des que" au lieu de "si" dans
ta première réponse, et déjà si l'explication n'est pas bonne, j'en déduis
que la macro n'est pas bonne...
et en programmation, la différence entre "des que" et "si" est grande !
Mais apres test, la macro fonctionne merci pour ton aide


Et bien c'est donc ma première réponse qui t'intéresse !
La propriété FilterMode prend la propriété True si la feuille est filtrée
(et qu'il y a donc par conséquent des lignes masquées).

Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Merci Papou mais
Ce n'est toujours pas ce que je cherches, mes filtes sont déjà présent sur
le classeur, je veux juste tester si l'un d'entre eu filtre ou non


Re
Dans ce cas propriété AutoFilterMode, ex:
If Worksheets("Feuil1").AutoFilterMode Then

Cordialement
Pascal

"Lepaic07" a écrit dans le message
de
news:
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu
peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer True
si
le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le
message
de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance





















Avatar
papou
Oui excuse moi pour le manque de précision.
Je ne prétends pas maîtriser le langage de programmation VBA d'Excel.
Je ne le pratique humblement que depuis 9 ans et j'ai encore tellement de
choses à découvrir.

Cordialement
Pascal

"Lepaic07" a écrit dans le message de
news:
Le quiproquo viens du fais que tu as utilisé "des que" au lieu de "si"
dans
ta première réponse, et déjà si l'explication n'est pas bonne, j'en déduis
que la macro n'est pas bonne...
et en programmation, la différence entre "des que" et "si" est grande !
Mais apres test, la macro fonctionne merci pour ton aide


Et bien c'est donc ma première réponse qui t'intéresse !
La propriété FilterMode prend la propriété True si la feuille est filtrée
(et qu'il y a donc par conséquent des lignes masquées).

Cordialement
Pascal

"Lepaic07" a écrit dans le message
de
news:
Merci Papou mais
Ce n'est toujours pas ce que je cherches, mes filtes sont déjà présent
sur
le classeur, je veux juste tester si l'un d'entre eu filtre ou non


Re
Dans ce cas propriété AutoFilterMode, ex:
If Worksheets("Feuil1").AutoFilterMode Then

Cordialement
Pascal

"Lepaic07" a écrit dans le
message
de
news:
Non
Le but de la manoeuvre est de savoir si un filtre est actif avant de
continuer une macro,
La suite de la macro dépend si un filtre est "actif" ou non


Bonjour
S'il s'agit de déclencher une macro dès qu'un filtre est activé, tu
peux
utiliser l'évènement
Worksheet_Calculate
et tester la propriété Filtermode de la feuille qui doit renvoyer
True
si
le
filtre est actif sur la feuille.
Cordialement
Pascal

"Lepaic07" a écrit dans le
message
de
news:
Bonjour,

J'ai placé des filtres automatiques dans un classeur.
Je voudrais continuer un macro si l'un d'entre "filtre"...

Merci d'avance























Avatar
Lepaic07
En complément à la première macro, est il possible de détecter si un filtre
ou un autre est actif, et si oui alors déployer le filtre ?
Merci d'avance...
Avatar
AV
Pour résumer ...

Savoir si un filtre est présent sur la feuille active :
If Not ActiveSheet.AutoFilter Is Nothing Then MsgBox "Un filtre a été créé sur
la feuille"

Savoir si un filtre est présent ET s'il y a des données filtrées :
If ActiveSheet.FilterMode Then MsgBox "Il y a des données filtrées "

AV
Avatar
Lepaic07
Et maintenant pur savoir Si un filtre est présent ET activé ET lequel ?
But de la manoeuvre, eviter de déployer un à un tout les filtres :
Voici ma macro actuelle, le but est d'ouvrir les filtres avant la
sauvegarde, mais vu comme ca ce n'est pas sélectif...

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)

If ActiveSheet.FilterMode = True Then
Answers = MsgBox("Voulez vous déployer les filtres avant
l'enregistrement ?" + Chr(10) + Chr(13) + "La procédure risque d'être
lente...", vbYesNo + vbExclamation)

'déploie TOUT les filtres avant la sauvegarde
If Answers = vbYes Then
Application.ScreenUpdating = False
For i = 1 To 30
Selection.AutoFilter Field:=i
Next
Application.ScreenUpdating = True
End If

End If


Pour résumer ...

Savoir si un filtre est présent sur la feuille active :
If Not ActiveSheet.AutoFilter Is Nothing Then MsgBox "Un filtre a été créé sur
la feuille"

Savoir si un filtre est présent ET s'il y a des données filtrées :
If ActiveSheet.FilterMode Then MsgBox "Il y a des données filtrées "

AV





1 2