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 :

Lier des segments qui ne partagent pas la même source [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Par défaut Lier des segments qui ne partagent pas la même source
    Bonjour,

    J'utilise pour un dashboard plusieurs fichiers sources différents, qui me servent à générer des tableaux et graphiques croisés dynamiques.
    Afin de 'contrôler' ces graphiques et tableaux, j'utilise des segments (slicers dans ma version d'excel).

    Les fichiers sources sont différents, mais tous ont cependant des colonnes identiques, par exemple une colonne qui indique la zone concernée par la commande.
    Cette variable zone m'est utile dans de nombreux graphiques: cependant, étant donné que les sources sont différents, je suis obligé de créer un segment 'Zone' pour chacune des sources. Je me retrouve donc avec 6 segments 'Zone' dans mon fichier.

    Je voudrais pouvoir les lier les uns aux autres: lorsqu'on selectionnerait la zone 'Europe' dans le premier, les autres segments auraient alors 'Europe' selectionné automatiquement.
    Après plusieurs recherches, il me semble qu'Excel ne propose pas cette possibilité.
    Peut-être est-ce possible via une macro, mais je n'y connais pas grand chose...

    Merci de votre aide!
    Bien cordialement

  2. #2
    Expert éminent

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

    Oui c'est faisable par VBA ou également par POWERPIVOT en mettant toutes les sources en relation avec la table des zones.

    A priori ceci devrait marcher

    Je considère que l'un des TCD et son segment sont prioritaires et pilotent les autres.
    Chaque TCD a un segment zone (que tu peux placer dans un onglet masqué)
    Bien repérer les noms de ces segments, ed l'onglet et des TCD et adapter le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
        If Sh.Name = "NomfeuilleTCD" And Target.Name = "NomTCDPilote" Then
            Application.EnableEvents = False
            'ligne suivante à répéter pour chaque autre segment en adaptant le nom
            ActiveWorkbook.SlicerCaches("Segment_Zone1").ClearManualFilter
            For Each Iitem In ActiveWorkbook.SlicerCaches("Segment_Zone").SlicerItems
            'ligne suivante à répéter pour chaque autre segment en adaptant le nom
                 ActiveWorkbook.SlicerCaches("Segment_Zone1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
            Next
     
            Application.EnableEvents = True
        End If
    End Sub
    On peut optimiser le code si tu n'as pas d'autres segments dans ton classeur.
    On peut aussi gérer des champs de page pour les autres TCD et éviter de créer et cacher des segments mais déjà cela te donne une solution de départ.

  3. #3
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Par défaut
    Bonjour Chris,

    Merci pour cette première réponse.
    J'essaye ça et je te dis ce que ça donne!

    Bien cordialement,

    Edit: Je viens d'essayer, malheureusement je n'ai pas réussi à lancer la macro...
    Lorsque je vais dans Visual Basic, je copie la macro que tu m'as donné et je fais les modifications nécessaires. Lorsque je tente de la lancer, ça m'ouvre la boîte de dialogue 'Macros' comme si je devais choisir la macro à lancer, mais il n'y en a aucune qui s'affiche...
    J'ai l'impression que je ne peux pas l'enregistrer en fait...

    Merci!

  4. #4
    Expert éminent

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

    C'est une macro évènementielle attachée au niveau Workbook

    Il faut la copier dans le module Thisworkbook

    Tu ne peux la lancer : elle se déclenche automatiquement lors d'un changement dans le segment pilote (dont le nom est sans doute Segment_Zone).

  5. #5
    Membre averti
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Emirats Arabes

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Par défaut
    Bonjour Chris,

    Alors il semble que ça fonctionne lorsque je la copie dans 'This workbook', cependant je pense avoir fait une erreur quelque part dans la modification du code que tu m'as proposé.

    Lorsque je fais un changement sur un slicer, ça me donne ça (voir PJ).

    Désolé mais comme je l'ai indiqué auparavant, je ne connais rien aux macros...
    Merci de ton aide!

    Bien cordialement
    Images attachées Images attachées  

  6. #6
    Expert éminent

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

    Il y avait une seule ligne à chaque fois à recopier :
    donc un seul For Next se référant au slicer qui pilote les autres (je conseille de les masquer en les mettant dans un onglet à part).

    Je pense que les noms de tes slicers ne sont pas les bons : il devrait y avoir le mot segment ou slicer dans le nom.
    Pour vérifier les noms :
    • enlève la macro ou mets là en commentaire
    • mets l'enregistreur en marche
    • clique tour à tour sur un filtre sur chacun de tes segments en repérant bien dans quel ordre tu le fais.
    • Arrête l'enregistreur : tu auras un code VBA avec les noms des slicers à reporter dans la macro que je t'ai fournie.


    Dans ta version de cette macro en plus de la correction des noms

    • Enlève la ligne avec le 1er For Each (avant celui en bleu)
    • Enlève la ligne avec le For Each en bleu
    • Enleve les deux lignes Next afin de ne laisser que la dernière

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

Discussions similaires

  1. [OL-2013] Partager des calendriers qui ne sont pas Exchange
    Par Yepazix dans le forum Outlook
    Réponses: 0
    Dernier message: 15/02/2014, 01h09
  2. [XL-2010] Lier des segments qui ne partagent pas la même source
    Par sanae430 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 03/08/2013, 09h07
  3. Copier des données qui ne sont pas au même endroit
    Par nancy38 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/02/2013, 10h23
  4. comparer des variables qui n'ont pas le même attribut
    Par stagolee dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/02/2008, 11h14
  5. Réponses: 3
    Dernier message: 21/11/2006, 18h26

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