Tableau croisé dynamique en VBA !

dudule

XLDnaute Nouveau
Bonjour à tous !

Comme vous pouvez le constater je suis nouveau inscrit sur le forum mais ça fait un moment que je viens pour trouver des réponses à mes questions n'ayant pas un niveau d'expert en VBA, mais voilà je viens de faire le tour d'internet 3fois, je n'ai pas mangé depuis 12 jours ni dormi et je suis sûre que vos réponses me paraitrons évidentes mais je suis complètement bloqué !

Je fais un programme qui récupère des données dans différents fichiers puis crée des TCD, jusque là tout va bien (mon code doit pas être des plus jolie à voir mais ça fonctionne bien) !
Dans une deuxième partie je dois créer des tableaux comparatifs en allant chercher des sommes présentes dans les TCD, grâce à l'enregistreur de macro j'obtiens le code suivant :

Code:
Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=GETPIVOTDATA(""SOMME MS"",'MS 2012 par salarié'!R3C1,""mois"",""janvier"")"
    Range("C16").Select

que je réarrange comme ceci :

Code:
ws.Cells(6, 2) = "=GETPIVOTDATA(""SOMME MS"",'MS 2012 par salarié'!R3C1,""mois"",""janvier"")"
ws étant la feuille active (c'est définit plus en amont dans mon code).

Ca fonctionne parfaitement mais le soucis c'est que le 2012 dépend d'une valeur renseignée dans une textbox (ans) et je voudrais donc pouvoir écrire la formule sous cette forme (la feuille ayant elle même été créée en amont à partir de la textbox ans) :
Code:
ws.Cells(6, 2) = "=GETPIVOTDATA(""SOMME MS"",'MS &ans & par salarié'!R3C1,""mois"",""janvier"")"

J'ai essayé pas mal de façons différentes en ajoutant des " ou des ' mais je n'arrive pas à trouver la bonne syntaxe (peut être que ce n'est tout simplement pas possible).

Merci d'avance pour votre aide !

Si vous avez absolument du fichier excel ou si mes explications sont floues n'hésitez pas !
 

dudule

XLDnaute Nouveau
Re : Tableau croisé dynamique en VBA !

Bonjour pierrejean,

Merci pour cette réponse rapide !
C'est effectivement la seule configuration que je n'ai pas testé...

Finalement je suis tombé sur un tuto qui expliquait justement comment ne plus avoir ce =GETPIVOTDATA (=LIREDONNEESTABCROISDYNAMIQUE) lorsque l'on fait référence à une cellule d'un TCD.

Je mets donc la solution que j'ai utilisé si ça intéresse des amateurs de VBA !

Code:
' dans le private sub
Application.GenerateGetPivotData = False
'ce qui permet de récupérer moins laborieusement la dernière ligne d'une colonne d'un TCD 
'ici je suis en mois, y'en a donc 12 par an
For i = 1 To 12
ws.Cells(6, i + 1) = Sheets("MS " & ans & " par salarié").Cells(Rows.Count, i + 1).End(xlUp)
Next i

Merci pour votre aide et bonne journée !

Dudule
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Tableau croisé dynamique en VBA !

Bonjour
Bise à PierreJean

En fait le choix dépend vraiment du contexte.
Pour trouver juste la dernière ligne c'est effectivement inutile mais il y a plein de cas ou LIREDONNEESTABCROISDYNAMIQUE ou son équivalent VBA est une bonne solution.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel