Impossible de lire la propriété pivotitems de la classe pivotfield

Bonjour je débute en code, pourriez-vous m'apporter votre aide pour cette erreur que je rencontre ci-dessous lorsque j'arrive au second .PivotItems("").Visible = True ?

Sub AA()
'AA Macro
'    
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("NOM.")        
.PivotItems("").Visible = True    
End With
Range("I38").Select    
ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotCache.Refresh    
With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("NOM.")        
.PivotItems("").Visible = False   
 End With    
With ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("NOM.")        
.PivotItems("").Visible = True    
End With    
Range("T37").Select    
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotCache.Refresh    
With ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("NOM.")        
.PivotItems("").Visible = False    
End With    
Range("A1").Select
End Sub

En vous remerciant,

Bonjour,

Voici un essai de code en supposant que tous vos TCD contiennent un champ "NOM." :

Sub AA()
With ActiveSheet
    .Parent.RefreshAll
    For Each pt In .PivotTables
        ref = pt.SourceData
        With pt.PivotFields("NOM.")
            ref = ref & "[" & .SourceName & "]"
            bVisible = Not .AllItemsVisible
            For Each Pi In .PivotItems
                pival = Replace(Pi.Value, "(blank)", "")
                If Application.CountIf(Range(ref), pival) = 0 Then
                    Pi.Delete
                Else
                    If pival = "(blank)" Then Pi.Visible = bVisible
                End If
            Next Pi
        End With
    Next pt
End With
End Sub

Ca permet d'afficher/masquer les vides.

En même temps, le TCD est rafraichi.

Il y a probablement moyen de faire mieux...

Cdlt,

Bonjour 3GB, merci pour votre retour.

Oui il y a sûrement moyen de mieux faire, je ne peux que m'améliorer.

Quand je teste votre code j'ai l'erreur suivante : La méthode Range de l'objet _GLobal a échoué.

Comment dois-je l'interpréter ?

Merci,

Sur quelle ligne a lieu l'erreur ?

Vos sources sont-elles bien sous forme de tableau structuré ?

Oui elles le sont, je ré vérifie une nouvelle fois voire si je n'ai pas oublié qqch.

C'est au niveau de la ligne :

 If Application.CountIf(Range(ref),

D'accord, c'est parce qu'il faut cibler la feuille également. Cette partie ne concernait pas votre problème de toute façon donc je l'enlève :

Sub AA()
With ActiveSheet
    .Parent.RefreshAll
    For Each pt In .PivotTables
        With pt.PivotFields("NOM.")
            bVisible = Not .AllItemsVisible
            For Each Pi In .PivotItems
                If pi.value = "(blank)" Then Pi.Visible = bVisible
            Next Pi
        End With
    Next pt
End With
End Sub

Cdlt,

Merci !

Rechercher des sujets similaires à "impossible lire propriete pivotitems classe pivotfield"