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é ^^