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 :

Lier des filtres de tableaux croisées dynamiques


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Lier des filtres de tableaux croisées dynamiques
    Bonjour!

    Mon problème est le suivant: j'ai plusieurs TCD dans une même page Excel et je souhaite que, lorsque je sélectionne un nom dans le filtre d'un des mes TCD, tous les autres TCD adoptent immédiatement le même nom (en gros, lier les TCD entre eux!)
    J'imagine qu'un code VBA pourrait me résoudre ça, mais je n'ai rien trouvé en cherchant dans des forums...

    Merci d'avance de votre aide!!

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Je suppose que ce que tu appelles 'filtre' est un champ de page. Je suppose aussi que tous les TCD ont le(s) même(s) champ(s) de page
    Je vois 2 stratégies possibles.
    • Soit tu utilises un des TCD pour choisir les valeurs de(s) champ(s) de page, et tu recopies les choix dans les autres
    • soit tu utilises une liste de choix pour chaque champ et tu recopies les choix dans tous les TCD


    Pour accéder, en lecture ou écriture, à la valeur d'un champ de page, tu as la méthode CurrentPage. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonTCP.PageFields("NomChamp").CurrentPage
    Bon courage,

    PGZ

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ces premiers éléments de réponse!

    Effectivement, l'idée est que j'ai 2 TCD (TCD1 et TCD2) avec un champ de page commun, et je souhaite que, lorsque que je choisis un valeur pour ce champ pour TCD1, le champ de TCD2 prenne automatiquement la même valeur.

    En partant de ta ligne de code, j'ai donc essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TCD1.PageFields("NomChamp").CurrentPage = TCD2.PageFields("NomChamp").CurrentPage
    Mais cela ne fonctionne pas... Est-ce seulement possible de forcer la valeur de champ d'un TCD par rapport à un autre?

    Merci!

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Si tes deux TCD s'appellent bien "TCD1" et "TCD2", alors essaie cette procédure pour 1 champ de page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    If Target.Name = "TCD1" Then
        Target.Parent.PivotTables("TCD2").PageFields(1).CurrentPage = Target.PageFields(1).CurrentPage.Name
    End If
    End Sub
    Si tu as plusieurs champs de page, une petite boucle For ... Next, en remplaçant "1" par l'indice de la boucle.

    La procédure est à copier dans le module associé à la feuille des 2 TCD.

    Cordialement,

    PGZ

Discussions similaires

  1. Lier des filtres de tableaux croisées dynamiques
    Par linuks dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/11/2011, 22h35
  2. Lier des filtres de rapports simples
    Par PAYASS59 dans le forum Webi
    Réponses: 6
    Dernier message: 08/12/2010, 16h42
  3. Lier des filtres de tableaux croisées dynamiques
    Par ckim77 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/01/2010, 00h31
  4. Réponses: 1
    Dernier message: 27/02/2009, 10h57
  5. Tableaux croisés dynamiques
    Par titeZ dans le forum Excel
    Réponses: 2
    Dernier message: 22/08/2007, 20h49

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