Sub MettreAjourTCD()
Dim oFeuille As Worksheet 'objet Feuille de calcul en cours de traitement
Dim aFeuilles 'Tableau des noms de feuilles
Dim i As Integer
'indice de boucle for
'PivotsField à modifer
Dim pvtField1 As PivotField, pvtField2 As PivotField
Dim pvtField3 As PivotField, pvtField4 As PivotField
'PivotField Source des modifications
Dim pvtFieldSource1 As PivotField, pvtFieldSource2 As PivotField
Dim pvtFieldSource3 As PivotField, pvtFieldSource4 As PivotField
With ActiveSheet
If .Name = "CA" Then
aFeuilles = Array("CHQ_IMP", "FRAIS")
Set pvtFieldSource1 = .PivotTables("CA").PageFields("ANNEE")
Set pvtFieldSource2 = .PivotTables("CA").PageFields("PERIODE")
Set pvtFieldSource3 = .PivotTables("CA2").PageFields("ANNEE")
Set pvtFieldSource4 = .PivotTables("CA2").PageFields("PERIODE")
ElseIf .Name = "RETOUR" Then
aFeuilles = Array("REBUT", "RETOUR (2)")
Set pvtFieldSource1 = .PivotTables(.Name).PageFields("ANNEE")
Set pvtFieldSource2 = .PivotTables(.Name).PageFields("TRIMESTRE")
Set pvtFieldSource3 = .PivotTables(.Name & "2").PageFields("ANNEE")
Set pvtFieldSource4 = .PivotTables(.Name & "2").PageFields("PERIODE")
Else
Exit Sub
End If
End With
'Permettre la sélection de multiples options pour les sources
pvtFieldSource1.EnableMultiplePageItems = True
pvtFieldSource2.EnableMultiplePageItems = True
pvtFieldSource3.EnableMultiplePageItems = True
pvtFieldSource4.EnableMultiplePageItems = True
For Each oFeuille In Sheets(aFeuilles)
With oFeuille
Select Case .Name
Case "CHQ_IMP", "FRAIS"
Set pvtField1 = .PivotTables(.Name).PageFields("ANNEE")
Set pvtField2 = .PivotTables(.Name).PageFields("PERIODE")
Set pvtField3 = .PivotTables(.Name & "2").PageFields("ANNEE")
Set pvtField4 = .PivotTables(.Name & "2").PageFields("PERIODE")
Case "REBUT", "RETOUR (2)"
Set pvtField1 = .PivotTables(.Name).PageFields("ANNEE")
Set pvtField2 = .PivotTables(.Name).PageFields("TRIMESTRE")
Set pvtField3 = .PivotTables(.Name & "2").PageFields("ANNEE")
Set pvtField4 = .PivotTables(.Name & "2").PageFields("PERIODE")
End Select
'Nettoyer les filtre manuels
pvtField1.ClearManualFilter
pvtField2.ClearManualFilter
pvtField3.ClearManualFilter
pvtField4.ClearManualFilter
pvtField1.EnableMultiplePageItems = True
pvtField2.EnableMultiplePageItems = True
pvtField3.EnableMultiplePageItems = True
pvtField4.EnableMultiplePageItems = True
For i = 1 To pvtFieldSource1.PivotItems.count
pvtField1.PivotItems(i).Visible = pvtFieldSource1.PivotItems(i).Visible
Next i
For i = 1 To pvtFieldSource2.PivotItems.count
pvtField2.PivotItems(i).Visible = pvtFieldSource2.PivotItems(i).Visible
Next i
For i = 1 To pvtFieldSource3.PivotItems.count
pvtField3.PivotItems(i).Visible = pvtFieldSource3.PivotItems(i).Visible
Next i
For i = 1 To pvtFieldSource4.PivotItems.count
pvtField4.PivotItems(i).Visible = pvtFieldSource4.PivotItems(i).Visible
Next i
End With
Next oFeuille
End Sub