Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

Excel Forum d'entraide sur Excel

Réponse
 
Outils de la discussion
Vieux 13/11/2008, 15h28   #1 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Messages: 73
Par défaut Mettre tous les PivotsItems Invisible automatiquement

Voilà, je suis en train de me créer une macro, afin de me permettre une sélection automatisée de certains critères dans mon TCD.

Par exemple, dans mon TCD j'ai un champ qui me permet de filtrer mes valeurs selon des Directeurs de comptes. Pour sélectionner leurs statistiques un à la suite de l'autre, il n'y a aucun problème. Par contre, lorsque je veux faire une somme des statistiques des directeurs de comptes sélectionnés précédemment, ceci devient pour moi beaucoup plus compliqué, étant donné que mon "data" change pratiquement à chaque mois (des directeurs de comptes quittent et des nouveaux arrivent). C'est pourquoi je ne peux pas faire ceci dans ma macro :

Code :
Sub Macro1()
'
    Range("S14").Select
    With ActiveSheet.PivotTables("PivotTable7").PivotFields("Directeurs de comptes")
        .PivotItems("Amandine").Visible = False
        .PivotItems("Jacques").Visible = False
        .PivotItems("Audrey").Visible = False
        .PivotItems("Maxime").Visible = False
        .PivotItems("Francois").Visible = False
        .PivotItems("Charles").Visible = True
    End With
End Sub
Par contre, je me demandais s'il y avait une fonction VBA qui me permettait de mettre tous les PivotItems.visible = False automatiquement et ensuite de mettre certains PivotItems.visible = True de mon choix?

Si j'ai été trop vague ou que je me suis mal exprimé faites moi le savoir, sinon, merci d'avance pour votre aide.
athos7776 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 17h47   #2 (permalink)
Membre actif
 
Date d'inscription: mars 2008
Localisation: Nantes
Âge: 26
Messages: 186
Par défaut

Bonjour,

C'est (à ma connaissance) pas possible de le faire, essaye de le faire manuellement et tu verras qu'excel ne veut pas que l'on décoche tous les champs

Par contre tu peux lui demander d'en laissé 1

essaye avec ce bout de code

Code :
nb = ActiveSheet.PivotTables("PivotTable7").PivotFields("Directeurs de comptes").PivotItems.Count
For i = 1 To nb - 1
With ActiveSheet.PivotTables("PivotTable7").PivotFields("Directeurs de comptes")
        .PivotItems(i).Visible = False
End With
Next
David2304 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 13/11/2008, 20h06   #3 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Messages: 73
Par défaut

Wow de supra wow, ca fonctionne nickel. Ce sera idéal pour pallier au problème auquel je faisais face.

Donc c'est simple, je m'assure que mes TCD contiennent un pivotItem (blank) (filtré en ordre croissant bien entendu), ce qui revient en pratique à avoir décoché tous les pivotItems (puisqu'il ne reste que le pivotItem (blank)), pour ensuite activer les pivotItems que j'aurai sélectionné dans mes listes déroulantes. Rewow, merci encore David2304 (je suis facilement impressionnable quant aux boucles, puisque j'ai beaucoup de difficulté à comprendre les logiques derrière tout ça).

Sur ce, bonne journée .
athos7776 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/11/2008, 16h41   #4 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Messages: 73
Par défaut

Bonjour, me voici aux prises avec un nouveau problème suite au code précédent.

Je ne comprends pas pourquoi, mais dans certaines situations, le code suivant m'envoie toujours ce même message d'erreur : Unable to set the Visible property of the PivotItem class

Voici mon code :
Code :
    
    With ActiveSheet.PivotTables("PivotTable10").PivotFields("Codaccman2")
        .PivotItems("ADALY").Visible = True
    End With
Quelqu'un aurait-il une idée de ce que je dois faire?

Merci
athos7776 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/11/2008, 11h22   #5 (permalink)
Invité régulier
 
Date d'inscription: juillet 2007
Messages: 13
Par défaut Une solution possible sur l'origine du problème :

Peut être que l'items ADALY n'existe pas pour le champs Codaccman2 , à toi de vérifier dans le fichier .



Pour palier au problème , il suffit d'interroger d'abord sur l'existence de cet item :


for each item_ in ActiveSheet.PivotTables("PivotTable10").PivotFields"Codaccman2")


if item_.name = ("ADALY") then ActiveSheet.PivotTables("PivotTable10").PivotFields("Codaccman2") .PivotItems("ADALY").Visible = True
next
CodeFacile est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/11/2008, 15h03   #6 (permalink)
Nouveau membre du Club
 
Date d'inscription: juin 2007
Messages: 73
Par défaut

En fait, l'items ADALY existe bel et bien, puisque mon code a simplement été construit grâce à une macro des plus simples.

Je peux aussi expliquer la nuance. Si je change dans mon code le TRUE pour un FALSE, tout fonctionne à merveille, sinon il m'envoie pratiquement tout le temps le même message : Unable to set the Visible property of the PivotItem class. Ensuite, lorsque je place ce "field" (Codaccman2) comme critère de page (dans le haut du TBC), le TRUE fonctionne très bien. Sinon, s'il est mis comme critère de rangée dans mon TBC, il m'envoie le message d'erreur....Je ne sais pas quoi faire .
athos7776 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide