Un slicer (segment) pour les gouverner tous
Bonjour, pour remplir un tableau de bord j'utilise les données de 4 TCD dont les champs de lignes sont identique, pour ne pas avoir a refaire la même selection sur les 4 TCD j'aurais aimé utilisé une macro qui copie les choix d'un slicer vers un autre.
J'ai presque trouvé mon bonheur ici:http://www.developpez.net/forums/d13...t-meme-source/ mais bien sur si j'ouvre un post c'est qu'il y a des problèmes ...
Voici le code que j'ai utilisé:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Sub slicer_copie()
For Each Sh In ThisWorkbook.Sheets
For Each TCD In Sh.PivotTables
With Sh.PivotTables(TCD.Name)
.ManualUpdate = True
End With
Next
Next
Application.EnableEvents = False
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS1").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS3").ClearManualFilter
For Each Iitem In ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS2").SlicerItems
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ActiveWorkbook.SlicerCaches("Slicer_POLICE_PAYS3").SlicerItems(Iitem.Name).Selected = Iitem.Selected
Next
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT1").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT3").ClearManualFilter
For Each Iitem In ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT2").SlicerItems
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ActiveWorkbook.SlicerCaches("Slicer_TYPE_CLIENT3").SlicerItems(Iitem.Name).Selected = Iitem.Selected
Next
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM1").ClearManualFilter
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM3").ClearManualFilter
For Each Iitem In ActiveWorkbook.SlicerCaches("Slicer_TC_NOM2").SlicerItems
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM").SlicerItems(Iitem.Name).Selected = Iitem.Selected
'bloque ici
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ou là
ActiveWorkbook.SlicerCaches("Slicer_TC_NOM3").SlicerItems(Iitem.Name).Selected = Iitem.Selected
ou là
Next
For Each Sh In ThisWorkbook.Sheets
For Each TCD In Sh.PivotTables
With Sh.PivotTables(TCD.Name)
.ManualUpdate = False
End With
Next
Next
Application.EnableEvents = True
End Sub |
Pour les deux premiers slicers je n'ai pas eu de problèmes, mais pour le troisième (et le 4ème) il me met l'erreur "invalid procedure call or argument" a des lignes différentes suivant le choix dans le slicer.
Quelqu'un saurait-il me dire pourquoi?
Merci d'avance.