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 :

Les fameux PivotItems [XL-2016]


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
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Par défaut Les fameux PivotItems
    Bonjour tout le monde


    Je cherche un moyen de simplifier le code suivant


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    ilot = Range("B28").Value
     
     
     
    ActiveSheet.ChartObjects("Graphique 1").Activate
     
    With ActiveChart.PivotLayout.PivotTable.PivotFields("SECTEUR")
     
     
     
     
                    If ilot Like "ILOT_3_AXES" Then
     
                                            .PivotItems("ILOT_3_AXES").Visible = True
                                            .PivotItems("ILOT_4_AXES").Visible = False
                                            .PivotItems("ILOT_BRIDES").Visible = False
                                            .PivotItems("ILOT_CITIZEN").Visible = False
                                            .PivotItems("ILOT_CU").Visible = False
                                            .PivotItems("ILOT_GARRET").Visible = False
                                            .PivotItems("ILOT_MAZAK").Visible = False
                                            .PivotItems("ILOT_MULTIAXE").Visible = False
                                            .PivotItems("ILOT_PRECISION").Visible = False
                                            .PivotItems("ILOT_SCIES").Visible = False
     
     
     
                    ElseIf ilot Like "ILOT_4_AXES" Then
     
                                            .PivotItems("ILOT_4_AXES").Visible = True
                                            .PivotItems("ILOT_3_AXES").Visible = False
                                            .PivotItems("ILOT_BRIDES").Visible = False
                                            .PivotItems("ILOT_CITIZEN").Visible = False
                                            .PivotItems("ILOT_CU").Visible = False
                                            .PivotItems("ILOT_GARRET").Visible = False
                                            .PivotItems("ILOT_MAZAK").Visible = False
                                            .PivotItems("ILOT_MULTIAXE").Visible = False
                                            .PivotItems("ILOT_PRECISION").Visible = False
                                            .PivotItems("ILOT_SCIES").Visible = False
     
     
    End if

    J'ai bien essayé de faire les truc que je trouvais sur internet mais la il s'agit des PivotItems d'un graphique lié à un tableau et non du tableau en lui même, je pense que c'est pour ça que ce que je trouve sur internet ne marche pas.

    Quelqu'un aurait une idée pour m'aider à simplifié ce code parce que j'ai encore BEAUCOUP de PivotItems à géré plus tard

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,
    Mettre la boucle ci-dessous a la place de ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .PivotItems("ILOT_3_AXES").Visible = True
                                            .PivotItems("ILOT_4_AXES").Visible = False
                                            .PivotItems("ILOT_BRIDES").Visible = False
                                            .PivotItems("ILOT_CITIZEN").Visible = False
                                            .PivotItems("ILOT_CU").Visible = False
                                            .PivotItems("ILOT_GARRET").Visible = False
                                            .PivotItems("ILOT_MAZAK").Visible = False
                                            .PivotItems("ILOT_MULTIAXE").Visible = False
                                            .PivotItems("ILOT_PRECISION").Visible = False
                                            .PivotItems("ILOT_SCIES").Visible = False
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim pvti as pivotitem
    for each pvti in ActiveChart.PivotLayout.PivotTable.PivotFields("SECTEUR").pivotitems
      if pvti.name = "ILOT_3_AXES" then 
        pvti.visible = true
      else
        pvti.visible =false
      end if
    next pvti
    Adapter pour le second if

  3. #3
    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

    Au moins un pivotitem doit être visible : on ne sais pas au départ combien sont visibles donc un test qui met à false risque de planter si c'était l'unique visible.

    On commence donc par supprimer le filtre avec ClearAllFilters puis on met à false ce qui ne correspond pas au choix dans une boucle qui teste si le pivotitem <> du choix donc ilot

    Et on part des pivotitems pas de ilot afin d'avoir une seule boucle et un seul test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim pvti as pivotitem
    for each pvti in ActiveChart.PivotLayout.PivotTable.PivotFields("SECTEUR").pivotitems
      if pvti.name <> ilot then pvti.visible =false
    next pvti
    Edit : on n'est pas obligé de sélectionner le graph
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("NomDeLaFeuille").PivotTables("NomDuTCDLié").PivotFields("SECTEUR").pivotitems
    fera la même chose

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Par défaut
    Merci beaucoup !!!

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Par défaut
    Désolé du double post mais en faite je me suis trompé, vos réponses ne marchent pas

    Il y a en faite forcément un moment ou ça plante dû au fait qu'il faut qu'au moins un pivottable reste True...

    Comme à chaque fois que la macro est utilisé, elle ne sélectionne qu'un seul PivotTable, des fois elle plante car elle met à False l'unique PivotTable qui était True


    Une idée ??

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 125
    Par défaut
    Ah non pardon, c'est la méthode ClearAllFilters que j'avais mal appliqué, je ne la connaissait pas, merci beaucoup

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

Discussions similaires

  1. [XL-2007] Les fameux tableaux d'EXCEL
    Par AgriPhilou dans le forum Conception
    Réponses: 5
    Dernier message: 05/12/2012, 19h17
  2. Les fameux caracteres single quote
    Par acheo dans le forum C#
    Réponses: 3
    Dernier message: 11/10/2011, 08h43
  3. JS et les fameux cookies (Effacer)
    Par phfle1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/07/2009, 18h40
  4. [XSLT][->texte] les fameux retour chariot et a la ligne
    Par SOPRA-Eherve dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/06/2006, 23h14
  5. Les fameux pointeurs
    Par vdumont dans le forum C++
    Réponses: 24
    Dernier message: 07/05/2006, 18h18

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