Téléchargement
illégal
Posez votre question Signaler

Macro avec Filtre élaboré [Résolu]

Damien@ 29Messages postés 14 septembre 2007Date d'inscription 22 décembre 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

Macro avec Filtre élaboré »

9 réponses
Réponse
+0
moins plus
Bonjour,

Voici un exemple de Filtre élaboré.xls exécuté par macro (visualiser le code de la feuille critères)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Mytå- 29 janv. 2011 à 20:10
Salut le forum

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

Mytå
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
De rien, au plaisir de te relire sur le forum
Ajouter un commentaire
Ce document intitulé « macro avec Filtre élaboré » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?