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é: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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Quelqu'un saurait-il me dire pourquoi?
Merci d'avance.
Partager