1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Sub CreationTCD_MultiPage()
'Testé sous Excel 2007
Dim NomFeuille As String
Dim i As Integer
Dim RefPlage As String, Cible As String
Dim Tableau() As String
Dim ListeFeuilles As Variant
Application.ScreenUpdating = False
'Liste de feuilles contenant les données.
'Pour cet exemple, les données sont dans la plage A1:B6 de chaque feuille (en-tête compris).
ListeFeuilles = Array("Feuil1", "Feuil2", "Feuil3")
'Définit la taille du tableau pour stocker l'adresse des sources
'de données.
ReDim Preserve Tableau(1 To UBound(ListeFeuilles) + 1, 1 To 2)
'Boucle sur le nom des feuilles pour créer la référence des sources
'Style: Feuil1!R1C1:R6C2, Feuil2!R1C1:R6C2 ... etc ...
For i = LBound(ListeFeuilles) To UBound(ListeFeuilles)
NomFeuille = ListeFeuilles(i)
RefPlage = Range("A1:B6").Address(ReferenceStyle:=xlR1C1, _
RowAbsolute:=True, ColumnAbsolute:=True)
Cible = NomFeuille & "!" & RefPlage
Tableau(i + 1, 1) = Cible
Tableau(i + 1, 2) = ListeFeuilles(i)
Next i
'Crée le TCD dans la cellule A1 de la feuille "Synthese"
ThisWorkbook.PivotCaches.Add(SourceType:=xlConsolidation, _
SourceData:=Tableau).CreatePivotTable _
TableDestination:=Worksheets("Synthese").Range("A1"), _
TableName:="PivotTable1"
Worksheets("Synthese").Activate
'Mise en forme du TCD
With ActiveSheet.PivotTables("PivotTable1")
.ColumnGrand = False
.HasAutoFormat = False
.RowGrand = False
.SmallGrid = False
.PivotFields(1).PivotItems(1).Position = 1
End With
Application.ScreenUpdating = True
End Sub |