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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    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 564
    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 ?

  3. #3
    Membre confirmé
    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
    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 confirmé
    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
    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

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

    2010 utilise aussi les segments... donc on peut se passer de VBA puisqu'un clic suffit...

  6. #6
    Membre confirmé
    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
    Par défaut
    Sais tu comment faire ? Je n'ai jamais entendu parler des segments

+ 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