Automatisation TCD avec source dans autre fichier

bonjour,

je cherche à automatiser la création d'un tableau croisé dynamique dans un fichier excel A. Les données qui remplissent mon tableau sont dans un fichier B dont le nom et l'emplacement peuvent changer en fonction de l'utilisateur.

Je mets donc au départ de ma macro une question qui demande à l'utilisateur quel est et ou est le fichier qui sert à la constitution de mon tableau via un GetOpenFilename.

Lors de la creation de mon TCD je note donc le code:

ActiveWorkbook.Pivotcaches.Create(SourceType=xldatabase, Sourcedata:= ???

en parcourant les différents forum j'ai l'impression que ce que l'on peut mettre derrière Sourcedata est le nom de la feuille du Workbook et la plage de donnée. En aucun cas on ne peut mettre l'adresse d'un autre fichier, la feuille et la plage de donnée.

Ai-je raison ou existe t-il un moyen de mettre en sourcedata une plage appartenant à un autre fichier?

J'ai essayé en créant un workbook défini par mon fichier contenant les données et en l'incluant dans sourcedata mais il ne me le prend pas...

Si qq a une idée...

Merci d'avance

Rémi

bonjour

ci dessous le code utilisé et qui ne fonctionne pas

Sub creation_TCD()

Dim adress As Variant

adress = Application.GetOpenFilename("Fichiers Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")

If adress = False Then MsgBox "no files"

Dim Monclasseur As Workbook

Set Monclasseur = ActiveWorkbook

Dim Basedonnee As Workbook

Set Basedonnee = Workbooks.Open(adress)

Monclasseur.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _

"Basedonnee.Data!$A$2$J$9", Version:=xlPivotTableVersion12).CreatePivotTable _

TableDestination:="infos_IP!R25C1", TableName:="Tableau croisé IP" _

, DefaultVersion:=xlPivotTableVersion12

End Sub

Bonsoir

Avant tout fait un enregistrement de macro en manuel en faisant ton TCD. Une fois enregistré remplace la première partie par le code suivant

Dim TabDynamique() As Variant 'fonction à mettre juste après le sub

Dim Worksheet As Worksheet 'fonction à mettre juste après le sub

<< Sheets("feuil1").Select 'choisir la feuille ou le TCD va exporter ses données

Range("A1").CurrentRegion.Select 'selectionne toutes les colonnes avec des informations

ActiveWorkbook.Names.Add Name:="Suivi", RefersToR1C1:=Selection 'permet de creer une feuille avec ton TCD

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _

"Suivi").CreatePivotTable _

TableDestination:="", TableName:="TCD", _ 'je l'ai appelé TCD comme un exemple que j'ai vu sur un site

DefaultVersion:=xlPivotTableVersion10

ActiveSheet.Name = "Suivi1" 'permet de renommer ta feuille crée

ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1) >> 'ne pas mettre les guillemets de début et de fin

Coller ensuite la suite de ton enregistrement de macro et ca devrai marché ^^

Rechercher des sujets similaires à "automatisation tcd source fichier"