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