Erreur GetPivotData

Bonjour,

J'utilise la fonction GetPivotData pour extraire des valeurs de TCDs. Cela fonctionne bien sur windows, mais j'ai l'erreur suivante sur mac :

"The specified dimension is not valid for the current chart type."

Des idées sur l'origine du problème ?

Sub GetPivotData_Annual()

    Dim pt As PivotTable

    Dim wsPT As Worksheet
    Dim wsFig As Worksheet
    Dim get_result, get_result_two, total_result, sum_result As Range
    Dim ref_item, ref_month, ref_year As String
    Dim r As Integer

    Set wsPT = Worksheets("Calculation")
    Set wsFig = Worksheets("Figures")
    wsFig.Range("C26:O28").Value = ""
    wsFig.Range("C56:O58").Value = ""
    wsFig.Range("C84:O86").Value = ""
    wsFig.Range("C143:O146").Value = ""
    wsFig.Range("C172:O176").Value = ""
    wsFig.Range("C204:O207").Value = ""
    wsFig.Range("C233:O237").Value = ""
    wsFig.Range("C270:O273").Value = ""
    wsFig.Range("C310:O315").Value = ""
    wsFig.Range("C344:O346").Value = ""
    wsFig.Range("C408:O410").Value = ""

    ref_year = wsFig.Cells(4, 19)       'Indirect input in the Figures Sheet.

    Set pt = Worksheets("Calculation").PivotTables("TCD_1")

    Set Field = pt.PivotFields("YEAR")

    With wsPT
        With pt
            Field.CurrentPage = ref_year
        End With
    End With

    Set total_result = wsFig.Range("O26")
    r = 3

    For field_row = 1 To r
        ref_item = Choose(field_row, "", "AES", "Other")    'If r = 1, choice = "". It does not matter as ref_item is not used in the IF loop whenevr r = 1.

        For i_month = 1 To 12

            ref_month = Choose(i_month, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

            Set get_result = wsFig.Range("B26").Offset(field_row - 1, i_month)  'Start at the row to be filled, so "-1" to cancel offset when r = 1.

            If field_row = 1 Then
                'On Error Resume Next
               get_result.Value = pt.GetPivotData("Count of Request ID", "MONTH", ref_month).Value

            ElseIf field_row > 1 Then
                On Error Resume Next
                get_result.Value = pt.GetPivotData("Count of Request ID", "AIRLINE", ref_item, "MONTH", ref_month).Value

            End If

        If IsEmpty(get_result) Then
            get_result.Value = 0
        End If

        Next i_month
    Next field_row

    total_result.Value = Application.WorksheetFunction.Sum(Range("C26:N26").Value)
    total_result.Offset(1, 0).Value = Application.WorksheetFunction.Sum(Range("C27:N27").Value)
    total_result.Offset(2, 0).Value = Application.WorksheetFunction.Sum(Range("C28:N28").Value)

Merci d'avance de votre aide.

bonjour

du VBA pour bricoler après un beau TCD ?

VBA n'est pas stable ni universel, comme tu en fais l'expérience

à quoi sert d'extraire des données d'un TCD ?

en général, on se rend compte qu'on peut soit garder le TCD, soit en faire un second, simplifié

mieux : on fait un graphique

encore mieux, sur Windows, on télécharge Power BI desktop gratuit

Bonjour,

J'ai une vingtaine de TCDs dont je souhaite extraire plusieurs valeurs particulières dans une autre feuille avec des graphiques associés.

La manipulation manuelle est longue donc j'utilise cette méthode pour automatiser l'extraction de données.

Je n'ai pas les droits administrateurs pour installer Power BI desktop sur un pc pro, donc cette solution n'est pas envisageable pour ce problème en fait.

Il y a déjà des graphiques et un format de rapport bien défini que je me dois de suivre. Donc la seule chose que j'ai à faire c'est de copier des données dans certaines cellules. Les graphiques font le reste. Je peux certes faire autrement à titre personnel mais là je n'ai pas le choix ici.

re

si tes données viennent de 20 TCD, il t'est possible de créer un 21è TCD avec les données voulues

joins un exemple avec 2 ou 3 TCD

Bonjour,

Joins un petit fichier et je regarderai sous Mac.

Tu peux commencer par mettre Option Explicit en en-tête de module.

Ceci va t'obliger à déclarer toutes tes variables et les typer (correctement).

Remplace Field par pf (pf as PivotField) !?

A te relire.

Cdlt.

Les données étant strictement confidentielles, je ne peux malheureusement pas partager les TCD avec leur valeurs. Dès que possible je vais essayer de joindre un fichier mis en forme sans les valeurs.

si tes données viennent de 20 TCD, il t'est possible de créer un 21è TCD avec les données voulues

joins un exemple avec 2 ou 3 TCD

L'idée peut bien fonctionner, mais comment cela se gère au niveau des données que je souhaite être dans certaines cellules ça et là sur la feuille de destination ? Car dans tous les cas les données sont dans un TCD, même si c'est un 21ème. Y a-t-il d'autres moyens que getpivotdata ?

Tu peux commencer par mettre Option Explicit en en-tête de module.

Ceci va t'obliger à déclarer toutes tes variables et les typer (correctement).

Remplace Field par pf (pf as PivotField) !?

Bonjour. Je vais voir ce que ça donne.

Je sais que sur Mac, certaines différences existent, telles que Chr$(13) au lieu de Chr$(10). Est-il possible que d'autres différences posent souci ?

Merci bien.

re

je reprends

1- créer un fichier avec des données bidons et 2 ou 3 TCD comme tu as déjà et le résultat que tu cherches

2- il est plus que probable qu'il faille créer un TCD de plus qui reprenne les valeurs non pas des TCD précédents, mais des données d'origine, comme tout TCD.

Voici un fichier ci-joint.

14getpivotdata.xlsm (371.57 Ko)

je ne comprends rien !

trop compliqué

où sont les données, où sont les 2 ou 3 ou 100 TCD que tu fais, où est (dessiné au clavier) le résultat que tu cherches ???

sois clair, aide-nous à t'aider

Alors :

  • Les données sont dans la feuille Combined Data.
  • Les TCDs en exemple dans la feuille Calculation.
  • Le résultat de chaque getpivotdata se copie dans les tableaux de la feuille Figures.

Le module concerné est le module 4.

Le "résultat final" c'est d'obtenir certaines données des TCDs dans les tableaux de la feuille Figures. Les graphes sont en attentes de ces données pour se mettre en forme.

J'espère avoir été suffisamment clair.

re

voir le TCD en jaune

note : il n'y a que le mois de janvier dans tes données

note 2 : un date se saisit TOUJOURS jj/mm/aa ou aaaa

ensuite Excel se chargera de faire des regroupements pas année, mois... d'un clic !

en principe donc les colonnes MOIS et ANNEE sont inutiles et alourdissent inutilement

Ok c'est noté merci.

Il n'y a que le mois de Janvier en effet pour l'exemple.

Dans la feuille combined data, il y a des dates au format dd/mm/aaaa dans la version complète. Or je souhaite les filter par mois, comment faire alors sans avoir une colonne supplémentaire avec un identifiant de mois ?

Donc pour résumer, l'alternative à GetPivotData c'est de créer un 2ème TCD dans la forme voulu, puis de faire une copie des données jusqu'à la destination souhaitée.

Est-ce normal sur mac que le même code vba plante sur getpivotdata alors qu'il s'agit du même fichier ? Problème de version logicielle ou autre ?

re

est-ce que le TCD jaune te donne ta réponse à la question de départ ?

on reparlera du reste ensuite

Re,

Oui comme je l'ai dit précédemment, c'est une façon alternative de procéder qui permet d'avoir le même résultat avec le TCD jaune.

Donc oui cela répond au problème posé pour obtenir ces valeurs.

Rechercher des sujets similaires à "erreur getpivotdata"