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.

81explications.xlsx (36.23 Ko)

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
46explications.xlsm (37.91 Ko)
Rechercher des sujets similaires à "tcd difference rapport"