Synchronisation de plusieurs TCD

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

C

coco74

Guest
Bonjour
Voici ma question : comment synchroniser par VBA un "Filtre du rapport" de plusieurs TCD cibles par rapport un TCD source qui possède le même "Filtre du rapport".
Jusqu'à présent, j'utilisais simplement la valeur de la cellule du TCD source, mais avec Excel 2007/2010 on à la possibilité de sélectionner plusieurs éléments dans le filtre, et là ça coince ! !
Peut-être peut-on lire et mettre à jour directement la valeur du PivotFields, mais je ne sais pas faire !
Merci par avance
 
Re : Synchronisation de plusieurs TCD

J'ai modifié le code comme suit :

Option Explicit
Sub SyncTCD()
Dim pt As PivotTable
Dim pf As PivotField
Dim Pi As PivotItem

Set pt = ActiveSheet.PivotTables("Tableau croisé dynamique1")
Set pf = pt.PageFields("AA")

ActiveWorkbook.RefreshAll

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("AA")
.EnableMultiplePageItems = True
.CurrentPage = "(All)"
For Each Pi In .PivotItems
Pi.Visible = pf.PivotItems(Pi.Value).Visible
Next Pi
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("AA")
.EnableMultiplePageItems = True
.CurrentPage = "(All)"
For Each Pi In .PivotItems
Pi.Visible = pf.PivotItems(Pi.Value).Visible
Next Pi
End With

End Sub

Quand j'ajoute une entrée dans le tableau, que je la sélectionne dans le TCD source, voici ce qui se passe :
- la nouvelle entrée est bien ajoutée sur les TCD cibles
- elle est ajoutée, mais pas sélectionnée ! ! !
- le message d'erreur suivant apparait :
"erreur d'execution 13 : incompatibilité de type"
sur la ligne : Pi.Visible = pf.PivotItems(Pi.Value).Visible

Bonjour,

Pour les nouvelles données, une boucle peut venir remplacer les éléments individuels :
Code:
For Each pi In .PivotItems
     pi.Visible = pf.PivotItems(pi.Value).Visible
Next pi

A +
🙂
 
Re : Synchronisation de plusieurs TCD

Re,

La question que tu soulèves n'est pas directement liée au code ...
Avec plusieurs TCD, il y a deux précautions à prendre :

1. Définir de façon dynamique la source et appliquer le même nom à tous les TCD
2. et, rafraichir tous les TCD ...

avant de modifier les choix et lancer la synchronisation ...

A +
🙂
 
Re : Synchronisation de plusieurs TCD

- Définir de façon dynamique la source : c'est déjà le cas
- appliquer le même nom aux TCD : ils sont nommés comme les noms que tu as utilisé dans ton code, soit : Tableau croisé dynamique2 et Tableau croisé dynamique3
- rafraichir tous les TCD : comme tu peux le voir; j'ai ajouté au début de ton code la ligne : ActiveWorkbook.RefreshAll

J'ai néanmoins essayé d'ajouter la ligne "on error resume next" devant chacune des boucles et tout fonctionne correctement.

Soit :

Sub SyncTCD()
Dim pt As PivotTable
Dim pf As PivotField
Dim Pi As PivotItem

Set pt = ActiveSheet.PivotTables("Tableau croisé dynamique1")
Set pf = pt.PageFields("AA")

ActiveWorkbook.RefreshAll

With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("AA")
.EnableMultiplePageItems = True
.CurrentPage = "(All)"
On Error Resume Next
For Each Pi In .PivotItems
Pi.Visible = pf.PivotItems(Pi.Value).Visible
Next Pi
End With

With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("AA")
.EnableMultiplePageItems = True
.CurrentPage = "(All)"
On Error Resume Next
For Each Pi In .PivotItems
Pi.Visible = pf.PivotItems(Pi.Value).Visible
Next Pi
End With

End Sub

Est-ce correct ?

Re,

La question que tu soulèves n'est pas directement liée au code ...
Avec plusieurs TCD, il y a deux précautions à prendre :

1. Définir de façon dynamique la source et appliquer le même nom à tous les TCD
2. et, rafraichir tous les TCD ...

avant de modifier les choix et lancer la synchronisation ...

A +
🙂
 
- 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

Retour