TDC via VBA problème de % et de selection de données

Bonjour à tous,

Je m'essaye au VBA afin d'automatiser certaines de mes tâches et je dois dire que c'est bien prenant ^^

Je rencontre deux soucis dans la création de mon TDC si une âme charitable sais m'éclairer.

Déja voici le résultat que je dois avoir.

capture1

1er problème une fois mon code terminé la création du tableau fonctionne bien par contre dans les colonnes %card ci-dessus vous avez un résultat en % avec deux chiffres derrière la virgule mais quand je test ma macro ce n'est plus ainsi voir ci-dessous.

capture2

Voici le code :

Sub Macro7()
'
' Macro7 Macro
'

'
    Range("M1:S5").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "ScanRate!R1C13:R9698C19", Version:=6).CreatePivotTable TableDestination:= _
        "ScanRate!R1C1", TableName:="PivotTable4", DefaultVersion:=6
    Sheets("ScanRate").Select
    Cells(1, 1).Select
    With ActiveSheet.PivotTables("PivotTable4")
        .ColumnGrand = True
        .HasAutoFormat = True
        .DisplayErrorString = False
        .DisplayNullString = True
        .EnableDrilldown = True
        .ErrorString = ""
        .MergeLabels = False
        .NullString = ""
        .PageFieldOrder = 2
        .PageFieldWrapCount = 0
        .PreserveFormatting = True
        .RowGrand = True
        .SaveData = True
        .PrintTitles = False
        .RepeatItemsOnEachPrintedPage = True
        .TotalsAnnotation = False
        .CompactRowIndent = 1
        .InGridDropZones = False
        .DisplayFieldCaptions = True
        .DisplayMemberPropertyTooltips = False
        .DisplayContextTooltips = True
        .ShowDrillIndicators = True
        .PrintDrillIndicators = False
        .AllowMultipleFilters = False
        .SortUsingCustomLists = True
        .FieldListSortAscending = False
        .ShowValuesRow = False
        .CalculatedMembersInFilters = False
        .RowAxisLayout xlCompactRow
    End With
    With ActiveSheet.PivotTables("PivotTable4").PivotCache
        .RefreshOnFileOpen = False
        .MissingItemsLimit = xlMissingItemsDefault
    End With
    ActiveSheet.PivotTables("PivotTable4").RepeatAllLabels xlRepeatLabels
    With ActiveSheet.PivotTables("PivotTable4").PivotFields("Noms")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
        "PivotTable4").PivotFields("Card ?"), "Count of Card ?", xlCount
    ActiveSheet.PivotTables("PivotTable4").PivotFields("Count of Card ?"). _
        Orientation = xlHidden
    ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
        "PivotTable4").PivotFields("Card ?"), "Count of Card ?", xlCount
    ActiveSheet.PivotTables("PivotTable4").PivotFields("Count of Card ?").Caption _
        = "% card"
    ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
        "PivotTable4").PivotFields("Numéro transaction"), "Count of Numéro transaction" _
        , xlCount
    ActiveSheet.PivotTables("PivotTable4").PivotFields( _
        "Count of Numéro transaction").Caption = "NB card"
    With ActiveSheet.PivotTables("PivotTable4").PivotFields("Card ?")
        .Orientation = xlColumnField
        .Position = 1
    End With
    Range("B4").Select
    With ActiveSheet.PivotTables("PivotTable4").PivotFields("% card")
        .Calculation = xlPercentOfRow
        .NumberFormat = "0,00%"
    End With
End Sub

Pourtant il y a bien le code :

    With ActiveSheet.PivotTables("PivotTable4").PivotFields("% card")
        .Calculation = xlPercentOfRow
        .NumberFormat = "0,00%"
    End With

La seconde chose :

ok c'est bien le tableau fonctionne mais par contre le but est de crée automatiquement ce tableau à partir de données qui seront différentes à chaque fois et donc quand je colle mes nouvelles données dans le fichier et que j'utilise la macro il va me selectionner uniquement les 9698 lignes alors que le nombre de ligne sera différent à chaque fois, je n'arrive pas à trouver comment faire pour qu'il sélectionne toutes les données en fonction du nombre de ligne.

Merci pour votre aide.

Petit up :)

Bonjour

95% des spécialistes Excel te diront qu'on ne crée quasi jamais un TCD par VBA mais manuellement

Par VBA on peut en modifier la source, qui peut être un fichier externe ou une requête POwerQuery pour simplifier encore les choses

Je n'en doute pas mais quand on n'a aucune formation VBA (Je ne suis pas spécialiste) cette fonction est bien pratique et aide à la compréhension.

Cela ne change pas que sur les 2 problèmes que je rencontre il doit y avoir une autre ligne de code qui pourrait résoudre cela.

RE

Si on construit manuellement comme conseillé, il n'est nul besoin d’être spécialiste VBA...

Par ailleurs sauf fichier externe utilisé directement, la source d'un TCD doit être un tableau structuré et dans ce cas sa taille est connue d'excel

Visiblement le forum n'est que pour les spécialistes qui savent coder désolé pour le dérangement.

RE

Décidément il n'y a pas pire sourd que celui qui ne veut pas entendre.

ON NE CREE PAS DE TCD par VBA

Tu veux de l'aide mais tu t'arc boutes sur de mauvaises pratiques alors qu'avec 365 tu as tu les outils adaptés...

Bonsoir,

Pour ton problème de % tu supprimes simplement la ligne suivante ;)

        .NumberFormat = "0,00%"
Rechercher des sujets similaires à "tdc via vba probleme selection donnees"