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 :

Tableau croisé dynamique et filtre


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 Tableau croisé dynamique et filtre
    Hello l'équipe,

    J'ai un tableau croisé dynamique dans excel qui contient un filtre de rapport sur un champ "Nom". Sur une autre feuille, j'ai un formulaire dans lequel je choisi un nom.

    J'essaie de trouver la propriété du tableau croisé dynamique qui permet d'afficher tous les éléments du champs qui se trouve dans le filtre du rapport, puis les masque tous pour afficher finalement la bonne valeur (variable qui reprend le choix de mon formulaire).

    Voici le code qui s'affiche dans VBA lorsque j'enregistre ma macro. J'aimerais que ma macro désactive tous les critères et affiche uniquement celui défini dans la variable (sans devoir les désactiver un par un...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Company"). _
            CurrentPage = "(All)"
        With ActiveSheet.PivotTables("Tableau croisé dynamique7").PivotFields("Company" _
            )
            .PivotItems("toto").Visible = True
            .PivotItems("titi").Visible = False
     
        End With
    Si quelqu'un peut me donner un p'tit coup de pouce, d'avance un GRAND merci.

    Caro

  2. #2
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 366
    Points : 324
    Points
    324
    Par défaut
    Bonjour,

    Voici un début de réponse à ce problème (code loin d'être optimisé) :

    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
    39
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Dim ValAConserver(1 To 4) As String
        ValAConserver(1) = "1"
        ValAConserver(2) = "12"
        ValAConserver(3) = "13"
        ValAConserver(4) = "16"
     
        ValOK = "13"
     
        Range("A1:C5").Select
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Feuil1!R1C1:R5C3", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="Feuil1!R1C6", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("Feuil1").Select
        Cells(1, 6).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("toto")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("titi")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("tata"), "Somme de tata", _
            xlSum
        For i = 1 To 4
            If ValOK <> ValAConserver(i) Then
                ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("titi").PivotItems(ValAConserver(i)).Visible = False
            End If
        Next
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("titi").PivotItems(ValOK).Visible = True
    End Sub
    A noter
    1) que le "critère" à ne pas masquer est ici la valeur "13" (qui pourrait être retournée par ailleurs, ici je l'ai codée en dur)
    2) que les autres critères sont entrés en dur aussi ici. On pourrait surement les lister à partir des variables du tableau de données

    Est-ce que ça ressemble déjà à ce que tu souhaites ?

Discussions similaires

  1. [XL-2007] Filtre sur graphe de tableau croisé dynamique
    Par kluh dans le forum Excel
    Réponses: 1
    Dernier message: 25/11/2009, 08h28
  2. Rafraîchir les filtres d'un tableau croisé dynamique
    Par Flower123 dans le forum Excel
    Réponses: 8
    Dernier message: 07/09/2009, 16h54
  3. [XL-2007] Filtre sur tableau croisé dynamique
    Par Flower123 dans le forum Excel
    Réponses: 2
    Dernier message: 18/06/2009, 16h14
  4. Filtre Tableau croisé dynamique
    Par adrien.gendre dans le forum Excel
    Réponses: 1
    Dernier message: 29/07/2007, 13h06
  5. [VBA-Excel] Faire un filtre dans un tableau croisé dynamique
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2006, 15h05

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