3
votes

PivotChart - ActiveChart.Refresh fonctionne uniquement lors du débogage

J'ai un classeur Excel dans lequel je génère un tableau croisé dynamique par VBA à partir d'un tableau croisé dynamique existant. Ce graphique est créé en tant que nouvelle feuille de calcul.

Jusqu'à présent, le résultat est comme prévu. Mais lorsque je vais au graphique généré et que je veux changer quelque chose dans l'éditeur de champ, j'obtiens un message d'erreur:

Le rapport de tableau croisé dynamique a été enregistré sans les données source sous-jacentes. Sélectionnez "Actualiser les données" pour actualiser le rapport. (Traduit de l'allemand)

Après cela, je peux travailler dans l'éditeur de champs. Après une longue session de débogage angoissante, j'ai compris que mon code se comportait différemment lorsque je le parcourais avec le débogueur.

  • Lors de l'exécution normale du code, .Refresh n'a apparemment aucun effet.
  • Lorsque vous parcourez le code avec le débogueur, .Refresh fonctionne comme prévu et je ne reçois pas de message d'erreur dans l'éditeur de champ.

Je l'ai essayé avec Excel 2010 et 2013. Les deux versions montrent le même comportement.

  Charts.Add    
  chartSheetName = dqSource & "_PIVOT_CHART"
  With ActiveChart
    .Location where:=xlLocationAsNewSheet , Name:=chartSheetName 
    .HasTitle = True
    .ChartTitle.Select
    .ChartTitle.Text = "My chart title"  
    .Refresh ' <-- This is the suspect
  End With


2 commentaires

Y a-t-il une feuille dans le classeur qui est protégée?


Non, pas de draps protégés ou autres trucs de fantaisie.


3 Réponses :


0
votes

Vous pouvez essayer la ligne de code:

Do Events

après cela pour lancer le code en temps réel.


2 commentaires

Malheureusement, ce n’était pas la solution. Cela n'a eu aucun effet sur mon classeur.


qu'en est-il d'ActiveWorkbook.RefreshAll sur une nouvelle ligne au lieu de la ligne avec activechart.refresh



5
votes

Le Graphique croisé dynamique dépend d'un Tableau croisé dynamique .

Je suggère d'actualiser le PivotCache de ce tableau croisé dynamique à la place:

< pré> XXX


0 commentaires

0
votes

votre problème est dû au fait que vous devez lier les données sous-jacentes dans la feuille de calcul. étant le positionnement dans la cellule du tableau croisé dynamique, Aller aux options du tableau croisé dynamique => onglet données => cocher l'option "enregistrer les données source avec le fichier". Cette option rend Excel pour enregistrer le pivotcache avec la feuille de calcul.

J'espère que cela vous aidera. Meilleures salutations de Colombie.


1 commentaires

Malheureusement, cela n'a pas aidé. Je dois actualiser le classeur dans l'événement Workbook_Open ().