Macro tri des données a afficher dans tableau croisé

  • Initiateur de la discussion Initiateur de la discussion will
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

will

XLDnaute Nouveau
Bonjour,

je récupère chaque semaine un fichier de données que j'exploite par un TCD.
Je voudrais faire une macro qui me trie selon les PivotItems car je en veux pas tous les comptabiliser.
Mon problème est que le nombre de pivotitems que je veux masquer est variable d'une semaine à l'autre, leur point commun est qu'ils commencent par "EG".
Ci dessous un exemple du code quand j'enregistre la macro en manuel:

With ActiveSheet.PivotTables("PivotTable33").PivotFields("Str Name")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable33").PivotFields("Str Name").CurrentPage = _
"(All)"


With ActiveSheet.PivotTables("PivotTable33").PivotFields("Str Name")
.PivotItems("EG All").Visible = False
.PivotItems("EG CARO").Visible = False
.PivotItems("EG CARO-RCA-B").Visible = False
.etc...
End With

ActiveSheet.PivotTables("PivotTable33").PivotFields("Str Name"). _
EnableMultiplePageItems = True
End Sub

D'une semaine sur l'autre, les noms que je recupérerais (EG all, EG CARO) pourront changer.
Je voudrais donc quelque chose qui fasse:
Pour chaque Pivotitems dont le nom commence par "EG", rendre "false" la propriété "visible" de ce pivot items.

Mais je ne sais pas l'ecrire en vba, merci de votre aide.
 
Re : Macro tri des données a afficher dans tableau croisé

Bonjour will et bienvenue sur le forum,

cela devrait être quelque chose comme ceci:
Code:
Dim pvt As PivotItem
For Each pvt In ActiveSheet.PivotTables("PivotTable33").PivotFields("Str Name").PivotItems
    pvt.Visible = Left(pvt.Name, 2) = "EG"
Next

En sachant qu'un vieux bug excel traine depuis des années sur la propriété .Visible des PivotItems. Donc à tester.

A+
 
Re : Macro tri des données a afficher dans tableau croisé

Bonsoir,
La réponse de @Hasco me semble bonne mais pas très claire, car la condition positive est très subtile (j'aime d'ailleurs)

mais personnellement j'utiliserais plutôt une fonction LIKE pour tester le nom du tableau car il peut toujours y avoir des caractères un peu voyageurs.
if pvt.name like "*EG* then pvt.visible


Hellnar
 
Re : Macro tri des données a afficher dans tableau croisé

Bonjour,

Merci pour vos réponses! La méthode de Hasco marche, j'ai juste rajouté un "not" car c'est l'inverse qu'il me faut:

pvt.Visible = Not Left(pvt.Name, 2) = "EG".

Je vais pouvoir passer à la suite. Merci encore pour votre aide.

Will
 
Re : Macro tri des données a afficher dans tableau croisé

Bonjour,
Attention cependant à ma remarque sur le nom du fichier, il est absolument nécessaire que EG soient les deux premières lettres....
A vous de voir.

Si vous êtes contents des renseignements n'oubliez pas de cliquez sur le "like" en bas à droite.... ca fait toujours plaisir.

Bonne journée
Hellnar
 
Re : Macro tri des données a afficher dans tableau croisé

Bonjour,

Puisqu'il faut justifier de ses choix d'écriture:

J'ai choisit left pour deux raisons principales:

1- Left est toujours plus rapide à l'éxécution que Like

2- Queque chose comme ceci: if pvt.name like "*EG* then pvt.visible sera vrai pour
"EG CARO"
" EG CARO"
"CAREG "
"ERGOT"
"REGISTRE"
etc...

Une troisième raison était que son exemple n'était pas suffisament fournit en valeurs variées.

S'il a peur des espaces trainant, il peut toujours ajouter un TRIM

Chacun a ses choix d'écriture et rien n'ai parfait, seul le demandeur peut déterminer ce qui lui convient ou non.

A+
 
Re : Macro tri des données a afficher dans tableau croisé

Bonjour,

je vais rester sur le Left, car ce sont vraiment les 2 premiers caractères qui m'interessent, et pas les suivants dans lesquels je pourrais effectivement avoir une suite "eg", sans pour autant vouloir l'éliminer.

Bonne journée,
Will
 
Re : Macro tri des données a afficher dans tableau croisé

Bonsoir,

Bien sur, LEFT est une TRES bonne solution. Ce n'est pas une critique de cet outil. Mais, par expérience de téléchargement automatique de fichiers, il arrive souvent qu'il y ait des variantes dans les écritures. Pendant des années par exemple j'ai dû télécharger des centaines de copies d'étudiants pour les corriger par macros. Même en ayant les noms de tous, il y avait souvent des erreurs de dénomination (y compris dans leur propre nom), etc... Donc autant être préparé à des mélanges de ce genre. Cela peut toujours servir.

Cordialement

Hellnar
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
69
Affichages
9 K
Retour