TCD - différence en % par rapport
Bonjour à tous,
j'ai effectué quelques recherche sur internet et sur le forum avant de me lancer sur ce premier post.
Je rencontre une petite difficulté. En effet, je cherche à calculer de façon automatique via un tableau croisé dynamique des écarts entre deux périodes en %. J'ai pour cela tenté d'utiliser la fonction "afficher les valeurs/différence en % par rapport..." mais sans succès.
Voici mon cas :
Je dispose d'une base de données avec comme colonnes : Année / Mois / Semaine / Montant / Produit / Famille de produit
Dans un tableau croisé dynamique je mets en filtre :
Année
Mois
Semaine
Mes étiquettes de ligne sont les suivantes :
Famille de produit
Produit
En colonne, je place les valeurs.
Je souhaite obtenir deux colonnes, l'une m'indiquant le montant et l'autre l'écart par rapport à la semaine passée en %.
Je me suis essayé à différentes organisations et la seule qui semble fonctionner m'oblige à sortir les semaines du filtre pour les placer en colonnes.
Question n°1: Comment puis-je faire pour maintenir les semaines dans le filtre.
Question n°2: Je n'arrive pas à faire de tri automatiques sur ces valeurs, comment faire ?
Merci d'avance pour vos lumières qui me seront bien utiles.
Bonne journée & bonnes fêtes de fin d'année à tous,
Victor.
Bonjour Victor,
bienvenue sur le forum,
peux-tu fournir un fichier (sans donnée confidentielle), tes chances de réponses en seront augmentées.
Bonjour Patrick,
voici le fichier demandé.
N'hésitez pas à revenir vers moi si vous souhaitez de plus amples informations.
Merci par avance,
Victor.
Bonjour,
Un petit cadeau de Noël, et un peu de réflexion pour les jours chômés de fin d'année.
Ctrl+q pour lancer la procédure.
J'ai traité une différence mensuelle mais le code est à adapter pour une différence hebdomadaire, ou autre.
A te relire pour + d'infos.
Cdlt et bonnes fêtes de fin d'année.
Option Explicit
Public Sub TCD()
'Jean-Eric le 23 décembre 2012
'Ctrl + q pour lancer la procédure
Dim sH As Worksheet
Dim Plage As Range
Dim PTCache As PivotCache, PT As PivotTable, p As PivotField, r As PivotItem
'-------------------------------------------------------------------------------------------------
With Application
.Calculation = xlCalculationManual
.DisplayAlerts = False
.ScreenUpdating = False
End With
'-------------------------------------------------------------------------------------------------
On Error Resume Next
ActiveWorkbook.Worksheets("Pivot").Delete
On Error GoTo 0
'-------------------------------------------------------------------------------------------------
Set sH = Worksheets("Data")
Set Plage = sH.Range("A1").CurrentRegion
Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=Plage)
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Pivot"
Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("Pivot").Range("A1"), _
TableName:="TCD_1")
'-------------------------------------------------------------------------------------------------
With PT
With .PivotFields("Année")
.Orientation = xlPageField
.EnableMultiplePageItems = True
End With
With .PivotFields("Mois")
.Orientation = xlColumnField
'.EnableMultiplePageItems = False
End With
.PivotFields("Catégorie").Orientation = xlRowField
.PivotFields("Produit").Orientation = xlRowField
With .PivotFields("Montant commandé")
.Orientation = xlDataField
.Caption = "Cmde EUR"
.Function = xlSum
.NumberFormat = "#,##0"
End With
With .PivotFields("Montant commandé")
.Orientation = xlDataField
.Caption = "Diff m-1"
.Calculation = xlDifferenceFrom
.BaseField = "Mois"
.BaseItem = "(précédent)"
.NumberFormat = "[Blue]+#,##0;[Red](#,##0);;"
End With
With .PivotFields("Montant commandé")
.Orientation = xlDataField
.Caption = "%"
.Calculation = xlPercentDifferenceFrom
.BaseField = "Mois"
.BaseItem = "(précédent)"
.NumberFormat = "[Blue]+0.0%;[Red](0.0%);;"
End With
.ColumnGrand = True
.RowGrand = True
.FieldListSortAscending = True
'For Each p In .PivotFields
'If p.Orientation = 1 Then p.Subtotals = Array(False, False, False, False, _
False, False, False, False, False, False, False, False)
'Next p
.DisplayErrorString = True
.ShowDrillIndicators = True
With .PivotFields("Catégorie")
For Each r In .PivotItems
r.ShowDetail = False
Next r
End With
End With
'-------------------------------------------------------------------------------------------------
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.ScreenUpdating = True
End With
'-------------------------------------------------------------------------------------------------
Set sH = Nothing: Set Plage = Nothing: Set PTCache = Nothing: Set PT = Nothing
End Sub