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 :

filtre sur un TCD [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut filtre sur un TCD
    Bonjour le forum,

    Je me trouve confronté à un problème qui me bloque complètement dans la suite de mon projet...

    Voici le problème:

    Tout d'abord l'utilisateur est face à une liste de pays (listbox), il peut ainsi sélectionner les pays qu'ils veut. ( une petite centaine maximum)

    J'ai une feuille (Feuil1) où sont inscrit les pays qu'il a sélectionné. Ces pays sont inscrit les uns à la suite des autres en colonne sur la Feuil1.

    La suite du code permettrait de filtrer ces pays sur un TCD qui se trouve Feuil2, le tableau allant chercher les valeur dans l'onglet "Database"


    le nom du tableau croisé dynamique est (PivotTable2) et le filtre s'effectue sur la variable ("dbo_t_COUNTRY_Name")


    J 'espère que ma demande est suffisemment claire

    N'hésitez pas à me demander des précisions, je suis vraiment bloquer là dessus et je ne trouve pas le moyen de faire un tel filtre.

    Merci de me lire et m'aider

    Cordialement
    DoDo

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    J'ai nommé la zone de critères de Feuil1: ZoneCriteres
    Mon TCD est dans Feuil4

    A toi d'adapter en conséquence:
    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
    Sub FilterPivotTable()
    Dim PVT As PivotField
    Dim Tb
    Dim i As Integer
     
    Application.ScreenUpdating = False
    Tb = Worksheets("Feuil1").Range("ZoneCriteres")                                                 'Adapte à la plage des critères. J'ai utilisé ici une plage nommée
    Set PVT = Worksheets("Feuil4").PivotTables("PivotTable2").PivotFields("dbo_t_COUNTRY_Name")     'Feuil4 étant la feuille dans laquel tu as ton TCD
    With PVT
        .ClearAllFilters
        On Error Resume Next
        .PivotItems(Tb(1, 1)).Visible = True
        For i = 1 To .PivotItems.Count
            .PivotItems(i).Visible = .PivotItems(i) = Tb(1, 1) Or Not .PivotItems(i).Visible
        Next i
        For i = 2 To UBound(Tb)
            .PivotItems(Tb(i, 1)).Visible = True
        Next i
    End With
    Set PVT = Nothing
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour mercatog,

    Merci pour ta solution proposée,

    elle marche certainement, mais je n'arrive pas à comprendre comment elle marche.

    là je définie Tb : ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tb = Worksheets("code").Range(PAYS_choisi)
    et là je ne comprend pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       .PivotItems(Tb(1, 1)).Visible = True
        For i = 1 To .PivotItems.Count
            .PivotItems(i).Visible = .PivotItems(i) = Tb(1, 1) Or Not .PivotItems(i).Visible
        Next i
        For i = 2 To UBound(Tb)
            .PivotItems(Tb(i, 1)).Visible = True
        Next i
    a quoi correspond Tb(1,1) ? ( normalement il prend la 1ère valeur de mon range Tb?)

    J'ai fais toutes les modif que je voyais mais le filtre ne s'éxécute pas et il reste sur "TOUS"

    Merci de ton aide mercatog

    Cdlt
    DoDo

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    C'est quoi ton dbo_t_COUNTRY_Name?
    C'est une étiquette de lignes ou filtre du rapport de ton TCD?

    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Bonjour mercatog,

    Mon " dbo_t_COUNTRY_Name" est un filtre du rapport ...


    Comme rien ne se passait j'ai rajouté la ligne en rouge ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With PVT
        .ClearAllFilters
        .EnableMultiplePageItems = True

    Mais maintenant, le filtre affiche "vide"...
    et toujours pas le filtre des pays souhaités :'(

    Merci pour ton aide mercatog

    Cdlt
    DoDo

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    J'ai testé et ça fonctionne.
    As tu adapté le code à ton fichier?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tb = Worksheets("Feuil1").Range("ZoneCriteres")
    Sur Feuil1, j'ai nommé la plage A1:A20 (par exemple) par le nom ZoneCriteres. C'est la plage où sont saisies les critères pays à afficher sur le TCD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set PVT = Worksheets("Feuil4").PivotTables("PivotTable2").PivotFields("dbo_t_COUNTRY_Name")    'Feuil4 étant la feuille dans laquel tu as ton TCD
    Le TCD s'appelle PivotTable2 dans Feuil4.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  7. #7
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 229
    Points : 168
    Points
    168
    Par défaut
    Re mercatog



    je suis vraiment désolé, j'ai tout repris, et ca marche parfaitement

    mon erreur se trouvait dans le range... j'étais sur la mauvaise colonne et je n'avais pas vu cette erreur, vraiment désolé

    Merci pour le temps que tu m'a accordé

    Cordialement
    DoDo

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

Discussions similaires

  1. [XL-2007] Bloquer certains filtres sur un TCD et la table des champs
    Par nono95200 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/11/2014, 12h13
  2. [XL-2010] Filtre sur un TCD en vba
    Par RomBon dans le forum Excel
    Réponses: 3
    Dernier message: 31/07/2014, 10h10
  3. filtre sur un TCD
    Par pimpom81 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/06/2012, 16h44
  4. [XL-2003] Filtre sur TCD
    Par nawakbling dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/11/2011, 11h01
  5. [XL-2010] Filtre multiple sur Label TCD
    Par lafafmentvotre dans le forum Excel
    Réponses: 0
    Dernier message: 04/03/2011, 15h35

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