Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut Filtres pivot table et vba

    Bonjour,

    je travaille avec xl2010 et je cherche à modifier le filtre d'un pivot table au moyen de vba; il y a bien sûr la technique d'écrire "false" ou "true" à côté des valeurs, mais cela ne m'intéresse pas. Je voudrais que le filtre prenne une valeur définie dans une variable en input.

    Quelqu'un peut-il m'aider?
    précision: mes pivot table sont créés sur des cubes analysis services

    nb c'est ma 1ère question sur un forum, désolé si je ne la place pas dans la rubrique adéquate.

  2. #2
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 8 599
    Points
    8 599

    Par défaut

    Bonjour,

    Comme cela?
    Code :
    1
    2
    3
    4
    5
    Dim str As String
     
    str = "ZZZ"
     
    ActiveSheet.PivotTables("TCD").PivotFields("Produit").PivotItems(str).Visible = False
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  3. #3
    Expert Confirmé Sénior
    Homme Profil pro Daniel
    aucune
    Inscrit en
    septembre 2011
    Messages
    6 335
    Détails du profil
    Informations personnelles :
    Nom : Homme Daniel
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : septembre 2011
    Messages : 6 335
    Points : 11 178
    Points
    11 178

    Par défaut

    Bonjour,

    Avec la propriété "CurrentPage", s'il n'y a qu'une valeur :

    Code :
    ActiveSheet.PivotTables(1).PivotFields("Noms").CurrentPage = "Nom3"
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @ JFONTAINE

    merci pour cette réponse rapide qui fonctionne bien lorsque je l'applique à un pivot table basé sur un fichier xls. Par contre, lorsque je l'applique à un pivot table basé sur un cube "analysis services", cela ne fonctionne plus:

    Run-time error’1004’ :
    Unable to get the PivotFields property of the PivotTable class
    .. et la phrase suivante se met en surbrillance:

    ActiveSheet.PivotTables("PivotTable2").PivotFields("BPA").PivotItems(str).Visible = False

    ??? Merci pour votre aide!


    FS

  5. #5
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 8 599
    Points
    8 599

    Par défaut

    Cette erreur survient quand la valeur filtrée n'existe pas.
    Es tu sur de la valeur de la variable str ?
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  6. #6
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @JFONTAINE

    Afin d'être sûr du nom des champs, j'ai créé par macro recording un pivot table (macro 2 ci-dessous)

    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
    Sub Macro2()
    '
    ' Macro2 Macro
    '
     
    '
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
            ActiveWorkbook.Connections("titan ARAG_Ssas3 Snapshot"), Version:= _
            xlPivotTableVersion14).CreatePivotTable TableDestination:="Sheet2!R9C1", _
            TableName:="PivotTable3", DefaultVersion:=xlPivotTableVersion14
        Cells(9, 1).Select
        With ActiveSheet.PivotTables("PivotTable3").CubeFields("[BPA].[BPA]")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables( _
            "PivotTable3").CubeFields("[Measures].[Claim Book Amount]")
    End Sub
     
     
     
    J'ai alors adapté ta macro comme suit:
     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
      Dim str As String
     
     
      str = "A"
     
     
      ActiveSheet.PivotTables("PivotTable2").CubeFields("[BPA].[BPA]").PivotItems(str).Visible = False
     
    End Sub

    et j'obtiens l'erreur:


    Run-time error ‘438’:
    Object doesn’t support this property or method

  7. #7
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @JFONTAINE

    .. ne pas s'inquiéter du fait qu'il y a un pivot table 3 et un pivot table 2..

    fernand

  8. #8
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 8 599
    Points
    8 599

    Par défaut

    sur quelle ligne l'erreur 438?
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  9. #9
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @Jerome

    Sur cette ligne:

    Code :
    ActiveSheet.PivotTables("PivotTable2").CubeFields("[BPA].[BPA]").PivotItems(str).Visible = False
    Merci pour ton investissement dans cette question! Fernand

  10. #10
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 8 599
    Points
    8 599

    Par défaut

    As tu essayé d'utiliser l'enregistreur de macro pour choisir ton filtre afin de voir si la ligne de code est correcte ?
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  11. #11
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @JFONTAINE

    bonjour,

    voici ce qui sort comme filtre avec l'éditeur de macro:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Macro5()
    '
    ' Macro5 Macro
    '
     
    '
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
            ActiveWorkbook.Connections("titan ARAG_Ssas3 Snapshot"), Version:= _
            xlPivotTableVersion14).CreatePivotTable TableDestination:="Sheet3!R6C5", _
            TableName:="PivotTable6", DefaultVersion:=xlPivotTableVersion14
        Cells(6, 5).Select
        ActiveSheet.PivotTables("PivotTable6").AddDataField ActiveSheet.PivotTables( _
            "PivotTable6").CubeFields("[Measures].[Claim Book Amount]")
        With ActiveSheet.PivotTables("PivotTable6").CubeFields("[BPA].[BPA]")
            .Orientation = xlPageField
            .Position = 1
        End With
     
        ActiveSheet.PivotTables("PivotTable6").CubeFields(10).EnableMultiplePageItems _
            = True
        ActiveSheet.PivotTables("PivotTable6").PivotFields("[BPA].[BPA].[BPA]"). _
            VisibleItemsList = Array("[BPA].[BPA].&[A]")
    End Sub




    les dernières lettres " &[A] " signifient que je filtre sur la valeur A.

    Le fait qu'il met tantôt 2 fois [BPA] et tantôt 3 fois est probablement dû à la hierarchie du cube

  12. #12
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 8 599
    Points
    8 599

    Par défaut

    Je ne peux que te conseiller d'utiliser ce code qui est adapté au Cube.
    Il te faudra peut etre épurer un peu
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  13. #13
    Invité de passage
    Homme Profil pro fernand sprimont
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme fernand sprimont
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut @JFONTAINE

    Merci pour ton aide!

    Fernand

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •