Macro avec Filtre élaboré

Résolu/Fermé
Damien@ Messages postés 28 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 6 février 2015 - 21 janv. 2011 à 12:06
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 30 janv. 2011 à 21:35
Bonjour,

Je suis bloqué sur une macro qui consiste à effectuer un filtre élaboré avec copie des données sur une autre feuille.

pour créer ma macro je me suis aidé de l'enregistreur, lors de l'enregistrement le filtre fonctionne correctement, mais quand j'exécute la macro je n'ai pas de bocage ni de message d'erreur mais je n'ai pas le résultat du filtre élaboré.

ci-dessous une partie de mon code :

'pour ne pas voir les changements d'écran
    Application.ScreenUpdating = False

'recherche des éléments
    Application.Goto Reference:="BASE"
    Sheets("feuille1").Select
    Range("BASE").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("criteres"), CopyToRange:=Range("resultat"), Unique:=False



Pouvez- vous m'aider
Merci à tous ceux qui voudront bien ce pencher sur mon problème


A voir également:

8 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
29 janv. 2011 à 17:53
Bonjour Damien,

Tu viens de mettre le doigt sur un problème que je n'avais pas remarqué et je t'en remercie.

Cette macro qui fonctionne parfaitement sous Excel 2003, ne fonctionne plus de la même façon avec Excel 2007.

Pour définir les critères de filtrage des dates sous Excel 2003, on pouvait écrire indifféremment <=31/12/2010 ou <= 40543 (numéro de série de la date).

Je ne sais pas pour quelle raison Excel 2007 n'accepte plus la première syntaxe (pourtant bien plus pratique visuellement), il l'interprète comme : supérieur ou égal à 31 divisé par 12 divisé par 2010 !. Peut-être existe-il un correctif chez Microsoft, mais je n'ai pas cherché.

La solution consiste donc à utiliser la seconde syntaxe. On peut aussi définir les critères par des formules par exemple :
Au lieu d'écrire
>= 31/12/2010
on peut écrire
=">=" & DATEVAL("31/12/2010")

C'est bien évidemment beaucoup moins visuel mais ça fonctionne.
1
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 29/01/2011 à 20:12
Salut le forum

Patrice pour le correctif, je ne sais pas mais on peut utiliser l'apostrophe dans l'écriture
'<=31/12/2010

Mytå
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
22 janv. 2011 à 23:00
Bonjour,

Voici un exemple de Filtre élaboré.xls exécuté par macro (visualiser le code de la feuille critères)
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
22 janv. 2011 à 23:16
Salut le forum

Inutile de poster en double : Macro avec filtre élaboré

Mytå
0
Damien@ Messages postés 28 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 6 février 2015 3
23 janv. 2011 à 10:13
bonjour Patrice

J'ai consulté ton fichier, et si je l'applique comme si dessous :

début/fin
Nom Date d'achat article quantité date de livraison
M.A >=01/01/2010
M.A <=01/12/2010

la macro fonctionne bien mais je n'obtient pas le résultat voulu car se positionnement de critères signifie "et"

alors que moi je souhaite les données situé entre le 01/01/2010 et le 01/12/2010
il faut donc que la zone de critère soit de la manière suivante pour dire "ou" :

début fin
Nom Date d'achat Date d'achat article quantité date de livraison
M.A >=01/01/2010 <=01/12/2010

voilà j'espère avoir été assez claire.

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
26 janv. 2011 à 23:02
Bonjour,

Les critères que tu as employé permettent de filtrer les valeurs qui répondent à la première ligne de critères ou à la seconde ligne de critères.

C'est à dire :
OU(ET(nom=M.A; Date>=01/01/2010);ET(nom=M.A; Date<=01/12/2010))

Ce que tu voudrais c'est :
ET(nom=M.A; Date>=01/01/2010;Date<=01/12/2010)

Pour réaliser la fonction ET il suffit de mettre les critères sur la même ligne sur 3 colonnes en répétant deux fois Date d'achat soit :

Nom  Date d'achat  Date d'achat
M.A  >=01/01/201   <=31/12/2010
0
Bonjour patrice

Tu as bien saisie ma demande,
Le filtre élaboré fonctionne bien ( en manuel), mais mon problème est que lorsque j'applique une macro pour réaliser se filtre, alors la macro ne me mais pas de résultat ni même de message d'erreur elle m'affiche tout simplement un tableau vierge.

Je te met en pièce jointe un fichier test qui reprend mon problème
http://www.cijoint.fr/cjlink.php?file=cj201101/cij3gR92G2.xlsm

Tu pourra voir par toi même quand réalisant ce filtre en manuel il fonctionne bien, mais quand je lance la macro qui effectue ce même filtre alors le tableau est vierge.

merci de ton aide
0
Bonjour, Patrice33740

Effectivement en changeant le format de la date en nombre tout fonctionne bien.

Grâce à toi je suis enfin débloqué. l'informatique est parfois capricieux.

Concernant le message de Mytà le fait de mettre ' devant ne change rien.

Merci à tous et surtout à toi patrice.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
30 janv. 2011 à 21:35
De rien, au plaisir de te relire sur le forum
0