Filtre avec plusieurs éléments appliqué à plusieurs TCD

olivm

XLDnaute Junior
Bonjour.

Dans le cadre de mon stage, je dois automatiser des calculs par Excel.
Je suis débutant en macro et j'ai besoin de votre aide.

J'utiliser des TCD avec une base de donnée Oléap auquel je n'ai pas accès.

J'ai réussi à appliquer le filtre enseigne de mon TCD Ecriture Analytique à tout les TCD. Lorsque je sélectionne la cellule A1, la macro se lance.


Code :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Selection_Liste As String
If Target.Count = 1 And Target.Row < 2 And Target.Column = 1 Then

With ActiveSheet
Selection_Liste = .PivotTables("Ecriture Analytique").PivotFields( _
"[Chantier].[Enseignes].[Chantier Interne]").CurrentPageName
.PivotTables("Tableau croisé dynamique2").PivotFields( _
"[Chantier].[Enseignes].[Chantier Interne]").CurrentPageName = Selection_Liste
.PivotTables("Tableau croisé dynamique5").PivotFields( _
"[Chantier].[Enseignes].[Chantier Interne]").CurrentPageName = Selection_Liste
.PivotTables("Tableau croisé dynamique1").PivotFields( _
"[Chantier].[Enseignes].[Chantier Interne]").CurrentPageName = Selection_Liste
.PivotTables("Tableau croisé dynamique3").PivotFields( _
"[Chantier].[Enseignes].[Chantier Interne]").CurrentPageName = Selection_Liste

End With
End If
End Sub
Mais je ne peux pas appliquer cette macro lorsque je sélectionne plusieurs éléments enseignes.
Cela me serait utile si je regroupe deux enseignes ou bien si je souhaite appliquer cette macro à un autre filtre, comme par exemple le filtre calendrier, et me permettrait de sélectionner plusieurs mois et l'appliquer à tout les TCD.

Merci par avance!
 

olivm

XLDnaute Junior
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Comme je ne peux pas vous joindre mon fichier pour cause de confidentialité et de base de donnée externe à Excel,
je vous joins un classeur Excel illustrant un exemple de mon problème.

Merci par avance.
 

Pièces jointes

  • FiltresOlivm.zip
    27.7 KB · Affichages: 75

MJ13

XLDnaute Barbatruc
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Bonjour Olivm

J'ai essayé des trucs mais rien ne fonctionne :confused:

C'est vrai que c'est pa simple à programmer les TCDs pour mettre à jours sur certains éléments. Je laisse la main :eek:.

Sinon, Henry m'a donné ce code:

Code:
Sub Macro1()
'
' Macro1 Macro
'

'
    'ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Enseigne (site)").ClearAllFilters
    'ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
        "Enseigne (site)").CurrentPage = "Quimper"
    ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "Enseigne (site)").ClearAllFilters
    'ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Enseigne (site)").CurrentPage = "Quimper"
            ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "Enseigne (site)").CurrentPage = Range("B1").Text
End Sub

Ou Voir les fichiers:
 

Pièces jointes

  • FiltresOlivm.xls
    58 KB · Affichages: 101
  • FiltresOlivm2.xls
    58.5 KB · Affichages: 84
Dernière édition:

olivm

XLDnaute Junior
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Merci de vous préoccuper de mon problème.

Visiblement, j'ai mal décris mon petit souci.

En faite, j'arrive à changer le nom de mon enseigne et à l'appliquer à tout les TCD (regardez mon premier fichier, lorsque je change l'enseigne et que je clique sur B1, l'enseigne s'applique aux 2 TCD).

Ce que je n'arrive pas, c'est d'appliquer le filtre "mois" avec plusieurs élément (exple: Mars Avril Mai Juin Juillet) à tout les TCD. Donc du coup, la difficulté en plus, c'est que c'est un filtre champ de ligne et, autre difficulté, il y a plusieurs éléments à cocher. Avec mes recherches internet, j'ai entendu parler de "Items" lorsque il y a plusieurs éléments à cocher mais je n'y arrive toujours pas.
 

MJ13

XLDnaute Barbatruc
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Re

Tu peux tester ce code:

Code:
Sub choix_Items_TBL1()
     For x = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Mois").PivotItems.Count
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
                'MsgBox .PivotItems(x).Visible
                ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Mois").PivotItems(x).Visible = ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois").PivotItems(x).Visible
            End With
    Next
End Sub
 

olivm

XLDnaute Junior
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Ah merci, c'est exactement ce que je cherche à faire.
Cela marche sur le fichier exemple sue je vous ai envoyé mais pas sur mon fichier avec les cubes OLéAP.

Sub choix_Items_TBL1()
For x = 1 To ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("[Calendrier].[Calendrier AM].[Mois]").PivotItems.Count
With ActiveSheet.PivotTables("Ecriture Analytique").PivotFields("[Calendrier].[Calendrier AM].[Mois]")
'MsgBox .PivotItems(x).Visible
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("[Calendrier].[Calendrier AM].[Mois]").PivotItems(x).Visible = ActiveSheet.PivotTables("Ecriture Analytique").PivotFields("[Calendrier].[Calendrier AM].[Mois]").PivotItems(x).Visible
End With
Next
End Sub


Mon TCD1 s'appelle "Ecriture Analytique" etc TCD 2 "Tableau croisé dynamique2"

Je vais travailler dessus, faire des essais...

Mais ça m'avance déjà un petit peu votre code ;-)
 

MJ13

XLDnaute Barbatruc
Re : Filtre avec plusieurs éléments appliqué à plusieurs TCD

Re

Merci pour ton retour (cela m’intéresse).

Pour finir sur cette discussion, je ne saurais te dire sur un Cube Olap (car je n'en fais jamais).

Sinon, voici une solution sur ton exemple pour éviter les rafraîchissements d’écran dans le fichier joint.

Sinon, si tu trouves la solution , ce serait sympa de la poster ici (au moins le code), histoire que cela puisse servir à d'autres :).

Notons que l'on peut écrire aussi avec des SET:

Code:
Sub MAJ_TCD2()
Application.ScreenUpdating = False
Set PV1 = ActiveSheet.PivotTables(1).PivotFields
Set PV2 = ActiveSheet.PivotTables(2).PivotFields
   PV2( _
        "Enseigne (site)").ClearAllFilters
            PV2( _
            "Enseigne (site)").CurrentPage = Range("B1").Text
            PV2( _
            "Année").CurrentPage = Range("B2").Text
Application.ScreenUpdating = True
End Sub
Sub choix_Items_TBL1()
Application.ScreenUpdating = False
Set PV1 = ActiveSheet.PivotTables(1).PivotFields("Mois")
Set PV2 = ActiveSheet.PivotTables(2).PivotFields("Mois")
     For x = 1 To PV2.PivotItems.Count
        With PV1
                'MsgBox .PivotItems(x).Visible
                PV2.PivotItems(x).Visible = PV1.PivotItems(x).Visible
            End With
    Next
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • FiltresOlivm3.xls
    61 KB · Affichages: 115
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 185
Messages
2 086 014
Membres
103 093
dernier inscrit
Molinari