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 :

Modifier les filtres d'un Graph Croisé Dynamique suivant la valeur d'une cellule


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
    Responsable de production
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut Modifier les filtres d'un Graph Croisé Dynamique suivant la valeur d'une cellule
    Bonjour,

    J'ai chercher sur le forum mais sans succès concernant ma problématique.
    Mon fichier me permet de centraliser les performances d'une équipe suivant plusieurs critères.

    J'ai un onglet (ScoreIndiv) sur lequel se trouve le récapitulatif des performances d'une personne, son nom est indiqué en C4.
    Sur ce même onglet se trouve un Graphique croisé dynamique (Graph_Score) et j'aurais besoin que le filtre de mon graphique (nommé "Nom-Indiv") soit égal à la valeur indiqué en C4.

    Je ne suis pas encore suffisamment avancé en VBA pour m'écrire mon code, c'est pour ça que je sollicite votre aide pour m'aiguiller.

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Bonjour,

    As-tu essayé d'obtenir le code avec l'enregistreur de macro ? Tu changes la valeur du filtre et récupères le code associé avec l'enregistreur de macro. Ensuite, y a plus qu'à adapter le code pour que la valeur du filtre soit égale à celle de la cellule C4.

    Si tu veux que la valeur du filtre soit changée à chaque fois que tu changes la valeur de la cellule C4, tu peux regarder du côté des évènements dans la feuille de calcul : http://silkyroad.developpez.com/VBA/EvenementsFeuille/

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de production
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Ok pour l'enregistreur.
    J'ai bien un code de généré, mais quelle est la syntaxe pour spécifier une cellule plutôt que le texte ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        ActiveSheet.ChartObjects("Graph_Score").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields( _
            "[Score-Indiv].[Nom].[Nom]").VisibleItemsList = Array( _
            "[Score-Indiv].[Nom].&[DUPONT Pierre]")
    Soit remplacer "[Dupont Jean]" par quelque chose comme "Range("C4").Value", je suis un peu perdu là...

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Petit exemple d'utilisation de variable et concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Integer
    i = 3
    MsgBox "M. Dupond a " & i & " enfants."             'renvoie : M. Dupond a 3 enfants.
    MsgBox "M. Dupond a i enfants."             'renvoie : M. Dupond a i enfants.
    Tu peux faire le même exemple avec une valeur de cellule. Supposons qu'il y la valeur 3 en A1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MsgBox "M. Dupond a " & Range("A1").Value & " enfants."             'renvoie : M. Dupond a 3 enfants.
    MsgBox "M. Dupond a Range("A1").Value enfants."             'renvoie une erreur, car problème de guillemets
    MsgBox "M. Dupond a Range(""A1"").Value enfants."             'renvoie : M. Dupond a Range("A1").Value enfants
    Est-ce que tu vois comment adapter ton code maintenant ?

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de production
    Inscrit en
    Novembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de production
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2013
    Messages : 14
    Par défaut
    Je dois vraiment passé à coté de quelque chose.

    L'évènement c'est ok, testé avec un msgbox ça marche, le msgbox affiche bien la donnée que je cherche à attribuer à mon filtre. Mais je ne parviens pas à faire fonctionner ce changement de filtre... Voici mon code.



    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim KeyCell As Range
     
    Set KeyCells = Range("C4:D4")
     
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
    Is Nothing Then
     
     
        ActiveSheet.ChartObjects("Graph_Inc").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields( _
            "[Action- Intervenant].[Nom].[Nom]").VisibleItemsList = Array( _
            [Range("C4").value])
     
     
     
    ' MsgBox Range("C4").Value
     
    End If
    End Sub
    J'ai pas mal cherché mais j'avoue être perdu..

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Qu'y a-t-il d'écrit en cellule C4 ? "[Score-Indiv].[Nom].[DUPONT Pierre]" ou "[DUPONT Pierre]" ? Quel sont les éléments dans la liste de filtre ?
    Je reprends ce message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveSheet.ChartObjects("Graph_Score").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields( _
            "[Score-Indiv].[Nom].[Nom]").VisibleItemsList = Array( _
            "[Score-Indiv].[Nom].&[DUPONT Pierre]")
    Soit remplacer "[Dupont Jean]" par quelque chose comme "Range("C4").Value", je suis un peu perdu là...
    Que vient faire le "&" ? Les "[ ]" sont-ils intégrés dans la cellule C4 ?
    Est-ce que tu veux écrire : [Score-Indiv].[Nom].[valeur de la cellule C4] ou [Score-Indiv].[Nom].valeur de la cellule C4 ou valeur de la cellule C4 ou même encore [valeur de la cellule C4] ?
    Si je prends le cas où tu voudrais écrire [Score-Indiv].[Nom].[valeur de la cellule C4]. Il faut que tu mettes entre guillemets les éléments fixes et tu concatène (&) avec les éléments variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "[Score-Indiv].[Nom].[" & Range("C4").Value & "]"

Discussions similaires

  1. [XL-2013] Power-Pivot : cacher les filtres d'un tableau croisé dynamique
    Par Mathsdeb dans le forum Excel
    Réponses: 2
    Dernier message: 21/06/2015, 13h10
  2. Réponses: 8
    Dernier message: 28/01/2015, 17h21
  3. Rafraîchir les filtres d'un tableau croisé dynamique
    Par Flower123 dans le forum Excel
    Réponses: 8
    Dernier message: 07/09/2009, 17h54
  4. modifier le nom de la feuille en fonction de la valeur d'une cellule
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2008, 01h40
  5. Réponses: 1
    Dernier message: 05/07/2007, 19h28

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