Filtre sur quelques variables uniquement (TCD via vba)

kawamonster Messages postés 27 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 12 avril 2016 - 3 déc. 2014 à 16:53
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 5 déc. 2014 à 07:40
Bonjour à tous,

Je possède un TCD qui est divisé en 2 colonnes : la 1ere colonne avec des codes clients, et la 2eme colonne avec des montants.

Je cherche à faire apparaitre uniquement les codes qui m'intéressent sachant que cette liste de codes change tous les mois et qu'elle est alimentée par des nvx codes inutiles.
Voici mon code qui ne marche pas (le filtre sur les codes bloque):

Sheets("encours_moyens").Select
With ActiveSheet.PivotTables("TCD1").PivotFields("UB")

Dim haha As Object
Mavariable1 = "480"
Mavariable2 = "481"
Mavariable3 = "484"
Mavariable4 = "7458"
Mavariable5 = "7861"
Mavariable6 = "8371"
Mavariable7 = "8874"
Mavariable8 = "8938"

With ActiveSheet.PivotTables("TCD1").PivotFields("UB")

For Each haha In .PivotItems
haha.Visible = True
Next
On Error Resume Next
For Each haha In .PivotItems
If haha.Name <> Mavariable1 Or Mavariable2 Or Mavariable3 Or Mavariable4 Or Mavariable5 Or Mavariable6 Or Mavariable7 Or Mavariable8 Then haha.Visible = False
Next

End With

J'ai défini toutes les variables que je veux garder ("480" etc...) et je pense que le probleme vient de la...
Comment faire pour avoir une seule variable via tous les codes que je souhaite conserver ? ==> ex : mavariable = "480" ou "481" ... au lieu d'avoir 478, 479 etc

Merci beaucoup pour votre aide!

Cordialement,

9 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 déc. 2014 à 17:07
Bonjour,
1) Pense à l'utilisation de select case
2) Il serait alors plus astucieux de cacher tout puis de ne montrer que si = au lieu de tout montrer puis de cacher ce qui est <>
3) que signifie selon toi :
Or Mavariable2 Or Mavariable3 Or Mavariable4 Or Mavariable5 Or Mavariable6 Or Mavariable7 Or Mavariable8
??
Ces OR n'ont de sens que pour filtrer (à TRUE) des booléennes !
0
kawamonster Messages postés 27 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 12 avril 2016 2
3 déc. 2014 à 17:51
Bonjour,

en fait j'ai une liste de codes compris entre 1 et 9999 et je veux uniquement certains codes (cf la liste 480 etc).

1) je ne connais pas select case
2) j'y ai pensé mais je cherchais à formuler qqch du genre mais pas pratique dans le cas présent car c'est sur un TCD
3) en fait je sous-entend : "parmi toute la liste de codes, affiche uniquement les 8 codes (480 etc) et si tu vois un code différent de ceux ci, ne les affiche pas"
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 3/12/2014 à 18:46
1) Je crois t'avoir répondu
2)
1) je ne connais pas select case

Belle occasion de l'apprendre (ton aide VBA te l'apprendra. Elle est assortie d'exemples simples et très clairs).

PS : je viens de l'ouvrir, cette aide VBA, à la rubrique "Select Case, instruction).
Non seulement elle est très claire, mais, de surcroît, on y trouve un exemple parfaitement adapté à ton problème (plusieurs valeurs possibles dans un block Case)

Il est par ailleurs peut-être temps d'apprendre la syntaxe d'utilisation de l'opérateur Or (c'est un minimum, bien que l'utilisation de Select Case rende inutile l'utilisation de OR).
OR ne peut concerner que deux expressions :
expression1 or expression2


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
kawamonster Messages postés 27 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 12 avril 2016 2
4 déc. 2014 à 10:57
Bonjour ucfoutu,

Merci beaucoup pour tes conseils! Je viens de tester la formule mais elle ne donne pas le résultat escompté... =( Ce que j'ai souligné ne devrait normalement pas être présent mais si je ne le mets pas le filtre ne se fait pas.

With ActiveSheet.PivotTables("TCD1").PivotFields("UB")

Dim haha As Object

Select Case UB
Case "480"
PivotItems.Visible = True
Case "481"
PivotItems.Visible = True
Case "484"
PivotItems.Visible = True
Case "7458"
PivotItems.Visible = True
Case "7861"
PivotItems.Visible = True
Case "8371"
PivotItems.Visible = True
Case "8874"
PivotItems.Visible = True
Case "8938"
PivotItems.Visible = True
Case Is <> "480" Or "481" Or "484" Or "7458" Or "7861" Or "8371" Or "8874" Or "8938"
PivotItems.Visible = False


End Select

Si tu as une solution je suis preneur car je galère vraiment je débute en VBA !
Merci d'avance!

Bien à toi,

End With
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2014 à 11:34
1) Tu n'as très manifestement pas lu ton aide VBA en ce qui concerne l'utilisation (super simple) de l'instruction Select Case !
2) tu n'as non plus pas lu les exemples qui assortissentt cette rubrique ! Or l'un deux est ta réponse !
3) que viennent ici faire encore tes OR (de surcroît ainsi écrits, en dépit de ce que je t'en ai dit).
Je comprends que tu débutes, mais, justement : c'est dès le début que l'on acquiert (ton aide VBA) les rudiments indispensables.
0
kawamonster Messages postés 27 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 12 avril 2016 2
4 déc. 2014 à 13:32
Je ne trouve pas ton aide même en cherchant...

Peux-tu stp me donner le code directement car j'en ai vraiment besoin rapidement.... au moins avec ta solution je pourrai m'entrainer pour d'autres fichiers.

merci.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2014 à 14:10
1)
Peux-tu stp me donner le code directement car j'en ai vraiment besoin rapidement

Non. C 'est contraire à ma religion et serait te rendre un très mauvais service. Ce n'est de toutes manières pas la vocation de ce forum (de développeurs).
2)
Je ne trouve pas ton aide même en cherchant...<
>
Tu ne connaitrais même pas l'interface de ton application ?
Ne te viendrait-il même pas à l'idée qu'elle se trouve dans la barre de menu de ton éditeur VBA ? N'y aurait-il ni bouton disant "?", ni disant "aide", ni disant "help" ? (selon ta version) ???
Désolé, mais là ... Tu as vraiment à coimmencer par le tout début du commencement du commencement (au moins apprendre ton IDE VBA).
0
kawamonster Messages postés 27 Date d'inscription lundi 21 mai 2012 Statut Membre Dernière intervention 12 avril 2016 2
4 déc. 2014 à 14:21
Et bien reste avec ta religion et ne perd pas de temps à répondre alors, si tu ne veux pas m'aider je ne t'y force pas, je trouverai quelqu'un de plus aimable.
Chacun son métier je ne suis pas développeur VBA, en revanche je suis excellent dans beaucoup d'autres domaines.
A défaut de prendre les gens de haut tu devrais soit répondre pour les aider, soit ne rien répondre : c'est l'essence même d'un forum d'entraide pour les non initiés.

Je t'invite à essayer de faire la recherche avec "select case" ou juste "case" dans l'aide VBA, avec ma version Excel2010 cela n'aboutit pas.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2014 à 14:38
Je t'ai aidé.
Ce forum est un forum de développeurs, pas un forum où l'on fait développer, sans rien avoir réellement commencé.
En as-tu au moins lu la charte et le règlement ?
Je crois que tu t'es trompé de forum.
Bref...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2014 à 16:48
Et maintenant :
Tu dis avoir Excel 2010 ?
alors :
Je ne trouve pas ton aide même en cherchant...

Et ceci, alors , :

En te rappelant ce que je t'en ai dit en vain :
Ne te viendrait-il même pas à l'idée qu'elle se trouve dans la barre de menu de ton éditeur VBA ? N'y aurait-il ni bouton disant "?", ni disant "aide", ni disant "help" ? (selon ta version) ???

Et cette "démarche"-là ne nécessite pourtant rien d 'autre que comprendre ce que l'on te dit (aucune compétence de développeur à ce stade).
Je t'aiderai volontiers lorsque tu auras commencé à faire cet effort minimum et que tu m'auras montré ce que tu auras écrit après avoir lu les rubriques d'aide (claires, explicites et simples) dont je t'ai parlé plus haut.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 5/12/2014 à 08:00
Bon ...
Pour te montrer de bon matin le degré d'importance d'assimiler les bases les plus élémentaires avant de tenter de développer, regarde le résultat de ce code (ton utilisation surprenante des OR) :
toto = 10
tata = 11
titi = 321
If toto = titi Or tata Then MsgBox "condition remplie bien que toto ne soit égal ni à titi ni à tata!"

toto = 10
tata = 10
titi = 10
If toto <> titi Or tata Then MsgBox "condition remplie bien que toto ne soit différent ni de titi ni de tata!"

Es-tu maintenant convaincu de l'énorme importance de ne pas "construire un édifice sans avoir préalablement assuré ses fondations" ?

PS et va un peu plus loin, maintenant, ainsi :
toto = 10
tata = 11
titi = 321
flute = toto = 10 Or tata
MsgBox flute
If flute = True Then MsgBox "c'est vrai car la valeur de true est - 1"

Et flute sera toujours = à -1, quelle que soit la valeur donnée à tata
Tu "mesures" maintenant mieux ton grand besoin de commencer par le début ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous