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 le filtre d'un TCD à partir d'une zone de list dans feuille excel [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut Modifier le filtre d'un TCD à partir d'une zone de list dans feuille excel
    Bonjour, comme le titre l'indique , je cherche a modifier le filtre de 4 tableaux croisés dynamiques lors d'un changement dans ma "zone combinée1" qui est une combobox dans ma feuille.

    Voici le code utilisé:
    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
    Sub Zonecombinée1_QuandChangement()
       Dim dat
     
         ActiveSheet.Shapes.Range(Array("Drop Down 1")).Select
     
        dat = Selection.Value
        MsgBox dat
        ActiveSheet.ChartObjects("Graphique 4").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields("N°").ClearAllFilters
        ActiveSheet.PivotTables(-1).PivotFields("N°").CurrentPage = dat
        ActiveSheet.ChartObjects("Graphique 6").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields("N°").ClearAllFilters
        ActiveSheet.PivotTables(-1).PivotFields("N°").CurrentPage = dat
        ActiveSheet.ChartObjects("Graphique 10").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields("N°").ClearAllFilters
        ActiveSheet.PivotTables(-1).PivotFields("N°").CurrentPage = dat
        ActiveSheet.ChartObjects("Graphique 9").Activate
        ActiveChart.PivotLayout.PivotTable.PivotFields("N°").ClearAllFilters
        ActiveSheet.PivotTables(-1).PivotFields("N°").CurrentPage = dat
    End Sub

    Le soucis est qu'il m'affiche une erreur "400" et il ne m'affiche aucune lignes en jaune...
    Mon code est situé dans ma feuille ou son mes graphs et ma combobox
    A noter que le MSgBox était là pour que je sache si il sélectionne bien la valeur de la list : mais il m'indique la position (1 , 2 , 3 ... ) dans la list de la valeur sélectionnée , je pense que c'est un problème
    mais pas le seul puisque que quand je choisi manuellement cette valeur l'erreur existe toujours.
    Pouvez vous m'éclairer sur mon petit soucis ??
    Merci de votre aide
    Voici une partie de mon tableau :
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    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 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Si tu as 2013 pourquoi ne pas toute simplement utiliser un segment lié à tes quatre TCD s'ils ont la même source ?

    On ne voit pas tes TCD : currentpage ne concerne que les champs placés en zone de filtre. Est-ce la cas ?

    En debug dat correspond-il bien à une valeur de même type existant dans les TCD ?
    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 du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut
    Salut, merci pour ta réponse,
    J'utilise ce fichier sur plusieurs version d'excel dont 2010
    Pour le code que j'ai mis, j'ai utilisé l'enregistreur de macro , et j'ai juste remplacé Currentpage donc je ne sais pas si c'est ce qu'il faut faire ..
    Et pour dat , je cherche a récupérer la valeur de ma zonecombinée qui correspond bel et bien à une valeur existant dans le filtre des TCD..
    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut
    J'ai finalement réussi a me débrouiller en passant par un userform !!
    Voici le code si cela peut aider:
    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
    Private Sub ComboBox1_Change()
    dat = ComboBox1.Value
    For i = 1 To 4
    ActiveSheet.ChartObjects("Graphique " & i).Activate
     With ActiveChart.PivotLayout.PivotTable.PivotFields("N°")
            .Orientation = xlPageField
            .Position = 1
            .CurrentPage = dat
        End With
        Next i
        Unload Me
    End Sub
     
    Private Sub UserForm_Initialize()
    U = Sheets("RECAPITULATIF").Range("A" & Rows.Count).End(xlUp).Row
    i = Sheets("Données").Range("K" & Rows.Count).End(xlUp).Row
    Sheets("RECAPITULATIF").Range("A3:A" & U).AdvancedFilter Action:=xlFilterCopy _
            , CopyToRange:=Sheets("Données").Range("K91:K100"), Unique:=True
     
      Me.ComboBox1.List = Worksheets("Données").Range("K91:K" & i).Value
      d = Right(Year(Now), 2)
      Me.ComboBox1.Value = ("HYD" & d)
     
     
    End Sub

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    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 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    2010 utilise aussi les segments... donc on peut se passer de VBA puisqu'un clic suffit...
    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é...

  6. #6
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut
    Sais tu comment faire ? Je n'ai jamais entendu parler des segments

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    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 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Tes TCD sont bien basés sur la même source ?

    Tu te places dans un TCD, Onglet Insertion, Segment, et tu choisis le champ concerné (qui peut ne pas être placé dans le TCD).

    Tu places ton segment, le dimensionne (taille, nombre de colonnes, aspect...)

    Puis clic droit sur son en-tête et Connexions de TCD : tu coches les 4 TCD à lier à ce même segment.

    Un peu de lecture et exemples http://www.excel-formations.fr/Trucs_astuces/TCD04.php et http://www.excel-formations.fr/Trucs_astuces/TCD00.php partie "Plus sur les segments"

    Pour info les segments existent aussi sur les tableaux (plage mise sous forme de tableau) à partir de la version 2013.
    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é...

  8. #8
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut
    Salut , ca m'a bien aidé, mais sur excel 2013 je crois qu'on ne peut pas lier les tcd avec le même segment...

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    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 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Bien sûr que si : cela a commencé dans 2010 et continue sur 2013 et 2016.

    As-tu au moins essayé ?
    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é...

  10. #10
    Membre du Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Février 2015
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Février 2015
    Messages : 126
    Points : 65
    Points
    65
    Par défaut
    Yes, j'ai essayé, j'ai réussi a mettre mon segment sur 1 tableau mais pas à les connecter entre eux...
    J'ai finalement réussi en passant par vba , sans l'userform, directement avec la combobox shape de ma feuille
    Merci de ton aide, je réfléchirais plus sérieusement aux segments si je vois que mon code merdouilles un peu..

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

Discussions similaires

  1. Maj d'une table à partir d'une zone de liste
    Par farios dans le forum Access
    Réponses: 2
    Dernier message: 13/02/2007, 10h24
  2. Réponses: 2
    Dernier message: 26/01/2007, 15h56
  3. zone de liste à partir d'une zone de liste
    Par ludo50 dans le forum Access
    Réponses: 3
    Dernier message: 22/11/2006, 20h17
  4. Réponses: 5
    Dernier message: 11/08/2006, 22h14
  5. requête à partir d'une zone de liste multiple??
    Par chambon.denis dans le forum Access
    Réponses: 5
    Dernier message: 23/01/2006, 10h46

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