Problème Filtre avancé avec VBA
Bonsoir,
Dans un classeur Excel 2010 (avec une seule feuille), je parviens sans problème à utiliser un filtre avancé "à la main", mais dès que j'utilise VBA, avec les mêmes données le filtre n'extrait rien (avec l'option copier à un autre endroit). Je crois avoir tout essayé, indiqué les cellules en Range, créé des variables, rien n'y fait alors que les mêmes opérations y compris en enregistrement de macro fonctionnent très bien dans la feuille Excel et pas en VBA. Voici le code généré par l'enregistreur de macro qui a fonctionné lors de l'enregistrement, mais pas quand je l’exécute ensuite en VBA :
Code:
1 2
| Range("Database").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range _
("Crit03"), CopyToRange:=Range("G17"), Unique:=False |
MERCI si vous pouvez me sortir de là, je deviens fou !!
1 pièce(s) jointe(s)
Impossible filtre avancé en VBA XL2010
Citation:
Envoyé par
gnain
Bonjour,
on ne peut pas avoir un Range comme Range("Database")
Il faut un range de type Range("B9:C26")
ex:
Code:
Range("B9:C26").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("B13:B18"), CopyToRange:=Range("N9:O9"), Unique:=False
Bonsoir,
Merci de ta réponse rapide. Malheureusement ça ne marche toujours pas !!
En direct dans le classeur (1 seule feuille !) je demande Filtrer Avancé, je fais un copier/coller des références de cellules comme tu le conseillais et je les colle dans mon code VBA, code que j'ai obtenu avec l'enregistrement de macros et je fais très attention à tout vérifier ! En 'direct' et même en enregistrement de macros, il trouve des heures dans ma base et il les colle en-dessous de mon entête de colonne (obtenue par copier/coller des entêtes de la base), donc ça marche. Mais quand je lance ma proc Sub, ça ne marche plus, il laisse l'entête de destination pour l'export mais il ne colle rien dessous, alors que CE SONT LES MEMES DONNEES ET LES MEMES ZONES !!
Voici mon code :
Code:
1 2
| Range("$A$1:$E$100").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("$H$1:$I$2"), CopyToRange:=Range("$G$17"), Unique:=False |
J'ai aussi essayé sans les $, OK en direct, ça ne marche pas en VBA !
Code:
1 2
| Range("A1:E100").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("H1:I2"), CopyToRange:=Range("G17"), Unique:=False |
De même en utilisant les zones nommées dans le filtre généré automatiquement par XL :
Database | Crit03 (pour le mois de mars qui devrait afficher 7:00) | G17
OK en direct, Non en VBA
J'ai joint une recopie d'écran avec le filtre avancé 'ouvert'.
Comment se fesse ??
Merci de passer du temps sur ce qui ne devrait pas être un problème.
JPP