Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA programme qui marche une fois sur deux

Gizmette

XLDnaute Nouveau
Bonjour,

Je débute dans les macros et la programmation VBA et je ne parviens pas à comprendre une erreur renvoyée par VBA sur une macro qui marchait jusqu'ici puis maintenant une fois sur deux.

A partir d'une base de donnée, j'ai crée une macro qui m'intègre sur la même page que ma base deux tableaux croisés dynamiques. J'ai associé à chacun des tableaux un graphique croisés dynamique. J'ai crée également deux boutons qui permettent à l'utilisateur de "switcher" entre les deux graphiques pour n'avoir d'un seul graphique à l'écran. (je n'ai pas encore géré l'actualisation du tableau).

Afin d'éviter l'empilement des graphiques (car dès que l'on clic sur un bouton, un graphique apparait) j'efface le dernier crée et c'est à partir de cette fonction que tout ce met à buguer (une fois sur deux): "la méthode de "SetSourceData" de l'objet Chart à échouée" et le debogger me pointe mon code qui permet d'associer la source à mon graphique.

Quelqu'un pourrait-il m'aider à comprendre ce qui se passe et comment le corriger?
 

Pièces jointes

  • Test1graphique.xls
    200.5 KB · Affichages: 42

kingfadhel

XLDnaute Impliqué
Bonjour,
Je ne vois pas de graphique sur le fichier.
Mais, puisque tu utilises des TCD et tu leurs associes des graphiques, il y a des graphiques croisés dynamiques que tu peux utiliser directement sans passer par les TCD.
 

Pièces jointes

  • Capture.PNG
    41.1 KB · Affichages: 27

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Je me suis permis de "simplifier" ton code VBA de création de TCD
VB:
Sub insertiontableauAnnee_BIS()

'================================================================================
'création du tableau croisé dynamique pour l'entité trémies et traversées GENERAL
'================================================================================
Dim bouton As Object
Dim f As Worksheet
Dim pvtCache As PivotCache, pvt As PivotTable, DebutTCD$, srcPlage$
'**** crée selon la taille du tableau en trémies et traversées****
Set f = Sheets("TremiesTraversees")
srcPlage = f.Name & "!" & Range(Cells(2, 1), Cells(Rows.Count, 7).End(xlUp)).Address(-4150)
DebutTCD = f.Name & "!" & f.Range("K4").Address(ReferenceStyle:=xlR1C1)

Set pvtCache = ActiveWorkbook.PivotCaches.Add(xlDatabase, srcPlage)
Set pvt = pvtCache.CreatePivotTable(DebutTCD, "Tableau croisé dynamique1")
pvt.AddDataField pvt.PivotFields("Coût"), "Somme de Coût", xlSum
    With pvt.PivotFields("Année")
        .Orientation = xlRowField
        .Position = 1
    End With
pvt.TableStyle = "PivotStyleMedium9"
End Sub
 

Gizmette

XLDnaute Nouveau
Désolé pour le retard.
Merci kingfadhel et staple1600 pour votre aide.

J'ai besoin d'inclure dans mon onglet des TCD, eux mêmes servant pour mes graphiques croisés dynamiques.

J'ai tenté la simplification mais le deboggeur m'indique " erreur d'exécution 1004. Le nom du champ de tableau croisé dybamique n'est pas valide. Pourtant je n'ai changé aucun nom.

Je n'ai pas encore trouvé la solution à mon problème. Voici le résultat que je souhaiterai obtenir (que j'obtiens parfois) c'est à dire deux graphiques indépendants sur le même onglet, qui puissent être mis à jour sans problème à l'aide du bouton.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…