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

Excel Discussion :

Filtres pivot table et vba


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Comme cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim str As String
     
    str = "ZZZ"
     
    ActiveSheet.PivotTables("TCD").PivotFields("Produit").PivotItems(str).Visible = False
    Jérôme

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    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

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    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 : 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
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    sur quelle ligne l'erreur 438?
    Jérôme

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut @Jerome
    Sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PivotTables("PivotTable2").CubeFields("[BPA].[BPA]").PivotItems(str).Visible = False
    Merci pour ton investissement dans cette question! Fernand

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    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

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut @JFONTAINE
    bonjour,

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

    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
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    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

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut @JFONTAINE
    Merci pour ton aide!

    Fernand

Discussions similaires

  1. [XL-2007] Problème de génération de TCD (Pivot table) avec VBa
    Par ManinBI dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/04/2012, 12h12
  2. Changer les données d'une pivot table en VBA avec SQL
    Par Reskibil dans le forum Général VBA
    Réponses: 0
    Dernier message: 03/04/2008, 17h47
  3. [debutante] Pivot table Range
    Par nawel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2005, 14h04
  4. OWC, Pivot table, AddCalculatedField et MDX
    Par Immobilis dans le forum ASP
    Réponses: 2
    Dernier message: 25/10/2005, 22h12
  5. Créer une table en VBA ?
    Par nicburger dans le forum Access
    Réponses: 11
    Dernier message: 16/02/2005, 15h15

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