TcD - Tester PivotItems

dieu08

XLDnaute Occasionnel
Bonjour,

J'ai une succession de tableaux croisés dynamiques à réaliser et je me heurte à un problème. En effet, je ne parviens pas à trouver comment faire un tes pour m'assurer de la présence de tous mes "pivotItems" pour éviter un arret sur le code.

Plus concretement, je dois m'assurer de la présence du "J" avant que l'execution de la macro n'arrive sur cette ligne :

.PivotItems("J").Visible = False

Voici une plus grosse partie du code :

' second tableau croisé dynamique

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"toutes_aides_asg_" & datestock1 & "!R1C1:R" & nbcount1 & "C81").CreatePivotTable TableDestination _
:="", TableName:="Tableau croisé dynamique2"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Type de décision")
.PivotItems("A").Visible = True
.PivotItems("I").Visible = False
' .PivotItems("J").Visible = False
.PivotItems("R").Visible = False
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddFields RowFields:= _
Array("Libellé aide", "Données"), ColumnFields:="Libellé prestataire 54", _
PageFields:=Array(" Code UT", "Type de décision")
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Numéro dossier")
.Orientation = xlDataField
.Caption = "Nombre de Numéro dossier"
.Position = 1
.Function = xlCount
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields(" Classo. ASG" _
).Orientation = xlDataField
ActiveWorkbook.ShowPivotTableFieldList = True
ActiveWindow.Zoom = 60
Rows("5:5").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Selection.Columns.AutoFit
Columns("A:A").EntireColumn.AutoFit
Range("X10").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Libellé aide")
.PivotItems("Accompagnement à la Vie Sociale Domicile").Visible = False
' .PivotItems("Accompagnement Médico-Social Domicile").Visible = False
.PivotItems("Accueil familial personne âgée").Visible = False
.PivotItems("Accueil familial personne handicapée").Visible = False
' .PivotItems("Alloc. représentative de serv. ménagers personne handicapée"). _
Visible = False
.PivotItems("Allocation compensatrice frais supplémentaires").Visible = _
False
.PivotItems("Allocation compensatrice tierce personne").Visible = False
.PivotItems("Allocation Personnalisée d'Autonomie Bénéficiaire Etablt"). _
Visible = False
.PivotItems("Allocation Personnalisée d'Autonomie Etablissement").Visible _
= False
.PivotItems("Hébergement personne âgée").Visible = False
.PivotItems("Hébergement personne handicapée").Visible = False
.PivotItems("Prest. de Compens. du Handicap (+20) Domicile").Visible = _
False
.PivotItems("Prest. de Compens. du Handicap (+20) Etablissement").Visible _
= False
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Libellé aide")
' .PivotItems("Prest. de Compens. du Handicap (-20) Domicile").Visible = _
False
' .PivotItems("Récupération sur retour à meilleure fortune").Visible = False
.PivotItems("Récupération sur succession").Visible = False
.PivotItems("Services ménagers personne âgée").Visible = False
.PivotItems("Services ménagers personne handicapée").Visible = False
End With

Merci d'avance.

Dieu08
 

Pierrot93

XLDnaute Barbatruc
Re : TcD - Tester PivotItems

Bonjour,

regarde le code ci-dessous si il peut t'aider :

Code:
Option Explicit
Sub test()
Dim p As PivotItem
With Sheets("Feuil1").PivotTables(1).PivotFields("nomchamps")
    On Error Resume Next
    Set p = .PivotItems("J")
    On Error GoTo 0
    If Not p Is Nothing Then p.Visible = False
    Set p = Nothing
End With
End Sub

Bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : TcD - Tester PivotItems

Re

essaye en faisant des boucles imbriquées :

Code:
Option Explicit
Sub test()
Dim s() As Variant, pt As PivotTable, p As PivotItem, i As Byte
s = Array("w", "x", "y", "z")
For Each pt In Sheets("Feuil1").PivotTables
    With pt.PivotFields("client")
        For i = LBound(s) To UBound(s)
            On Error Resume Next
            Set p = .PivotItems(s(i))
            On Error GoTo 0
            If Not p Is Nothing Then p.Visible = False
            Set p = Nothing
        Next i
    End With
Next pt
End Sub

peut être lieu de rajouter une boucle sur le "PivotFields"... A voir...
 

Discussions similaires

Réponses
11
Affichages
958

Statistiques des forums

Discussions
312 215
Messages
2 086 321
Membres
103 178
dernier inscrit
BERSEB50