|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Bonjour,
Je crée un tableau croisé dynamique par macros. J'ai ajouté une macro à la suite qui crée un filtre sur les valeurs de la 3ème colonne du TCD. Ça donne ça : Code :
- le filtre existe dans mon TCD - le filtre numérique est correctement sélectionné : supérieur ou égal à 100 Mais les valeurs affichées dans la colonne en question ne correspondent pas du tout... ![]() Il y a de tout, des valeurs plus petites, plus grandes... un filtre a bien été fait car des lignes ont disparu, mais sans queue ni tête... Lorsque j'efface manuellement ce filtre, et que je le recrée à l'identique encore manuellement, ça marche nickel ! ![]() Quelqu'un aurait une idée svp ? |
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Utilise l'enregistreur de macros, poste le code généré et indique ta version d'Excel.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Ma version est Excel 2010
J'avais utilisé l'enregistreur de macro, et je m'en suis légèrement écarté, vu qu'elle ne marchait pas du tout pour le coup. ("La méthode AutoFilter de la classe Range a échoué") Code :
|
||
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
J'ai du mal à comprendre; tu filtres sur un champ ou sur un item ? Qu'est-ce qu'il y a en C3 ?
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
C3 : c'est la première cellule appartenant au TCD dans la colonne C.
C'est dans cette cellule que se crée le filtre (que ce soit manuellement ou par la macro) Mon but est de n'afficher que les lignes du TCD dont la valeur située dans la colonne C matche mon filtre. Voici un morceau du TCD avant que le filtre ne soit créé. |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Ça serait sympa d'avoir un petit fichier de test (sans données confidentielles).
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Arffff...
Malheureusement c'est bourré d'info confidentielles. Or le TCD garde toutes les infos du tableau de base, donc impossible de le rendre non confidentiel. Et j'ai essayé en ne copiant que les valeurs de mon TCD dans un nouveau classeur : ça marche très bien avec une macro. Le problème vient donc clairement de l'interaction d'un filtre avec le TCD (mais seulement en génération automatique... bizarre...) Pour essayer de donner une meilleure idée de ce qui se passe, je joins une nouvelle copie d'écran : (Remarquez le tooltip qui précise bien que les éléments de la colonne C sont supérieurs ou égaux à 100 )
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Sinon tu boucles sur les lignes et tu les caches si elles ne remplissent pas ta condition...
(J'avoue que je n'ai jamais réussi à faire marcher correctement AutoFilter par macro, et ce n'est pas faute d'avoir essayé suite à certaines questions de membres sur ce forum.)
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#9 | |
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 70 ![]() |
Citation:
Il me semble que s'il y a ,Operator:=xlAnd il devrait y avoir derrière un second critère...Criteria2:= xxxx sinon, il faut supprimer ,Operator:=xlAnd Cordialement |
|
|
|
00
|
|
|
#10 | |||
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Citation:
J'ai suivi ton conseil : ça marche nickel ! C'est un peu long au niveau du traitement... Et j'ai du me creuser la tête car je suis novice en VBA et je trouve ça assez peu intuitif Etre obligé de sélectionner une cellule pour pouvoir sélectionner une ligne... à moins qu'on puisse faire plus simple ? Mais ça marche, ça fait ce que je veux, et c'est bien là le plus important. ![]() Merci pour votre temps et vos réponses ! ![]() A toutes fins utiles : (J'ai aussi créé une macro pour faire la manipulation inverse) Code :
|
|||
|
|
00
|
|
|
#11 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Evite au maximum de sélectionner, tu perds en performance
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#12 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Ah voilà... je vais essayer ça.
Ca simplifie déjà visuellement et je veux bien croire que ne pas sélectionner fait gagner du temps ! Merci |
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : décembre 2007 Messages : 70 ![]() |
Avec ta version initiale, as-tu essayé de supprimer la fin de l'instruction comme indiqué au message #9 et regardé si cela fonctionne mieux?
Cordialement |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Oui, pardon j'ai oublié de répondre.
Ça ne change rien... |
|
|
00
|
|
|
#15 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Ou bien, pour éviter une boucle :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#16 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Oui, en effet c'est beeeeaaaauuuucoup plus rapide !
(en changeant le True en False |
|
|
00
|
|
|
#17 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Pour masquer les lignes, tu peux utiliser : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#18 |
|
Invité de passage
![]() Ingénieur validation Inscription : janvier 2012 Messages : 20 ![]() |
Bonjour,
Je n'ai pas eu le temps d'essayer la dernière proposition. Mais ce que j'ai mis auparavant fonctionne très bien ! Je mets le topic en résolu. ![]() Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com