• Initiateur de la discussion Initiateur de la discussion nic81
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nic81

XLDnaute Junior
Bonjour

j'aurais besoin de votre aide pour arriver à MODIFIER cette macro si cela est possible.

Un exemple de fichier est joint pour plus de compréhension.

Je vous remercie

Bonne après-midi

Cordialement
NIC81


Sub macroacINAVApaXELEVIARG()
Sheets("PLAN D ACTION RG").Select

With Sheets("PLAN D ACTION RG").PivotTables(1)
.PivotFields(Range("A6").Value).Orientation = xlHidden
.PivotFields(Range("d9").Value).Orientation = xlHidden
End With

Sheets("PLAN D ACTION RG").PivotTables(1).PivotFields("pa XELEVIA").Orientation = xlPageField

Sheets("PLAN D ACTION RG").PivotTables(1).PivotFields("année civile inava").Orientation = xlColumnField
Range("A6").Select

Je réaffiche tous les items (car par exemple si c'était année civile inava il ne restait que IN et PFM)

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"PA XELEVIA")
.PivotItems("AR").Visible = True
.PivotItems("CV").Visible = True
.PivotItems("IN").Visible = True
.PivotItems("PF").Visible = True
.PivotItems("SR").Visible = True
.PivotItems("SUP").Visible = True
.PivotItems("(vide)").Visible = True
.PivotItems("PFM").Visible = True
End With

L'items PF n'existe pas pour cette région mais il peut exister pour d'autres (d ou anomalie)
Comment dire qu'il affiche tous ?

je choisis ceux que je veux vois afficher (différents suivant la société)


Range("A6").Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"PA XELEVIA")
.PivotItems("AR").Visible = False
.PivotItems("pf").Visible = False
.PivotItems("cv").Visible = False
.PivotItems("SR").Visible = False
.PivotItems("SUP").Visible = False
.PivotItems("(vide)").Visible = False
End With
 

Pièces jointes

Re : Macro sur tcd

Bonjour

la version excel est 2003 et non 2000

Si quelqu'un pouvez m'aider, merci

Si ce que je demande n'est pas possible merci de me le préciser c'est pour mon travail et j'abandonnerais cette solution

Bonne journée

Nic 81
 
Re : Macro sur tcd

Bonjour,
je n'ai pas tout compris ce que tu désire réalisé mais si cela peut aider a avancer voici un code a placer pour éviter les arrêt intempestif,cependant ce n'est pas la meilleur des solutions,cela n'est que provisoire,il faut trouver la façon de contourner ton problème en modifiant le code correctement
donc voici le code provisoire a placer:
Code:
Sub macroacINAVApaXELEVIARG()
[COLOR="Red"]On Error Resume Next[/COLOR]
n'oublie pas que ceci est tout a fait provisoire!!!
A+ (essai d'expliquer mieux ,ce que tu désire réaliser)
 
Re : Macro sur tcd

Merci beaucoup de votre réponse.

j'ai essayé de m'expliquer mais ce n'est pas facile en fait je veux faire un filtre sur un items , sachant que le filtre est différent à chaque fois.
J'affiche toutes les données de l'item concerné
.PivotItems("AR").Visible = True
.PivotItems("CV").Visible = True
.PivotItems("IN").Visible = True
.PivotItems("PF").Visible = True
.PivotItems("SR").Visible = True
.PivotItems("SUP").Visible = True
.PivotItems("(vide)").Visible = True
.PivotItems("PFM").Visible = True
et c'est la ou est le problème, ces items(ar cv..) peuvent etre tous présents ou pas
ensuite je choisis celle qui m'interesse pour un tableau donné

.PivotItems("AR").Visible = False
.PivotItems("CV").Visible = False
.PivotItems("IN").Visible = False
.PivotItems("SR").Visible = False
.PivotItems("SUP").Visible = False
.PivotItems("(vide)").Visible = False
dans le cas présent pf et pfm

Je ne comprends pas le langage VBA. Aussi quand vous me dites que c'est du provisoire, je ne comprends pas pourquoi et je ne sais pas comment contourner le problème

Merci en tout cas d'avoir pris le temps de me répondre et ça fonctionne


Je vous souhaite une bonne journée
 
Re : Macro sur tcd

Bonjour à tous,

Tu peux tester pour par exemple mettre tous tes PivotItems à True :

VB:
Dim IP as object
For each IP in ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems
IP.Visible = True
Next

ou encore

VB:
For t = 1 to ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems.count
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems(t).Visible = True
Next

à tester...
 
Re : Macro sur tcd

Bonjour

J'ai testé le code suivant : j'ai une anomalie impossible de définir la propriété visible de Pivot Items

For t = 1 to ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems.countActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems(t).Visible = True
Next

Et l'autre anomalie aussi

mais merci de ton aide

Si pas d'autre réponse, je vais garder le code provisoire de FHOEST:
On Error Resume Next

Merci encore

NIc81
 
Re : Macro sur tcd merci de m'aider

Bonjour

Faisant suite à mes autres messages, j'ai essayé d'écrire

Dim Pt As PivotItems
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"PA XELEVIA")

For Each Pt In ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"PA XELEVIA")
.Pt.Visible = (Pt.Name = "in")
.Pt.Visible = (Pt.Name = "pfm")
Next Pt

End With

J'ai un message d'erreur propriété ou méthode non gérée par cet objet.

Merci de vos réponses


Nic 81
 
Re : Macro sur tcd

Bonjour,

Essaie p-ê ce code, si je comprends bien ce que tu essaies de faire :

Dim Pt as object
VB:
For each Pt in ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems
    If Pt.Name = "in" then Pt.Visible = True Else Pt.Visible = False
    If Pt.Name= "pfm" then Pt.Visible = True Else Pt.Visible = False
Next Pt
 
Re : Macro sur tcd

Bonjour,
Oui en fait, c'est normal, et qui plus est logique. Il faut au moins qu'un des PivotItems soit visible. Si la macro les fait disparaitre un par un, tu auras un message d'erreur sur le dernier car il est nécessaire qu'au moins un soit visible. Normalement, lorsqu'apparaît ton message d'erreur, tu ne dois plus avoir qu'un seul champ visible : celui-là que ta macro tente de cacher.

Donc, il faut que tu repenses la manière dont tu fais afficher les PivotItems, de sorte que tu affiches ceux qui t'intéressent, avant de masquer les autres.

A priori, ce code devrait mieux convenir (à tester):
VB:
For each Pt in ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PA XELEVIA").PivotItems
    Pt.Visible = True
    If Pt.Name = "in" or Pt.Name= "pfm" then Pt.Visible = True Else Pt.Visible = False
Next Pt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
1 K
Retour