mise en forme automatique d'un TCD (PIVOT)

merinos

XLDnaute Impliqué
Bonjour le forum,


Cela fait bien longtemps que je n'ai pas fait de nouvelles macros....
Et je me retrouve depuis 3 jours coincé sur une mise en forme automatique de TCD.


Je m'explique:
Quand on crée un TCD en Excel 2007, il formate celui ci avec des standards .... qui sont rarement employés.
Et comme actuellement je crée une bonne série de TCD par jour, je cherche à automatiser le formatage.

Mes problèmes de présentation:

- Les données sont comptées et non additionnées... or quand on mets 3 données dans un TCD c'est pas pour avoir 3 fois le même résultat. => solutionné
- une fois passé en somme, les données ne sont pas sur format "#.##0" => solutionné
- si la donnée est un pourcentage, le format doit être adapté => solutionné en tenant compte du nom du champ. Si champ = »xxxx% »alors format = "0%
- le titre des colonnes est merdique "sum of xxxxxx" et je préfère voir quelque chose de plus court : « ∑ xxxxxx » => Solutionné
Donc j'ai prix une macro sur le net, je l'ai bidouillé un peu...

Mais il me reste comme problème:

Question 1 : la macro prend un TCD sur la page... et je voudrais qu'elle prenne soit le TCD dans le quel je suis (si je suis dans un TCD) soit qu'elle continue comme elle fait. Pour l’instant j’ai un TCD qui est modifié sur la page…. Mais je ne peux choisir lequel.

Question 2 : Pour la mise en forme des colonnes, je voudrais pouvoir séparer une part de cette macro afin de ne mettre en forme que la colonne sur laquelle je suis (et ne pas perdre la mise en forme des colonnes déjà existantes, c’est pour des données ajoutées a postériori sur le TCD)

Merci à ceux qui voudrons aider…


Bernard, alias Merinos




Je vous joint le code … à utiliser et transformer sans modération
Code:
Option Explicit

Sub ClassicPlusPivotTableSettings()

'Much of this is based on a book by Debra Dalgleish
'   named "Excel Pivot Tables Recipe Book: A Problem-Solution Approach", Chapter 13
'macro modified by B.Heymans

On Error Resume Next
Application.ScreenUpdating = False
 
Dim pt As PivotTable
Dim pf As PivotField
 
Set pt = ActiveSheet.PivotTables(1)
pt.ManualUpdate = True
  
'This section applies Classic PivotTable settings
'     and turns off the Contextual Tooltips and the Expand/Collapse buttons
With pt
    .InGridDropZones = True
    .RowAxisLayout xlTabularRow
    .TableStyle2 = ""
    .DisplayContextTooltips = False
    .ShowDrillIndicators = False
End With

'This sets each field in ascending order. It applies this even to fields that are not currently
'     in the PivotTable.
For Each pf In pt.PivotFields
    pf.AutoSort xlAscending, pf.Name
    pf.Subtotals(1) = True
    pf.Subtotals(1) = False
Next pf

'This command changes the formatting of any field that appears in the Values area
For Each pf In pt.DataFields
    pf.Function = xlSum
    pf.NumberFormat = "#,##0"
    If Right(pf.Caption, 1) = "%" Then pf.NumberFormat = "0%"
    If Left(pf.Caption, 6) = "Sum of" Then pf.Caption = ChrW(931) & Mid(pf.Caption, 7, 50)
Next pf

pt.ManualUpdate = False
Application.ScreenUpdating = True
ActiveSheet.PivotTables("PivotTable1").DisplayErrorString = True

'This ensures that only data that still exists in the data that drives the PivotTable
'     will appear in the PivotTable dropdown lists
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone

End Sub
 
Dernière édition:

merinos

XLDnaute Impliqué
Re : mise en forme automatique d'un TCD

Je trouves doucement ce que je dois faire...

la sélection du bon TCD : Set pt = Selection.PivotTable

La macro est maintenant dans un fichier attaché.
Avec un bouton pour la voir fonctionner.



Il me reste à pouvoir sélectionner une seule colonne à formater.


à bientôt
 

Pièces jointes

  • macros pivot.xlsm
    31.9 KB · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
298 021
Messages
1 965 209
Membres
200 876
dernier inscrit
Annaciri