Boucle pivotItems tcd

  • Initiateur de la discussion Initiateur de la discussion poucet24
  • 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 !

P

poucet24

Guest
Bonjour, j'ai besoin d'automatiser une tache en faisant une boucle dans un tcd:

Le but est de
1) Déselectionner les pivotItems
2) Sélectionner le premier pivotItem
3) Copier la cellule Q1 (Ma feuille contient des formules et le résultats est par exemple en cellule Q1)
4) Coller la cellule Q1 avec le pivotiem correspondant dans une autre feuille
5) Passer au deuxième pivotItem etc...

Je ne m'en sors pas, quelqu'un pourrait il m'aider?
 
Re : Boucle pivotItems tcd

Merci de ta réponse. En fait tu m'as donné une partie de la réponse mais il m'en manque encore un bout.

Pour reprendre ton exemple, je voudrai que la macro
1) sélectionne d'abord Toto 1 seulement puis copie et colle la valeur
2) sélectionne ensuite Toto 2 seulement puis copie et colle la valeur
3) etc...sur tous les totos!

En fait j'ai besoin de ça car je n'ai pas une seule valeur associée à toto1 mais plusieurs et je dois calculer des dispersions sur ces valeurs d'où la nécessité d'avoir uniquement les valeurs de Toto1...et je dois faire ça pour tous les Totos!
 
Re : Boucle pivotItems tcd

Bonjour,

Essaie ceci :
Code:
Sub Test()
With ActiveSheet.PivotTables("TCD").PivotFields("NOM")
    For Each X In .PivotItems
        X.Visible = True
        Sheets("Feuil4").Range("D65536").End(xlUp).Offset(1, 0) = X.Caption
    Next
End With
End Sub
 
Re : Boucle pivotItems tcd

Merci je touche au but, reste encore un petit point.
Je voudrai n'avoir qu'un seul élément .pivoItems sélectionné à chaque fois (ici je suis obligé d'avoir 2 éléments car sinon erreur au niveau du x.visible= false)
dans l'idéal j'aimerai
1) tout déselectionner et sélectionner le premier élément pivotitem uniquement
2) Passer au deuxième (ça OK) et déselectionner le premier élément
3) Passer au troisième(ça OK) et déselectionner le deuxième élément etc...

J'ai essayé de mettre en fin de boucle previous =x et en début de boucle (après x.visible =true) previous.visible =false mais ça ne marche pas.
Aurais tu une idée?

Voilà ma macro actuelle:

Sub Test2()
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("REFERENCE")

For Each x In .PivotItems
On Error Resume Next
x.Visible = True
'Création d'une liste en colonne S et T avec le n° de ref et la conso annuelle issue du calcul en Q4
Sheets("Donées_access").Range("s65536").End(xlUp).Offset(1, 0) = x.Caption
Sheets("Donées_access").Range("t65536").End(xlUp).Offset(1, 0) = Range("Q4").Value
x.Visible = False
On Error GoTo fin
Next
End With
fin:
MsgBox "Fin de la boucle"
End Sub
 
Re : Boucle pivotItems tcd

Re,

Je comprends qu'à priori, il y a une formule en Q4 (Q5 dans mon exemple) qui dépend du premier item de PivotField. Ce qui motive l'affichage d'un item à la fois.
Peut etre serait il preferable d'utiliser chaque objet PivotField et de faire le calcul dans la macro ? Mais je ne sais pas exactement ce qui doit se passer avec Q4...

Ci-joint un exemple qui semble faire ce tu souhaites.

Edit - Une variante :
Code:
Sub Test2()
With ActiveSheet.PivotTables("TCD").PivotFields("NOM")
    For Each X In .PivotItems: X.Visible = True: Next
    For i = 1 To .PivotItems.Count
        Set Dest = Sheets("Donées_access").Range("S65536").End(xlUp).Offset(1, 0)
        Dest.Value = .PivotItems(i).Caption
        Dest.Offset(0, 1).Value = Sheets("Feuil4").Range("Q5").Value
        .PivotItems(i).Visible = IIf(i = .PivotItems.Count, True, False)
    Next
End With
End Sub
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
40
Affichages
2 K
Réponses
4
Affichages
588
Réponses
7
Affichages
842
Retour