Bonjour,
J'ai un souci. Le code suivant me permet de générer un TCD qui prend en compte la même plage pour toutes les feuilles comprises entre la feuille "Debut" et la feuille "Fin" .
Débutant sur VBA, je n'ai sûrement pas fait le code le plus efficient mais la macro fonctionne.
Le problème se pose lors de l'enregistrement du workbook qui est refusé par excel avec une information comme quoi Excel ne peut l'enregistrer à cause d'erreurs. Si j'efface manuellement le TCD créé , l'enregistrement fonctionne.
Je suspecte que le problème est que le sourceData de mon TCD est une variable ("Sel") qui n'a d’existence que dans ma macro mais je n'arrive pas à le confirmer ni à trouver de solution alternative.
Je fais donc appel à vos lumières. Par avance, merci
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Sub creationTCDsynthese() Dim i As Integer Dim j As Integer Dim k As Integer Dim Ws As Worksheet Dim Sel() As String Set Ws = Worksheets("Debut") i = Ws.Index i = i + 1 Set Ws = Worksheets("Fin") j = Ws.Index j = j - 1 ReDim Sel(j - i + 1) 'vérification de la présence de feuilles entre Debut et Fin If i <= j Then For k = i To j 'complète le tableau avec les adresses de chaque feuille Sel(k - i + 1) = Worksheets(k).Range("A1:C10").Address(True, True, xlR1C1, True) Next k End If 'Vidage de la feuille afin que la macro ne plante pas si il y a deja un TCD Worksheets("Synthese").Cells.Clear Worksheets("Synthese").Activate ActiveWorkbook.PivotCaches.Create( _ SourceType:=xlConsolidation, SourceData:=Sel, _ Version:=xlPivotTableVersion12).CreatePivotTable _ TableDestination:="Synthese!R1C1", _ tablename:="Données tous onglets", _ DefaultVersion:=xlPivotTableVersion12 ActiveWorkbook.ShowPivotTableFieldList = False MsgBox "TCD créé" End Sub
Partager