Visible property of a Pivot Item class.

_Boris_

XLDnaute Nouveau
Bonjour à tous,

Je travaille sur une macro censée trier les items d'une Pivot Table selon un critère (ici, la date).
Cependant lors de l'exécution apparait systématiquement l'erreur:
Run-time error '1004': Unable to set the Visible property of the Pivot Item class.
Lors du debug, la ligne posant problème est pi.visible = False dans le code ci-après.

J'ai essayé d'autres codes, mais il refuse systématiquement de changer la propriété d'un pivot item en "visible". Je ne comprends pas pourquoi.
Après avoir cherché sur internet il apparait que cette erreur est récurrente, mais je n'ai pas trouvé de solution adaptée à mon cas.

Voici la macro en question. Il s'agit d'une boucle qui compare chaque date associée à une entrée à une date butoir. Si la date de l'entrée est postérieure à la date butoir, l'item doit être caché.
Au départ de la macro je lance l'exécution d'une autre macro, trouvée sur internet, supposée résoudre ce problème. Malheureusement rien n'a changé. Je vous copie le code de l'autre macro en dessous.

Code:
Sub HideShowFields()

Sheets("Pivot Table").Select
Application.Run "'(2011-07-12) Liste BKR v2.xls'!PivotShowItemAllVisible"

Dim pt As PivotTable

Dim pi As PivotItem


Worksheets("Pivot Table").PivotTables("PivotTable1").PivotFields("Entry date").Orientation = xlRowField

    Set pt = ActiveSheet.PivotTables("PivotTable1")
   
    pt.ManualUpdate = True

    
  

        For Each pi In pt.PivotFields("Entry date").PivotItems


            Select Case pi.Value

                Case Is > Sheets("Formulaire").[G28].Value

                    pi.visible = False               

                Case Else

                    pi.visible = True

            End Select

        Next pi

    

    pt.ManualUpdate = False


End Sub


Et voici la macro "miracle", qui ne change rien.

Code:
Sub PivotShowItemAllVisible()

'sort is set to Manual to prevent errors, e.g.
'unable to set Visible Property of PivotItem class

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Application.ScreenUpdating = False
Application.DisplayAlerts = False

On Error Resume Next


For Each pt In ActiveSheet.PivotTables
  
      For Each pf In pt.RowFields
   
                pf.Autosort xlManual, pf.SourceName

                                  For Each pi In pf.PivotItems
                                      pi.visible = True
                                  Next pi

               pf.Autosort xlAscending, pf.SourceName

     Next pf

Next pt


Application.DisplayAlerts = True
Application.ScreenUpdating = True

End Sub

Comment se débarrasser de cette erreur?

Merci pour votre aide,
Boris
 

Pierrot93

XLDnaute Barbatruc
Re : Visible property of a Pivot Item class.

Bonjour,

essaye peut être ainsi :
Code:
Sub HideShowFields()

Sheets("Pivot Table").Select
Application.Run "'(2011-07-12) Liste BKR v2.xls'!PivotShowItemAllVisible"

Dim pt As PivotTable

Dim pi As PivotItem

Worksheets("Pivot Table").PivotTables("PivotTable1").PivotFields("Entry date").Orientation = xlRowField

Set pt = ActiveSheet.PivotTables("PivotTable1")
   
    pt.ManualUpdate = True

        For Each pi In pt.PivotFields("Entry date").PivotItems
            pi.Visible = True
        Next pi

        For Each pi In pt.PivotFields("Entry date").PivotItems

            Select Case pi.Value

                Case Is > Sheets("Formulaire").[G28].Value

                    pi.Visible = False

                Case Else

                    pi.Visible = True

            End Select

        Next pi
    
    pt.ManualUpdate = False

End Sub

bonne journée
@+
 

_Boris_

XLDnaute Nouveau
Re : Visible property of a Pivot Item class.

Merci pour ta réponse rapide Pierrot.
Ca semblait être une bonne idée, mais malheureusement l'erreur apparaît toujours, cette fois c'est le premier pi.Visible = True qui coince.
C'est comme si le compilateur était incapable de changer quoi que ce soit sur la visible property.
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 361
Membres
103 530
dernier inscrit
Chess01