Bonjour,

Dans le cadre de mon travail, j'ai besoin de réaliser des macros sous Excel 2003, n'ayant plus touché à ça depuis quelques années durant mes études (vive la théorie ...), je suis un peu perdu.


Le contexte :
J'ai réalisé deux fichiers Excel :
-Un est un grosse base de données très complètes, réalisé à partir d'une extraction.
- Le second est une synthèse du premier fichier, à destination de responsables, et composé d'onglet avec chacun un TCD ayant pour source une plage de données du premier fichier.

Mon problème est d'essayer de réaliser une macro pour m'éviter à changer manuellement la source sur chaque TCD. car le premier fichier change de nom périodiquement (ex : Fichier1 Sept 13, Fichier 1 Oct 13 ...).


Pour l'instant, comme j'ai quelques restes, j'ai réalisé la macro suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandButton1_Click()
Dim DataSource As Range, Sh As Worksheet
Dim PvT As PivotTable
Dim clasource As String, nomfeuil As String
clasource = Range("E47"): nomfeuil = Range("E48")
With Workbooks(clasource).Sheets(nomfeuil)
Set DataSource = Range("E49")
Application.EnableEvents = False
For Each Sh In Worksheets
For Each PvT In Sh.PivotTables
PvT.ChangePivotCache ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="clasource" & "nomfeuil" & "!" & DataSource.Address, Version:=xlPivotTableVersion14)
PvT.RefreshTable
Next PvT
Next Sh
Application.EnableEvents = True
End With
End Sub
Le but est à partir d'une source copier coller de l'adresse du fichier1 dans des cellules du second fichier, en l’occurrence E47 à E49,
J'obtiens une erreur 6, sur la ligne With Workbooks(clasource).Sheets(nomfeuil) et j'imagine qu'il y a d'autres pépins.

En vous remerciant par avance