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 :

Tableaux croisés dynamiques et filtre [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut Tableaux croisés dynamiques et filtre
    Hello le forum,

    J'ai un soucis et je cherche depuis 2 jours un problème de filtre dans un tableau croisés dynamique. Voici mon problème :

    J'ai un champ Année en colonne dans le tableau croisé qui liste pour l'instant toutes les années de ma base. Je souhaite à l'aide de ma macro, désactiver toutes les années et activer uniquement 2 années que j'ai défini dans des variables.

    Je peux utiliser la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PivotTables("Your Pivot Name").PivotFields("Your Field Name").ClearAllFilters
    Le problème de cette commande est qu'elle affiche TOUS les éléments du filtre et qu'ensuite, je dois pour chaque année rendre l'élément invisible. Les années sont variables et je ne veux pas à chaque fois ajouter dans le code le fait de rendre invisible une année et visible une autre...

    J'aimerai pouvoir à l'aide de ma macro, enlever toutes les coches du filtres et activer les 2 selon mes variables.

    J'espère être claire et vous remercie pour votre aide,

    Belle journée,

    Caroline

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 419
    Points : 16 262
    Points
    16 262
    Par défaut
    Bonjour

    Il faut une boucle qui rendre invisible toute valeur <> de tes variables donc pas besoin de nommément préciser l'année.

    Mais VBA est-il indispensable alors qu'il existe des segments pour sélectionner très facilement des valeurs ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut
    Hello Chris,

    Merci pour ta réponse. Je n'ai jamais fait de boucle dans un pivot table et j'ai essayé ainsi mais ça coince sur la ligne If .pivotitem.value <> Année 1 then

    L'idée est que j'ai une variable Année 1 qui est à 2015 pour l'instant et que je souhaite qu'il désactive toutes les autres années de mon filtre. Dès que j'ai compris, je pense que je pourrai reprendre le même exemple pour fixer deux variable car j'aurai toujours besoin de 2 années. Merci

    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
    Option Explicit
     Sub Essai2()
     Dim i As Byte
     Dim Année1 As Integer
     Année1 = 2015
     
     With ActiveSheet.PivotTables("Stat2ansParRégion").PivotFields("Année")
         For i = 1 To .PivotItems.Count
            If .PivotItem.Value <> Année1 Then
                     .PivotItems(i).Visible = False
     
            End If
     
         Next i
     
     End With
     End Sub

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 419
    Points : 16 262
    Points
    16 262
    Par défaut
    Bonjour

    Le débogueur t'aurait permis de voir que dans les TCD la plupart des valeurs d'étiquettes sont des chaînes
    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
    Option Explicit
     Sub Essai2()
     Dim i As Byte
     Dim Année1 As String
     Dim an As PivotItem
     
     Année1 = 2015
     
    With ActiveSheet.PivotTables("Stat2ansParRégion").PivotFields("Année")
        .ClearAllFilters
     
         For Each an In .PivotItems
         
            If an.Value <> Année1 Then an.Visible = False
     
         Next
     
     End With
     End Sub
    devrait marcher si ton champ année n'est pas issu d'un regroupement de dates.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut J'ai trouvé ;-)
    Entretemps j'ai trouvé la solution

    Merci pour ton aide Chris

    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
    Année1 = 2015
     Année2 = 2014
     
     
    'Filtre des années
     
    ActiveSheet.PivotTables("Stat2ansParRégion").PivotFields("Année").ClearAllFilters
     
     With ActiveSheet.PivotTables("Stat2ansParRégion").PivotFields("Année")
         For iannee = 1 To .PivotItems.Count
            If .PivotItems(iannee) <> Année1 And .PivotItems(iannee) <> Année2 Then
                     .PivotItems(iannee).Visible = False
     
            End If
     
         Next iannee
     
     End With

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Tableaux croisés dynamique : filtre suivant une liste
    Par LG-69 dans le forum Excel
    Réponses: 4
    Dernier message: 20/02/2015, 16h30
  2. [XL-2007] Synchroniser les filtres des tableaux croisés dynamiques du classeur
    Par babelouze dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 02/03/2010, 19h20
  3. [VBA-E]Tableaux croisés dynamiques
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/06/2006, 15h33
  4. Faire des tableaux croisés dynamique
    Par richard038 dans le forum Bases de données
    Réponses: 6
    Dernier message: 12/04/2006, 21h51
  5. Tableaux croisés dynamiques et graphiques
    Par Marmouz dans le forum Access
    Réponses: 1
    Dernier message: 24/11/2005, 15h38

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