Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Choix item tcd a partir d'une plage

3 réponses
Avatar
anfeus
Bonjour,
j'essaie de rendre non visible des champs de mon tcd à partir d'une plage remplie.
Je souhaite que les données (qui correspondent à des items de mon tcd) de ma plage variable(selectionjournaux) n'apparaissent pas dans mon tcd. Voici le bout de code que j'ai réalisé mais il ne marche pas. Merci de votre aide.

1er essai :
Set pt = .PivotTables("Tableau croisé dynamique3")
End With
Set pf = pt.PivotFields("CODE DU JO")
On Error Resume Next
For Each Pi In Pf.PivotItems
Set Rg = Range(selectionjournaux).Find(Pi.value)
If Not Rg Is Nothing Then      Pi.Visible = True
    Else
        Pi.Visible = False
    End With
Next

3 réponses

Avatar
michdenis
Bonjour,

Je n'ai pas vraiment tout compris....

Tu dois définir dans la procédure, le nom de la feuille
et ta plage variable

'--------------------------------------
Sub DeleteOldItemsWB()

Dim Pt As PivotTable
Dim Pi As PivotItem
Dim PlgVariable As Range, C As Range

Application.ScreenUpdating = False
With Worksheets("Feuil1")
Set PlgVariable = .Range("A1:A5") 'à définir
Set Pt = .PivotTables("Tableau croisé dynamique3")
End With
For Each Pi In Pt.PivotFields("CODE DU JO").items
For Each C In PlgVariable
If UCase(Pi.Value) = UCase(C.Value) Then
Pi.Visible = False
End If
Next
Next
Application.ScreenUpdating = True
End With
End Sub
'-----------------------------------


--
MichD
--------------------------------------------


"anfeus" a écrit dans le message de groupe de discussion :

Bonjour,
j'essaie de rendre non visible des champs de mon tcd à partir d'une plage
remplie.
Je souhaite que les données (qui correspondent à des items de mon tcd) de ma
plage variable(selectionjournaux) n'apparaissent pas dans mon tcd. Voici le bout
de code que j'ai réalisé mais il ne marche pas. Merci de votre aide.

1er essai :
Set pt = .PivotTables("Tableau croisé dynamique3")
End With
Set pf = pt.PivotFields("CODE DU JO")
On Error Resume Next
For Each Pi In Pf.PivotItems
Set Rg = Range(selectionjournaux).Find(Pi.value)
If Not Rg Is Nothing Then Pi.Visible = True
Else
Pi.Visible = False
End With
Next
Avatar
isabelle
on peut raccourcir un peu le temps d'exécution de la macro en ne bouclant que sur les items masqués (première boucle),

Sub Filtre_TCD()
With ActiveSheet.PivotTables(1).PivotFields(1)
Dim PvIt As Object

For Each PvIt In .HiddenItems
PvIt.Visible = True
Next

For Each PvIt In .PivotItems
If Not IsError(Application.Match(PvIt.Name, [MaPlageCritère], 0)) Then PvIt.Visible = False
Next

End With
End Sub

isabelle



Le 2010-09-13 17:57, isabelle a écrit :
bonjour anfeus,

pour éviter une erreur il faut afficher tous les données du tcd avant de
masquer certaines,

par exemple :

Sub Filtre_TCD()
With ActiveSheet.PivotTables(1).PivotFields(1)
Dim PvIt As Object

For Each PvIt In .PivotItems
PvIt.Visible = True
Next

For Each PvIt In .PivotItems
If Not IsError(Application.Match(PvIt.Name, [MaPlageCritère], 0)) Then
PvIt.Visible = False
Next

End With
End Sub

isabelle

Le 2010-09-13 16:23, anfeus a écrit :
anfeus a écrit le 13/09/2010 à 16h24 :
Bonjour,
j'essaie de rendre non visible des champs de mon tcd à partir d'une
plage remplie.
Je souhaite que les données (qui correspondent à des items de mon
tcd) de ma plage variable(selectionjournaux) n'apparaissent pas dans mon


tcd.
Voici le bout de code que j'ai réalisé mais il ne marche pas.
Merci de votre aide.

1er essai :
Set pt = .PivotTables("Tableau croisé dynamique3")
End With
Set pf = pt.PivotFields("CODE DU JO")
On Error Resume Next
For Each Pi In Pf.PivotItems
Set Rg = Range(selectionjournaux).Find(Pi.value)
If Not Rg Is Nothing Then Pi.Visible = True
Else
Pi.Visible = False
End With
Next


Merci pour le code mais pour le moment j'ai un blocage . Je réexplique ma
requête.
Sur ma feuille excel (Paramètres), j'ai une plage variable
(selectionjournaux) qui correspond à une partie des champs de mon tcd.
Le but
est que tous les items indiqués dans ma plage variable apparaîssent en
"non
visible" dans mon TCD.
Avatar
anfeus
isabelle a écrit le 14/09/2010 à 00h06 :
on peut raccourcir un peu le temps d'exécution de la macro en ne
bouclant que sur les items masqués (première boucle),

Sub Filtre_TCD()
With ActiveSheet.PivotTables(1).PivotFields(1)
Dim PvIt As Object

For Each PvIt In .HiddenItems
PvIt.Visible = True
Next

For Each PvIt In .PivotItems
If Not IsError(Application.Match(PvIt.Name, [MaPlageCritère], 0)) Then
PvIt.Visible = False
Next

End With
End Sub

isabelle



Le 2010-09-13 17:57, isabelle a écrit :
bonjour anfeus,

pour éviter une erreur il faut afficher tous les données du tcd
avant de
masquer certaines,

par exemple :

Sub Filtre_TCD()
With ActiveSheet.PivotTables(1).PivotFields(1)
Dim PvIt As Object

For Each PvIt In .PivotItems
PvIt.Visible = True
Next

For Each PvIt In .PivotItems
If Not IsError(Application.Match(PvIt.Name, [MaPlageCritère], 0)) Then
PvIt.Visible = False
Next

End With
End Sub

isabelle

Le 2010-09-13 16:23, anfeus a écrit :
anfeus a écrit le 13/09/2010 à 16h24 :
Bonjour,
j'essaie de rendre non visible des champs de mon tcd à partir d'une
plage remplie.
Je souhaite que les données (qui correspondent à des items de
mon
tcd) de ma plage variable(selectionjournaux) n'apparaissent pas dans mon



tcd.
Voici le bout de code que j'ai réalisé mais il ne marche pas.
Merci de votre aide.

1er essai :
Set pt = .PivotTables("Tableau croisé dynamique3")
End With
Set pf = pt.PivotFields("CODE DU JO")
On Error Resume Next
For Each Pi In Pf.PivotItems
Set Rg = Range(selectionjournaux).Find(Pi.value)
If Not Rg Is Nothing Then Pi.Visible = True
Else
Pi.Visible = False
End With
Next



Merci pour le code mais pour le moment j'ai un blocage . Je réexplique
ma
requête.
Sur ma feuille excel (Paramètres), j'ai une plage variable
(selectionjournaux) qui correspond à une partie des champs de mon tcd.
Le but
est que tous les items indiqués dans ma plage variable
apparaîssent en
"non
visible" dans mon TCD.






Merci pour vos contributions car elles m'ont permis de trouver mon BONHEUR. Bonne journée à vous.