Posez votre question Signaler

Filtre élaboré sous Excel 2007, critère

Le Pingou 8580Messages postés mercredi 11 août 2004Date d'inscription ContributeurStatut 3 juillet 2015 Dernière intervention - Dernière réponse le 26 avril 2011 à 20:56
Bonjour,
Mon filtre élaboré dans une procédure fonctionne correctement sous Excel 2003:
Range("Global!Base_de_donnees").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("LiBasePlaq!Criteres"), CopyToRange:=Range("LiBasePlaq!Extraire"), _Unique:=False
Mais plus sous Excel 2007 au niveau du critère.
Pour par exemple critère : 123 ou 12.10.2007 tout fonctionne
Pour critère : >123 ou <>12.10.2007 (càd avec les opérateurs) j’obtiens aucune valeurs….
Le critère se trouve dans une cellule de la plage « LiBasePlaq!Criteres »
Merci de votre aide.
Lire la suite 
Réponse
+1
moins plus
Bonjour, je pense avoir trouvé une solution, j'imagine que c'est un bug pour la version 2007... mais je ne parle que pour la date...
en fait le format de la cellule est bien une date type 12/02/2007.
dans la zone de critère, pour effectuer le filtre avancé, il faut bien saisir >12/02/2007 en temps normal et sur les versions antérieures !
sauf que : avant d'indiquer le signe '>' ou un autre signe, il faut transformer le format de la cellule en format standard, mais que dans la zone de critère. il s'affichera donc à la place de 12/02/2007 = 37663 (ce chiffre étant la codification d'excel pour repérer une date à partir de l'année 1900).
une fois le changement de format de cellule effecuté, on rajoute le signe dont on a besoin > ou < ou <> ou <= ou >=. on obtient donc dans la cellule >37663.
a partir de là, on peut lancer le filtre avancé et ça fonctionne... et sans modif de macro ou autre... !!
par contre, pour afficher toutes les lignes correspondantes au 12/07/2007, il n'y a rien besoin de faire, ça fonctionne nikel...

par contre, lorsqu'on utilise les fonctions de calculs =bdsomme(base;champs;zonecritère), la création de la zone de critère fonctionne très très bien sans modifier le format de la cellule. on reste à la saisie type >12/07/2007.

voilà.... j'y ai mis bien 40 min mais j'ai trouvé une solution en attendant de trouver mieux....
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

1 - as tu essayé sur 2007 de le faire manuellement ?
2 - as tu toujour sur 2007 recommancé les manip avec l'enregistreur de macro

personnelement, les filtres elabores sur les dates je les trouves penibles, j'utilise le format standard, avec les date en Format Entier

sur 2007 je n'ai pas encore essayé, mais sur 2002 je n'ai plus de problemes de cette maniere
Le Pingou 8580Messages postés mercredi 11 août 2004Date d'inscription ContributeurStatut 3 juillet 2015 Dernière intervention - 13 sept. 2008 à 00:01
Bonsoir,
Merci, je vais essayer vos propositions demain.
Chose étrange que je viens de découvrir, si j'ouvre mon classeur en *.xls , dpnc version 2003 sous Excel 2007, tout fonctionne correctement. Cela foire avec le classeur en *.xlsx ou *xlsm uniquement.
Bonne fin de soirée.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Wilfried_42
Concernant vos propositions (j’ai essayé avec date, nombre ou texte):
1 - as tu essayé sur 2007 de le faire manuellement ? Fonctionne correctement.
2- as tu toujours sur 2007 recommencé les manip avec l'enregistreur de macro ? Oui pendant l’enregistrement cela fonctionne. Par contre lors de l’exécution de la macro, plus de filtrage pour les critère avec opérateur de comparaison.

Pour le travail avec les dates est certes un peut plus complexe mais fonctionne super bien chez moi.

Ou donc se cache la faute … !
Ajouter un commentaire
Réponse
+0
moins plus
re:

alors la : moi, je viens de faire le contraire, j'ai fait un classeur sur 2007 voici le fichier http://cjoint.com/?jnjtM3Fjvc
ca marche tres bien

ensuite je l'ai enregistré en format 97 / 2003, je l'ai chargé sans probleme avec excel 2002
et devine,
ca marche super, je n'ai pas modifier la macro que voici
    Sheets("Feuil2").Cells.Clear
    Sheets("Feuil1").Range("base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets("Feuil1").Range( _
        "crit"), CopyToRange:=Sheets("Feuil2").Range("A1"), Unique:=False


pas une seule difference entre les deux codes
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Merci pour l'exemple très intéressent.
De mon côté le critère se trouve directement dans la zone de critère sans passé par (="<="&F1 ) et c'est bien là le problème.
Ajouter un commentaire
Réponse
+0
moins plus
re:

cet exemple etait que pour te montrer un methode que j'utilise et qui fonctionne tres bien

meme si j'utilise une userform, j'utilise des cellules intermediaires et je construis mon filtre de la meme maniere
Le Pingou 8580Messages postés mercredi 11 août 2004Date d'inscription ContributeurStatut 3 juillet 2015 Dernière intervention - 13 sept. 2008 à 14:00
Bonjour,
Oui j'ai très bien compris votre démarche et je vous en remercie.
Je vais même en profiter et l'adopter dans les cas qui se reproduiront.

Je viens de parcourir l'aide de MS dont la marche à suivre est identique à la mienne ... il y a donc un problème que je ne désespère pas de trouver...

En attendant j'utiliserai votre méthode.

Merci et bon week-end.
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Oui merci maloriane mais alors autant mettre la date format anglo-saxon, c'est plus rapide je trouve...
A noté qu'ils n'ont pas corrigé chez microsoft sur 2010 pareil !
Ajouter un commentaire
Ce document intitulé «  Filtre élaboré sous Excel 2007, critère  » 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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.