IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut Filtre avec plusieurs éléments appliqué à plusieurs TCD
    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 : 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
    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!

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut
    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.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut
    Quelques nouvelles.
    J'ai réussi à faire ce que je voulais sur mon fichier exemple => appliquer le filtre Mois avec plusieurs éléments à tout les TCD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub choix_Items_TBL1()
    Application.ScreenUpdating = False
         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
        Application.ScreenUpdating = True
    End Sub
    Mais je n'arrive pas à appliquer mon codeà mon fichier initial comportant des cubes OLAP (que je ne peux pas vous envoyer).
    J'ai essayé ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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
    Première ligne en jaune, erreur 1004...

    Pour info, le code qui s'affiche lorsque ce que j'enregistre une modificatin de mon filtre mois.

    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
    Sub Macro2()
    '
    ' Macro2 Macro
    '
     
    '
        ActiveSheet.PivotTables("Ecriture Analytique").PivotFields( _
            "[Calendrier].[Calendrier AM].[Année]").VisibleItemsList = Array("", _
            "[Calendrier].[Calendrier AM].[Année].&[2011]")
        ActiveSheet.PivotTables("Ecriture Analytique").PivotFields( _
            "[Calendrier].[Calendrier AM].[Mois]").VisibleItemsList = Array("", "", "", "", "", _
            "", "", "[Calendrier].[Calendrier AM].[Année].&[2012].&[2012]&[1]", _
            "[Calendrier].[Calendrier AM].[Année].&[2012].&[2012]&[2]", _
            "[Calendrier].[Calendrier AM].[Année].&[2012].&[2012]&[3]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[6]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[7]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[8]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[9]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[10]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[11]", _
            "[Calendrier].[Calendrier AM].[Année].&[2010].&[2010]&[12]")
    End Sub

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/04/2015, 11h00
  2. Requête et filtre avec compte élément distinct
    Par steps5ive dans le forum Cognos
    Réponses: 2
    Dernier message: 05/10/2011, 13h23
  3. drag and drop avec plusieurs éléments
    Par yohan0262 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/09/2008, 12h57
  4. Réponses: 1
    Dernier message: 23/04/2008, 00h05
  5. Réponses: 1
    Dernier message: 17/03/2008, 12h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo