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