Créer une procédure pour modifier tous les champs de la page. Celui-ci parcourt toutes les feuilles de calcul du classeur et si la feuille de calcul a un tableau croisé dynamique, il modifie le champ de page pour qu'il corresponde au champ de page sur la table pivotante passée au sous-marin.
Sub ChangePage(pt As PivotTable)
Dim strPageValue As String
Dim wks As Worksheet
Dim ptUpdate As PivotTable
Application.ScreenUpdating = False
Application.EnableEvents = False
strPageValue = pt.PivotFields("Area").CurrentPage
For Each wks In ThisWorkbook.Worksheets
On Error Resume Next
Set ptUpdate = wks.PivotTables(1)
If Err.Number = 0 Then
On Error GoTo 0
wks.PivotTables(1).PivotFields("Area").ClearAllFilters
wks.PivotTables(1).PivotFields("Area").CurrentPage = strPageValue
End If
Err.Clear
Next wks
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Placez ensuite un appel à cette procédure dans le code de feuille de calcul lui-même et passer le tableau croisé dynamique vous avez changé:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Call ChangePage(Target)
End Sub
Modifier le nom du champ de pivot de « zone » au champ de page besoin, par exemple "US_Region". Ceci peut ne pas convenir si des personnes modifient fréquemment la structure de vos tableaux croisés dynamiques d'une autre manière, car elles se déclenchent chaque fois que le tableau croisé dynamique est changé, y compris lorsqu'il est rafraîchi. Il va également donner une erreur si les utilisateurs suppriment le champ de la page spécifiée.
Si les tables pivotantes sont statiques, cela peut être le cas.