Gestion des Pivot field en VBA

Bonjour les excellents!

je suis sur un nouveau sujet.

je travaille sur une database qui me donne un TCD qui donne un histogramme

ce que re voudrais c'est une macro

21maquette.xlsm (17.40 Ko)

qui fasse tout-disparaitre ou tout-apparaitre les catégorie de rebut (car dans le vrai database il y en a 35) puis le technicien selectionnera celle qui l'intéresse "a la mano"

ci-joint la maquette simplifiée

ne maitrisant pas les TCD en vba (j'ai lu l'artcile Wiki-université...j'ai rien compris) j'ai essayé de faire un truc avec l'enregistreur et O surprise...ça marche pas :)

Sub Macro6()
'
' Macro6 Macro
'

'
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.PivotLayout.PivotTable.PivotFields("A").Orientation = xlHidden
    ActiveChart.PivotLayout.PivotTable.PivotFields("B").Orientation = xlHidden
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Somme de C"). _
        Orientation = xlHidden
End Sub
Sub Macro7()
'
' Macro7 Macro
'

    Range("I23").Select
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("C"), "Somme de C", xlSum
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("B"), "Somme de B", xlSum
    ActiveChart.PivotLayout.PivotTable.AddDataField ActiveChart.PivotLayout. _
        PivotTable.PivotFields("A"), "Somme de A", xlSum
End Sub

evidement l'idéal si c'est possible ce serait mettre ça dans une boucle FOR plutot que d'avoir 35 instructions

Bonjour

VBA inutile

Tes soucis sont dus à un tableau non normalisé

L'idéal est de le normaliser en utilisant PowerQuery, totalement intégré à Excel à partir de 2016, en add on sur 2010 et 2013

A défaut passe pas l'assistant TCD pour obtenir un TCD dont la catégorie soit sélectionnable via un segment

22maquettetcd.xlsm (26.66 Ko)

bonjour et merci de votre réponse,

enfait le fichier est déja en utilisation, et je ne souhaite pas prendre le risque de modifier la structure des tableaux existant, du coup pour mon projet actuel je souhaiterais utiliser une macro plutot que de modifier la structure de mon TCD.

Par contre pour de futurs projet ou puis-je trouver de la documentation sur power query?

Bonjour

Je n'ai pas touché à ton tableau initial hormis le mettre sous forme de tableau structuré, indispensable depuis 17 ans où ils ont été introduits dans Excel, et t'ai proposé 2 solutions afin que le TCD repose sur un tableau normalisé sans que cela impacte le tableau source

Le VBA, déconstruisant puis reconstruisant en permanence les champs en valeurs, risque de bousiller le cache

Si tu as 2016, PowerQuery est intégré. Décroisement expliqué ici http://www.excel-formations.fr/Trucs_astuces/PQ02.php

Requête et TCD ajoutés au fichier

22maquettetcd.xlsm (36.09 Ko)

en effet ça pourrait répondre a mon besoin,

mais comment vous faites pour créer une ligen par caté gorie de rebut dans la query?

image

RE

Comme je l'ai dit : en décroisant

Dans PowerQuery, on supprime les 2 colonnes inutilisées dans le TCD puis, depuis la colonne Date, clic droit dépivoter les autres colonnes

On sort par Fermer et charger dans, Connexion seulement puis on construit le TCD sur la requête

puis on construit le tcd sur la requête

ok et on demande ça comment?

par ailleur je ne suis pas sur de savoir lui demander connexion seulement

Bonjour

Ce que je mets en gras italique sont les commandes du ruban donc Fermer et charger dans aboutit à une liste de choix dont Connexion seulement

Il y a pas mal de copies d'écran dans le lien que j'avais donné

Pour décroiser on a 2 options possibles :

  • soit sélectionner les colonnes à décroiser comme expliqué sur le lien. Là il y a forcément 12 mois donc c'est faisable.
  • soit sélection des colonnes à ne pas décroiser (mon explication) pour décroiser les autres quel que soit leur nombre et leur nom, ce qui est plus évolutif
Rechercher des sujets similaires à "gestion pivot field vba"