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 :

Propriétés Visible et Name de PivotItem


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut Propriétés Visible et Name de PivotItem
    Bonjour,

    J'ai déjà fait beaucoup de recherches sur d'autres discussions et d'autres forums pour mon problème, mais je n'arrive pas à le résoudre. J'ai fait aussi beaucoup d'essais sur mon code, mais sans succès...

    Contexte : J'ai une plage de donnée avec les noms des PivotItems que je veux sélectionner sur mon TCD (c'est tout simplement un une liste de mots sur les cellules A100 à A109). Je veux créer un code qui rend visibles les PivotItems dont le nom est dans cette liste et non visibles pour les autres. Voici le code que j'ai fait :

    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
     
    Sub data_setting(sheet, pivot_table)
     
        Sheets(sheet).Activate
     
        losses_types = Range("A5:A14").Value
        Range("A100:A109") = losses_types
     
    ' ----- pas important pour la question
        ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").ClearAllFilters
        ActiveSheet.PivotTables(pivot_table).PivotFields("Month").ClearAllFilters
        ActiveSheet.PivotTables(pivot_table).PivotFields("Month").CurrentPage = "(All)"
     
        With ActiveSheet.PivotTables(pivot_table).PivotFields( _
            "Somme de Durée décimale")
            .Caption = "Moyenne de Durée décimale"
            .Function = xlAverage
        End With
     '-----   
     
        Dim loss_type As PivotItem
     
        For Each loss_type In ActiveSheet.PivotTables(pivot_table).PivotFields("Durée décimale").PivotItems()
     
            Select Case loss_type.name
     
                Case Range("A100"), Range("A101"), Range("A102"), Range("A103"), Range("A104"), Range("A105"), Range("A106"), Range("A107"), Range("A108"), Range("A109")
                    ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(loss_type.name).Visible = True
                Case Else
                    ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(loss_type.name).Visible = False
     
            End Select
     
        Next loss_type
     
    End Sub
    Problème : le code me renvoie sans cesse l'erreur "Impossible de définir la propriété Visible de la classe PivotItem"
    J'ai fait un essai avec le même type de syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim nom As String
    nom = "un nom de ma liste"
    ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(nom).Visible = False
    Et là, ça marche ... Je me suis donc demandée si mon problème venait du faite qu'Excel ne comprend pas que loss_type.name est un String ? Il n'y a jamais les " ".

    Au tout début j'avais essayé la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    loss_type.Visible = False
    Mais là, il ne se passait absolument rien : pas d'erreur, mais pas d'action non plus ...

    Auriez-vous des idees, des pistes ... des solutions ? Cela fait longtemps que je pêche sur ce problème et je ne peux pas avancer sur mon code, si ça bloque ici ...

    Merci beaucoup !

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    J'ai essayé qqc de nouveau :

    J'ai utilisé : SourceNameStandard et une MsgBox pour voir ce que ça renvoyait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    nom = loss_type.SourceNameStandard
    MsgBox nom
    ActiveSheet.PivotTables(pivot_table).PivotFields("Level 2/3").PivotItems(nom).Visible = False
    La MsgBox me renvoie 0,13333333... alors que mes PivotItems sont des mots! 0,133333 ne correspond même pas à une valeur de mon TCD.
    Peut-être avez vous de nouvelles idées avec cette nouvelle découverte ...

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut Une solution!
    Après une bonne pause de midi et quelques bidouilles de plus, j'ai trouvé la solution au problème, moi-même ...

    Il fallait bien utiliser SourceNameStandard. Lors de mes premiers essai, excel me renvoyait la mauvaise valeur, parce que je lui avais donné les mauvais paramètres lorsque je lui donnais les PivotItem : je lui demandais de chercher dans les valeurs alors qu'il fallait qu'il cherche dans les étiquettes de ligne (chose que vous n'auriez pas pu deviner avec les éléments que je vous avais fournis).

    CONCLUSION : Pour récupérer le nom qui décrit votre PivotItem, il faut utiliser SourceNameStandard

  4. #4
    Invité
    Invité(e)
    Par défaut
    bonjour,
    si tu as encore besoin d'une séance de psychanalyse, reviens quand tu veux, raconter ses problème aux autres permet quelque fois de les résoudre!


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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/02/2015, 17h54
  2. [XL-2010] TCD Propriété "Visible" de "PivotItem"
    Par Daniel.C dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/11/2012, 13h16
  3. utilisation propriété VISIBLE
    Par By-nôm dans le forum Access
    Réponses: 16
    Dernier message: 30/06/2006, 15h36
  4. Réponses: 2
    Dernier message: 06/06/2006, 13h09
  5. Propriété visible
    Par Mateache dans le forum Access
    Réponses: 20
    Dernier message: 07/03/2006, 19h10

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