Mettre une colonne d'un TCD format % total distinct

Bonjour à tous,

Voici mon problème, je tente de créer un TCD qui ressemble à ca :

cap1

Celui ci à été créé manuellement et tout fonctionne bien.

Quand je récupère la trace de l'enregistrement manuel, le TCD ce crée parfaitement mais lors du changement de format des colonnes une erreur survien :

cap2

Cette dernière à lieu sur la ligne ".Calculation = xlPercentOfTotal"

Voici le code utilisé :

Cells.Select
Sheets("Impacts").Select
Workbooks("Impacts_historic.xlsx").Connections.Add2 _
    "WorksheetConnection_Impacts!$A:$S", "", _
    "WORKSHEET;" & ActiveWorkbook.Path & "\[Impacts_historic.xlsx]Impacts" _
    , "Impacts!$A:$S", 7, True, False
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
    ActiveWorkbook.Connections("WorksheetConnection_Impacts!$A:$S"), Version:=6). _
    CreatePivotTable TableDestination:="WagonsPays!R1C1", TableName:= _
    "Tableau croisé dynamique", DefaultVersion:=6
Sheets("WagonsPays").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique")
    .ColumnGrand = True
    .HasAutoFormat = True
    .DisplayErrorString = False
    .DisplayNullString = True
    .EnableDrilldown = True
    .ErrorString = ""
    .MergeLabels = False
    .NullString = ""
    .PageFieldOrder = 2
    .PageFieldWrapCount = 0
    .PreserveFormatting = True
    .RowGrand = True
    .PrintTitles = False
    .RepeatItemsOnEachPrintedPage = True
    .TotalsAnnotation = True
    .CompactRowIndent = 1
    .VisualTotals = False
    .InGridDropZones = False
    .DisplayFieldCaptions = True
    .DisplayMemberPropertyTooltips = True
    .DisplayContextTooltips = True
    .ShowDrillIndicators = True
    .PrintDrillIndicators = False
    .DisplayEmptyRow = False
    .DisplayEmptyColumn = False
    .AllowMultipleFilters = False
    .SortUsingCustomLists = True
    .DisplayImmediateItems = True
    .ViewCalculatedMembers = True
    .FieldListSortAscending = False
    .ShowValuesRow = False
    .CalculatedMembersInFilters = True
    .RowAxisLayout xlCompactRow
End With
ActiveSheet.PivotTables("Tableau croisé dynamique").PivotCache. _
    RefreshOnFileOpen = False
ActiveSheet.PivotTables("Tableau croisé dynamique").RepeatAllLabels _
    xlRepeatLabels
With ActiveSheet.PivotTables("Tableau croisé dynamique").CubeFields( _
    "[Plage 10].[Country]")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique").CubeFields.GetMeasure _
    "[Plage 10].[ID]", xlSum, "Somme de ID 3"
ActiveSheet.PivotTables("Tableau croisé dynamique").AddDataField ActiveSheet. _
    PivotTables("Tableau croisé dynamique").CubeFields( _
    "[Measures].[Somme de ID 3]"), "Somme de ID"
ActiveSheet.PivotTables("Tableau croisé dynamique").AddDataField ActiveSheet. _
    PivotTables("Tableau croisé dynamique").CubeFields( _
    "[Measures].[Somme de ID 3]"), "Somme de ID2"
ActiveSheet.PivotTables("Tableau croisé dynamique").CubeFields.GetMeasure _
    "[Plage 10].[Asset Name]", xlCount, "Nombre de Asset Name 5"
ActiveSheet.PivotTables("Tableau croisé dynamique").AddDataField ActiveSheet. _
    PivotTables("Tableau croisé dynamique").CubeFields( _
    "[Measures].[Nombre de Asset Name 5]"), "Nombre de Asset Name"
ActiveSheet.PivotTables("Tableau croisé dynamique").AddDataField ActiveSheet. _
    PivotTables("Tableau croisé dynamique").CubeFields( _
    "[Measures].[Nombre de Asset Name 5]"), "Nombre de Asset Name2"
With ActiveSheet.PivotTables("Tableau croisé dynamique").PivotFields( _
    "[Measures].[Somme de ID 3]")
    .Caption = "Impacts"
    .Function = xlCount
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique").PivotFields( _
    "[Measures].[Somme de ID 3]")
    .Caption = "% Impacts"
    .Function = xlCount
    .Calculation = xlPercentOfTotal
    .NumberFormat = "0.00%"
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique").PivotFields( _
    "[Measures].[Nombre de Asset Name 5]")
    .Caption = "Total Asset"
    .Function = xlDistinctCount
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique").PivotFields( _
    "[Measures].[Nombre de Asset Name 5]")
    .Caption = "% Asset"
    .Function = xlDistinctCount
    .Calculation = xlPercentOfTotal
    .NumberFormat = "0.00%"
End With

Je ne comprend vraiment pas et j'ai tout tenté et cherché une solution partout mais je ne trouve pas la solution du pourquoi à la main ca fonctionne et pas en VBA !

Merci d'avance à tous ceux qui prendrons le temps de me lire et de m'aider :)

Bonjour

Cordialement

Bonjour à tous

De façon générale on ne crée pas de TCD par VBA

Il est très facile de modifier, par VBA ou autres, la source de TCD modélisés manuellement.

Rechercher des sujets similaires à "mettre colonne tcd format total distinct"