Question

J'ai plusieurs tableaux croisés dynamiques chacun avec leur propre tableau croisé dynamique sur des feuilles séparées dans Excel 2002.

Lorsque je tente de générer ces graphiques avec VBA avec le code suivant:

Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
    ' we use named ranges here
    .SetSourceData Source:=range(tblName)
    .Name = chtName

....

où tblname est une plage nommée vient d'être créé quelques lignes avant, le code fonctionne très bien s'il n'y a qu'une seule table et le graphique génère, mais me donne une erreur de temps d'exécution 1004: « Les données sources d'un rapport croisé dynamique ne peut pas être changé. .. » si je tente de générer un tableau croisé dynamique et graphique présenté un après l'autre.

Aller à insérer -> Nom -.> Définir, la liste des plages nommées créées semble être correcte

Quelle est la façon correcte de la définition des données source pour un tableau croisé dynamique avec une plage dynamique?

Était-ce utile?

La solution 2

Ce morceau de code suppose que vous avez seulement une table de pivot par feuille et la table de pivotement commence sur la cellule A1:

Sheets(wsName).Select
Range("A1").Select
Set cht = Charts.Add(after:=Worksheets(Worksheets.Count))
With cht
    .SetSourceData Sheets(wsName).Range("A1")
    .Name = chtName

...

changer également à un nom de feuille de calcul spécifique « Worksheets.Count » semble déclencher cette erreur aussi bien.

Autres conseils

Je pense que vous pourriez essayer de faire trop de choses à la fois.

Si la source de données va changer, je ne voudrais pas utiliser un graphique croisé dynamique.

Utilisez un tableau croisé dynamique, créer le graphique à l'exécution (comme votre exemple). Construisez votre tableau des résultats du tableau croisé dynamique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top