merinos
XLDnaute Accro
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
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: