Bonjour à toutes et à tous,
je cherche en VBA comment sélectionner un filtre UNIQUEMENT quand il est en champ page, c'est à dire en haut à gauche dans un TCD et non par exemple en ligne dans le TCD
Quand je prends l'enregistreur de macro, je vois que le champ page s'appelle DataLabelRange mais je n'arrive pas à l'insérer dans ma macro …
Pour faire simple, avec l'exemple trivial en pièce jointe, mon code fonctionne pour le TCD1 car le champ Pays est bien en Page mais ça plante quand je veux interdire la sélection (pf.EnableItemSelection = False) et bien sûr je ne veux pas bloquer la possibilité de sélectionner les items du champ "Produits"
D'avance, merci pour vos lumières
Sub FixerPaysEtGelerSelection()
Dim sh As Long
Dim pt As PivotTable
Dim pf As PivotField
For sh = 1 To Sheets.Count
Sheets(sh).Activate
If ActiveSheet.PivotTables.Count > 0 Then
Set pt = ActiveSheet.PivotTables(1)
' Etape 1 : on fixe le filtre en champ Page avec Pays = "Italie" (ça marche !)
With ActiveSheet
.PivotTables("Tableau croisé dynamique1").PivotFields("Pays").ClearAllFilters
.PivotTables("Tableau croisé dynamique1").PivotFields("Pays").CurrentPage = "Italie"
End With
' Etape 2 : on gèle la possibilité de sélectionner autre chose dans le champ Page (ne marche pas !)
Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("Pays")
For Each pf In pt.DataLabelRange
pf.EnableItemSelection = False
Next
End If
Next sh
End Sub
je cherche en VBA comment sélectionner un filtre UNIQUEMENT quand il est en champ page, c'est à dire en haut à gauche dans un TCD et non par exemple en ligne dans le TCD
Quand je prends l'enregistreur de macro, je vois que le champ page s'appelle DataLabelRange mais je n'arrive pas à l'insérer dans ma macro …
Pour faire simple, avec l'exemple trivial en pièce jointe, mon code fonctionne pour le TCD1 car le champ Pays est bien en Page mais ça plante quand je veux interdire la sélection (pf.EnableItemSelection = False) et bien sûr je ne veux pas bloquer la possibilité de sélectionner les items du champ "Produits"
D'avance, merci pour vos lumières
Sub FixerPaysEtGelerSelection()
Dim sh As Long
Dim pt As PivotTable
Dim pf As PivotField
For sh = 1 To Sheets.Count
Sheets(sh).Activate
If ActiveSheet.PivotTables.Count > 0 Then
Set pt = ActiveSheet.PivotTables(1)
' Etape 1 : on fixe le filtre en champ Page avec Pays = "Italie" (ça marche !)
With ActiveSheet
.PivotTables("Tableau croisé dynamique1").PivotFields("Pays").ClearAllFilters
.PivotTables("Tableau croisé dynamique1").PivotFields("Pays").CurrentPage = "Italie"
End With
' Etape 2 : on gèle la possibilité de sélectionner autre chose dans le champ Page (ne marche pas !)
Set pf = ActiveSheet.PivotTables("PivotTable1").PivotFields("Pays")
For Each pf In pt.DataLabelRange
pf.EnableItemSelection = False
Next
End If
Next sh
End Sub