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 :

Un slicer qui n'arrive pas à Gouverner


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Un slicer qui n'arrive pas à Gouverner
    Bonjour,

    Alors que je débute avec les macros et slicers, j'apprécie grandement l'aide apportée sur ce forum donc dèjà merci.

    Je cherche aussi à avoir un slicer pour les gouverner tous (malgré des sources différentes). J'ai adapté la macro ci-dessus suggérée à mon fichier ci-joint (qui est un fichier de test avec deux TCD ayant les meme filtres).

    Voici ma macro que j'ai positionné dans le Workbook:

    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
    Sub slicer_copie()
     For Each Sh In ThisWorkbook.Sheets
            For Each TCD In Sh.PivotTables
                With Sh.PivotTables(TCD.Name)
                .ManualUpdate = True
                End With
            Next
        Next
     
            Application.EnableEvents = False
     
            'ligne suivante à répéter pour chaque autre segment en adaptant le nom
            ActiveWorkbook.SlicerCaches("Slicer_DOSSIER1").ClearManualFilter
            For Each Iitem In ActiveWorkbook.SlicerCaches("Slicer_DOSSIER").SlicerItems
            'ligne suivante à répéter pour chaque autre segment en adaptant le nom
            ActiveWorkbook.SlicerCaches("Slicer_DOSSIER1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
     
            Next
    For Each Sh In ThisWorkbook.Sheets
            For Each TCD In Sh.PivotTables
                With Sh.PivotTables(TCD.Name)
                .ManualUpdate = False
                End With
            Next
        Next
            Application.EnableEvents = True
    End Sub
    Quand je modifie les filter du Slicer_DOSSIER, je n'ai pas de message d'erreur mais cela ne déclenche rien au niveau de Slicer_Dossier1... en somme il ne gouverne pas!

    Voilà je vous remercie encore pour votre aide.

    Pièce jointe 220642

    Billy

  2. #2
    Expert éminent sénior

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

    Sub slicer_copie() n'est pas un événement donc ne se déclenche pas tout seul

    Le filtre d'un slicer agit sur le TCD et déclenche un événementWorkbook_SheetPivotTableUpdate

    C'est là que doit être le code.
    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
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci
    Merci beaucoup ca fonctionne! tout ce temps à chercher...

  4. #4
    Candidat au Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut la faute aux éléments sans données
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Pour les valeurs sélectionnées, à part une boucle qui vérifie la propriété Selected...

    SlicerCache.VisibleSlicerItems donne également la liste du contenu visible du segment mais pas la notion de de sélection.

    Une dernière piste (pas testé) les items ont une propriété HasData : les noms qui plantent correspondent peut-être à des éléments sans données donc peut-être vérifier au préalable avec cette proprité avant de "sélecter" l'entrée...
    Bon j'ai avancé dans ma table et je rencontre le meme problème que halaster08. Et effectivement comme tu l'avais évoqué cette erreur se produit se produit quand il y a au moins un element sans donnée (j'ai fait divers tests qui le confirment).

    Existerait-il une solution pour palier à ce problème et en gardant les valeurs nulles?

  5. #5
    Expert éminent sénior

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

    As-tu essayé de gérer la propriété HasData ?
    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
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 660
    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 660
    Points : 5 783
    Points
    5 783
    Par défaut
    Bonjour,

    Personelement je n'avais pas réussi a utiliser HasData, j'avais alors refait entièrement le fichier pour ne plus avoir ce problème.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  7. #7
    Expert éminent sénior

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

    Hasdata correspond aux éléments sans données dans le segment pilotant, pas aux éléments absents d'un segment piloté. Cela peut poser problème quand le segment pilotant n'a pas de données pour une valeur mais que les segments pilotés en ont.

    Si des valeurs du segment pilotant n'existent pas dans un segment piloté, il y aura une erreur qu'il faut gérer.

    On doit tester si la ou les valeurs du segment pilotant existent ou non dans le segment piloté et
    • soit on affiche un message,
    • soit on ne cherche pas à agir sur les valeurs inexistantes mais dans ce cas on obtient l'annulation des sélections dans les segments où elles manquent si seule cette valeur est sélectionné dans le segment pilotant.


    Bref vouloir lier des TCD de sources différentes à travers des segments devient vite usine à gaz si les données des segments diffèrent.
    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é...

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/11/2012, 09h27
  2. Problème de courrier qui n'arrive pas
    Par supernano dans le forum Hébergement
    Réponses: 0
    Dernier message: 31/08/2009, 17h13
  3. [Mail] E-mail qui n'arrive pas à destination
    Par floboss dans le forum Langage
    Réponses: 6
    Dernier message: 04/05/2009, 17h32
  4. [WLM] messages qui n'arrivent pas
    Par sami_b dans le forum Messagerie instantanée
    Réponses: 5
    Dernier message: 23/05/2008, 14h28
  5. [Orange] Probleme de pieces jointes qui n'arrivent pas
    Par hahlex dans le forum Internet
    Réponses: 6
    Dernier message: 30/06/2007, 18h32

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