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

VBA XL2000 Comment remettre Filtre automatique après Filtre élaboré

7 réponses
Avatar
J
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique.

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
Application.ScreenUpdating = False
ActiveSheet.Unprotect
With Sheets("CONSO")
.Unprotect
.[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=[b5:k5]
End With

' à revoir le code ci-dessous pour remettre le filtre auto
Sheets("CONSO").Range("A5").AutoFilter

Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@

7 réponses

Avatar
Péhemme
Bonjour J@@ (ou peut-être bonsoir pour toi)

La définition de ta plage A1:DD500 ne me paraît pas compatible avec :
- l'adresse de tes critères : A1:A2
- l'adresse du champ de destination : b5:k5
Mon test (les titres de A5 à H5) :
With Feuil1
.Range("A5:H21").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("J5:N5"), Unique:úlse
.Range("A5").AutoFilter
End With
Cela fonctionne (Vista - Excel 2003).
Michel



"J@@" a écrit dans le message de
news:j0kh2e$ibh$
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique.

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
Application.ScreenUpdating = False
ActiveSheet.Unprotect
With Sheets("CONSO")
.Unprotect
.[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=[b5:k5]
End With

' à revoir le code ci-dessous pour remettre le filtre auto
Sheets("CONSO").Range("A5").AutoFilter

Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@
Avatar
J
Bonjour Michel (Je suis à GMT-10)
merci pour ton aide, j'ai grâce à toi nettoyé mon code, mais le problème
reste entier.
Je ne pense pas que le problème soit de filtre élaboré, celui-ci
fonctionne bien. C'est le pb d'impossibilité de réinstaller le filtre
automatique préexistant qui me préoccupe.

Voici le détail :
En Feuil1 j'ai un grand tableau avec ligne de titres en A:A et filtre
automatique sur cette ligne.
J'extrais depuis Feuil2 des données selon les critères placés en A1 et
A2 de cette Feuil2.

Cela fonctionne très bien, SAUF :
le filtre auto disparait lors de l'extraction et, quand il se remet, il
n'apparait pas dans les cellules, je vois qu'il existe en cliquant
Données>Filtre>Filtre auto qui est bien coché.

Si, depuis la Feuil1, j'opère à la main :
DéprotectionFeuille>Données>Filtre>Filtre auto, le filtre se remet très
bien en place.

Voici le code un peu simplifié :
With Sheets("Feui1")
.Range("A1:DD500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("B5:K5")
.Range("A5").AutoFilter
'remet le filtre auto à la Feui1
End With

J'ai testé avec XL2000 et Win XP0 et w7 sans différence.

merci pour ton aide.
J@@

Le 25/07/2011 23:40, Péhemme a écrit :
Bonjour J@@ (ou peut-être bonsoir pour toi)

La définition de ta plage A1:DD500 ne me paraît pas compatible avec :
- l'adresse de tes critères : A1:A2
- l'adresse du champ de destination : b5:k5
Mon test (les titres de A5 à H5) :
With Feuil1
.Range("A5:H21").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("J5:N5"), Unique:úlse
.Range("A5").AutoFilter
End With
Cela fonctionne (Vista - Excel 2003).
Michel



"J@@" a écrit dans le message de
news:j0kh2e$ibh$
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique.

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
Application.ScreenUpdating = False
ActiveSheet.Unprotect
With Sheets("CONSO")
.Unprotect
.[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=[b5:k5]
End With

' à revoir le code ci-dessous pour remettre le filtre auto
Sheets("CONSO").Range("A5").AutoFilter

Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@



Avatar
Péhemme
Bonjour J@@

Ce que je comprends :
a) tu as ta base de données en Feuil1 (A1:DD500) dont les titres sont sur la
ligne 1:1
b) tu as ta feuille de résultats d'extraction en Feuil2 dont A1:A2 sont tes
critères, et B5:K5 les titres de ton tableau de résultats.
c) sur la Feuil1, au préalable à l'exécution de ton filtre élaboré, un
filtre automatique est installé sur la ligne des titres (1:1) .

Tu mentionnes que le filtré élaboré fonctionne bien : dont acte.
Il ne s'agit donc que de remettre le filtre automatique en place (retiré du
fait de l'utilisation du filtre élaboré).
En isolant toute la partie du filtre élaboré, si j'écris :
With Sheets("Feuil1")
.Range("A1").AutoFilter
End With
cela fonctionne.
Et, étrangement (pour moi), si je reprends ta macro :
With Sheets("Feuil1")
.Range("A5").AutoFilter
End With
cela fonctionne également (remet le filtre automatique sur la ligne 1:1).
Je suis sous Excel 2003, y a-t-il eu des modifications entre les versions
2000 et 2003 concernant ce point ? Je ne sais pas, un "vrai gourou" pourrait
nous le dire.

Tu as certainement testé ta macro "pas à pas" (F8) afin de visualiser les
effets de celle-ci. Tu es donc certain que ton filtre élaboré fonctionne
correctement et que seule cette partie de filtre automatique est à gérer.

J'avoue sécher.

Bien amicalement
Michel


"J@@" a écrit dans le message de
news:j0nedi$hgq$
Bonjour Michel (Je suis à GMT-10)
merci pour ton aide, j'ai grâce à toi nettoyé mon code, mais le problème
reste entier.
Je ne pense pas que le problème soit de filtre élaboré, celui-ci
fonctionne bien. C'est le pb d'impossibilité de réinstaller le filtre
automatique préexistant qui me préoccupe.

Voici le détail :
En Feuil1 j'ai un grand tableau avec ligne de titres en A:A et filtre
automatique sur cette ligne.
J'extrais depuis Feuil2 des données selon les critères placés en A1 et A2
de cette Feuil2.

Cela fonctionne très bien, SAUF :
le filtre auto disparait lors de l'extraction et, quand il se remet, il
n'apparait pas dans les cellules, je vois qu'il existe en cliquant
Données>Filtre>Filtre auto qui est bien coché.

Si, depuis la Feuil1, j'opère à la main :
DéprotectionFeuille>Données>Filtre>Filtre auto, le filtre se remet très
bien en place.

Voici le code un peu simplifié :
With Sheets("Feui1")
.Range("A1:DD500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("B5:K5")
.Range("A5").AutoFilter
'remet le filtre auto à la Feui1
End With

J'ai testé avec XL2000 et Win XP0 et w7 sans différence.

merci pour ton aide.
J@@

Le 25/07/2011 23:40, Péhemme a écrit :
Bonjour J@@ (ou peut-être bonsoir pour toi)

La définition de ta plage A1:DD500 ne me paraît pas compatible avec :
- l'adresse de tes critères : A1:A2
- l'adresse du champ de destination : b5:k5
Mon test (les titres de A5 à H5) :
With Feuil1
.Range("A5:H21").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("J5:N5"), Unique:úlse
.Range("A5").AutoFilter
End With
Cela fonctionne (Vista - Excel 2003).
Michel



"J@@" a écrit dans le message de
news:j0kh2e$ibh$
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique.

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
Application.ScreenUpdating = False
ActiveSheet.Unprotect
With Sheets("CONSO")
.Unprotect
.[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=[b5:k5]
End With

' à revoir le code ci-dessous pour remettre le filtre auto
Sheets("CONSO").Range("A5").AutoFilter

Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@






Avatar
LSteph
Bonjour,
Il faut adapter le filtre élaboré pour l'ensemble de la ligne de titre
voulue mais
pour remettre l'autofilter apres sur la premiere cellule suffit

[a1].autofilter

Un exemple

Application.CutCopyMode = False
With [a1]
.AutoFilter
Range(.Address, Cells(65536, 2).End(xlUp)) _
.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("g1"), Unique:=True
.AutoFilter
End With

'LSteph

On Jul 25, 9:44 pm, "J@@" wrote:
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique .

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
     Application.ScreenUpdating = False
     ActiveSheet.Unprotect
     With Sheets("CONSO")
       .Unprotect
       .[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
           CriteriaRange:=Range("A1:A2"), CopyToRange:=[b 5:k5]
     End With

     ' à revoir le code ci-dessous pour remettre le filtre auto
     Sheets("CONSO").Range("A5").AutoFilter

     Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@
Avatar
Péhemme
Re-Bonjour J@@,
Même si ce n'est que bonjour tout court ;-)

J'ai refais les tests.
Ne t'inquiètes pas, je mets tout en variables afin de modifier plus aisément
les paramètres mais le principe ne change pas.
Ce nouveau test fonctionne correctement :

Sub Macro2()
Dim Plage As Range
Dim Crit As Range
Dim Dest As Range
Dim R As Long
R = Range("feuil1!P65536").End(xlUp).Row
Set Plage = Feuil1.Range("a1:P" & R)
Set Crit = Feuil2.Range("A1:A2")
Set Dest = Feuil2.Range("B5:F5")

With Feuil1
Plage.AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Crit, _
CopyToRange:Þst, _
Unique:úlse
.Range("A1").AutoFilter '=> Fonctionne bien, mais j'utilise Excel
2003
End With
End Sub

Bien amicalement
Michel

"J@@" a écrit dans le message de
news:j0nedi$hgq$
Bonjour Michel (Je suis à GMT-10)
merci pour ton aide, j'ai grâce à toi nettoyé mon code, mais le problème
reste entier.
Je ne pense pas que le problème soit de filtre élaboré, celui-ci
fonctionne bien. C'est le pb d'impossibilité de réinstaller le filtre
automatique préexistant qui me préoccupe.

Voici le détail :
En Feuil1 j'ai un grand tableau avec ligne de titres en A:A et filtre
automatique sur cette ligne.
J'extrais depuis Feuil2 des données selon les critères placés en A1 et A2
de cette Feuil2.

Cela fonctionne très bien, SAUF :
le filtre auto disparait lors de l'extraction et, quand il se remet, il
n'apparait pas dans les cellules, je vois qu'il existe en cliquant
Données>Filtre>Filtre auto qui est bien coché.

Si, depuis la Feuil1, j'opère à la main :
DéprotectionFeuille>Données>Filtre>Filtre auto, le filtre se remet très
bien en place.

Voici le code un peu simplifié :
With Sheets("Feui1")
.Range("A1:DD500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("B5:K5")
.Range("A5").AutoFilter
'remet le filtre auto à la Feui1
End With

J'ai testé avec XL2000 et Win XP0 et w7 sans différence.

merci pour ton aide.
J@@

Le 25/07/2011 23:40, Péhemme a écrit :
Bonjour J@@ (ou peut-être bonsoir pour toi)

La définition de ta plage A1:DD500 ne me paraît pas compatible avec :
- l'adresse de tes critères : A1:A2
- l'adresse du champ de destination : b5:k5
Mon test (les titres de A5 à H5) :
With Feuil1
.Range("A5:H21").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("J5:N5"), Unique:úlse
.Range("A5").AutoFilter
End With
Cela fonctionne (Vista - Excel 2003).
Michel



"J@@" a écrit dans le message de
news:j0kh2e$ibh$
Bonjour à tous

Avec le code suivant, dans XL2000, j'applique un filtre élaboré qui
fonctionne bien, mais lors de cette action la feuille filtrée perd son
filtre automatique que je n'arrive pas à ré-appliquer -bien qu'il
apparaisse coché si l'on clique sur Données>Filtre>Filtre automatique.

Que faire, svp ?

Sub FiltrElaboreConso()
'code lancé par bouton dans la feuille
Application.ScreenUpdating = False
ActiveSheet.Unprotect
With Sheets("CONSO")
.Unprotect
.[A1:DD500].AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=[b5:k5]
End With

' à revoir le code ci-dessous pour remettre le filtre auto
Sheets("CONSO").Range("A5").AutoFilter

Application.ScreenUpdating = True
End Sub

Merci d'avance.
Cordialement
J@@






Avatar
J
Bonjour LSteph
Voici le pb résolu :-) :
en mettant l'autofilter sur A1, cela fonctionne, si je le laisse sur A5,
cela ne fonctionne pas.
Merci pour l'aide
@+
J@@


Le 27/07/2011 00:52, LSteph a écrit :
Bonjour,
Il faut adapter le filtre élaboré pour l'ensemble de la ligne de titre
voulue mais
pour remettre l'autofilter apres sur la premiere cellule suffit

[a1].autofilter

Un exemple

Application.CutCopyMode = False
With [a1]
.AutoFilter
Range(.Address, Cells(65536, 2).End(xlUp)) _
.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("g1"), Unique:=True
.AutoFilter
End With

'LSteph
Avatar
J
Bonjour Michel

Tu m'as mis sur la bonne piste, comme LSteph, il faut mettre
l'autofilter sur A1, alors mon code fonctionne bien, mais si je le mets
sur A5, cela ne fonctionne pas...

Sinon, je pense que je vais m'inspirer de ton utilisation de variables,
plus faciles à adapter ensuite, me semble-t-il.

Merci encore
Amicalement
En souhaitant que l'été se rapproche de la France ;-)
J@@ (Hémisphère Sudiste)


Le 27/07/2011 00:40, Péhemme a écrit :
Bonjour J@@

Ce que je comprends :
a) tu as ta base de données en Feuil1 (A1:DD500) dont les titres sont
sur la ligne 1:1
b) tu as ta feuille de résultats d'extraction en Feuil2 dont A1:A2 sont
tes critères, et B5:K5 les titres de ton tableau de résultats.
c) sur la Feuil1, au préalable à l'exécution de ton filtre élaboré, un
filtre automatique est installé sur la ligne des titres (1:1) .

Tu mentionnes que le filtré élaboré fonctionne bien : dont acte.
Il ne s'agit donc que de remettre le filtre automatique en place (retiré
du fait de l'utilisation du filtre élaboré).
En isolant toute la partie du filtre élaboré, si j'écris :
With Sheets("Feuil1")
.Range("A1").AutoFilter
End With
cela fonctionne.
Et, étrangement (pour moi), si je reprends ta macro :
With Sheets("Feuil1")
.Range("A5").AutoFilter
End With
cela fonctionne également (remet le filtre automatique sur la ligne 1:1).
Je suis sous Excel 2003, y a-t-il eu des modifications entre les
versions 2000 et 2003 concernant ce point ? Je ne sais pas, un "vrai
gourou" pourrait nous le dire.

Tu as certainement testé ta macro "pas à pas" (F8) afin de visualiser
les effets de celle-ci. Tu es donc certain que ton filtre élaboré
fonctionne correctement et que seule cette partie de filtre automatique
est à gérer.

J'avoue sécher.

Bien amicalement
Michel


"J@@" a écrit dans le message de
news:j0nedi$hgq$
Bonjour Michel (Je suis à GMT-10)
merci pour ton aide, j'ai grâce à toi nettoyé mon code, mais le
problème reste entier.
Je ne pense pas que le problème soit de filtre élaboré, celui-ci
fonctionne bien. C'est le pb d'impossibilité de réinstaller le filtre
automatique préexistant qui me préoccupe.

Voici le détail :
En Feuil1 j'ai un grand tableau avec ligne de titres en A:A et filtre
automatique sur cette ligne.
J'extrais depuis Feuil2 des données selon les critères placés en A1 et
A2 de cette Feuil2.

Cela fonctionne très bien, SAUF :
le filtre auto disparait lors de l'extraction et, quand il se remet,
il n'apparait pas dans les cellules, je vois qu'il existe en cliquant
Données>Filtre>Filtre auto qui est bien coché.

Si, depuis la Feuil1, j'opère à la main :
DéprotectionFeuille>Données>Filtre>Filtre auto, le filtre se remet
très bien en place.

Voici le code un peu simplifié :
With Sheets("Feui1")
.Range("A1:DD500").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("B5:K5")
.Range("A5").AutoFilter
'remet le filtre auto à la Feui1
End With

J'ai testé avec XL2000 et Win XP0 et w7 sans différence.

merci pour ton aide.
J@@

Le 25/07/2011 23:40, Péhemme a écrit :
Bonjour J@@ (ou peut-être bonsoir pour toi)

La définition de ta plage A1:DD500 ne me paraît pas compatible avec :
- l'adresse de tes critères : A1:A2
- l'adresse du champ de destination : b5:k5
Mon test (les titres de A5 à H5) :
With Feuil1
.Range("A5:H21").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), _
CopyToRange:=Range("J5:N5"), Unique:úlse
.Range("A5").AutoFilter
End With
Cela fonctionne (Vista - Excel 2003).