Filtre élaboré dans une macro

drdavis

XLDnaute Nouveau
Version Excel: 2007

Bonjour à tous,

Je vais tenter d'être le plus clair possible. Je ne peux joindre mon fichier excel car celui-ci est trop lourd.

Mon problème: je réalise manuellement un filtre élaboré avec copie des résultats sur ma feuille: pas de problème. Lorsque je répète cette opération dans une macro en respectant scrupuleusement la même manœuvre, le résultat obtenu est nul.


Voilà comment je procède manuellement et lorsque j'enregistre ma macro:

données -> section "trier et filtrer" -> Avancé

Je coche "Copier vers un autre emplacement"

Plages: $A$2:$B$99
Zone de critères: $D$2:$E$3
Copier dans: $G$2:$H$2

Le résultat obtenu en le faisant manuellement est le résultat escompté, il n'y a donc aucun problème. Le problème survient quand je répète l'opération pour en faire une macro: elle me renvoie un résultat vide.

Voici le détail de ma macro:

' Test Macro
'

'
Range("A2:B99").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"D2:E3"), CopyToRange:=Range("G2:H2"), Unique:=False
End Sub


Quelle est mon erreur dans la réalisation de ma macro?

Si je n'ai pas été assez précis, n'hésitez pas à m'en faire part. Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.

David
 

ralph45

XLDnaute Impliqué
Re : Filtre élaboré dans une macro

Bonjour drdavis, bonjour le fil

Si tu veux faire un filtre élaboré de l'onglet 1 sur l'onglet 2, ton code est incomplet. Il faudrait lui indiquer la plage de départ...

Ton code devrait commencer comme cela (Noms des colonnes et lignes à moduler) :

Sheets("1").Range("A1:K3091").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:K2"), CopyToRange:=Range("A5:K5"), Unique:=True

Cette macro de filtre élaboré que j'utilise régulièrement dans un fichier ne m'a jamais posé de souci... Essaye de faire une copie expurgée de ton fichier et joins-la. Cela peut être fait très rapidement.

En espérant t'avoir aidé. :)
 

bond

XLDnaute Occasionnel
Re : Filtre élaboré dans une macro

D'expérience le plus simple est de nommer les 3 plages : Bdd, Crit et extract et ensuite d'utiliser les noms pour lancer le filtre...
NB : il ya des échanges bizarre de noms entre vba et excel, mais ça fonctionne...
Dans l'exemple joint tu verras que les noms que j'avais donner au départ dans la feuille (Base_de_données, Critères et Extraction), indiquer ainsi dans le vba ont été ré-interpréter directement par l'appli en Base_de_données (pas de changement), Criteres (e sans accent) et Extraire.

J'ai dit bizarre, mais autant que me souvienne c'est à cause que Excel, ou plutot Microsoft, est américain et qu'il a vaguement un soucis de traduction depuis une version antérieure d'Excel....

Edit : Bonjour Ralph
 

Pièces jointes

  • EvalFiltreAvanc.xls
    32.5 KB · Affichages: 305
  • EvalFiltreAvanc.xls
    32.5 KB · Affichages: 344
  • EvalFiltreAvanc.xls
    32.5 KB · Affichages: 370

drdavis

XLDnaute Nouveau
Re : Filtre élaboré dans une macro

Bonjour à vous deux et merci pour votre réponse rapide.

J'ai essayé tour à tour vos 2 solutions mais cela ne change pas mon problème. J'imagine bien que ce problème doit venir de moi mais bon... ;)

Question de newbie sans doute, mais comment fait-on une copie expurgée de mon fichier qui fait 390kb? Il me semble de fait que ce sera plus simple pour vous en ayant le fichier sous les yeux...

Encore merci.

David
 

blord

XLDnaute Impliqué
Re : Filtre élaboré dans une macro

Bonjour à tous,

Juste mon humble contribution, j'ai souvent remarqué que j'avais des résultats "vides" quand la feuille qui reçoit des données contient des infos... C'est pourquoi maintenant avant de lancer le filtre élaboré je prends toujours la peine de complètement vider la feuille avant le filtre...

Bonne journée !
 

Discussions similaires

Réponses
16
Affichages
603
Réponses
12
Affichages
592

Membres actuellement en ligne

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson