Lier deux segments de tableau croisé qui n'ont pas la même source

Accueil – Le CFO masqué Forums VBA Lier deux segments de tableau croisé qui n'ont pas la même source

  • Ce sujet contient 12 réponses, 3 participants et a été mis à jour pour la dernière fois par Francis Paquet, le il y a 7 années et 10 mois.
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Articles
  • #29339
    Lodossgp
    Participant

    Bonjour,
    J’ai un problème que je n’arrive pas à résoudre et qui je pense pourrait intéressé d’autres personne si vous arriviez à solutionner le problème. J’ai regardé sur votre site du “CFO masqué”, mais les articles sur les slicers que vous avez abordés ne répondent pas à mon questionnement.

    Voilà dans un fichier excel (2010) j’ai plusieurs onglets :
    1 onglet Synthese (qui regroupe des graphiques venant de tcd et TcdPoste) et le slicer Poles.
    1 onglet Tcd, 1 onglet Data (qui contiennent des informations Carrière),
    1 onglet TcdPoste (avec un slicer Poles_Postes) et 1 onglet Data postes,

    Afin d’éviter d’avoir 2 slicers Poles sur l’onglet Synthèse, je souhaiterai lier le slicer Poles avec le slicer Poles_Postes, ce dernier étant esclave et le slicer Poles maitre.

    Je ne sais comment le faire, j’ai tenté d’adapter un exemple en VBA trouvé sur le net mais cela ne fonctionne pas.
    Merci de votre aide

    Attachments:
    You must be logged in to view attached files.
    #29345
    Sophie Marchand
    Participant

    Bonjour,

    Dans Excel, vous ne pouvez pas utiliser un seul slicer sur deux sources de données différentes. Vous avez donc les options suivantes:

    1 – Tenter de fusionner vos deux sources de données en une seule source, directement dans Excel (étant donné le volume peu élevé), mais ça peut être compliqué étant donné la nature des données…

    2 – Utiliser Power Query pour fusionner les deux bases de données (vous pouvez le télécharger gratuitement pour votre Excel 2010)

    3 – Utiliser Power Pivot. C’est la meilleure façon. Avec Power Pivot, vous auriez 3 tables de données, i.e. vos deux tables actuelles et une table qui comprendrait seulement les dimensions “poles”. Vous pourriez lier les 3 tables entre elles et appliquer le slicer sur les 3 tables liées (ce que l’on appelle un modèle de données). Vous pouvez télécharger Power Pivot juste ici: https://www.microsoft.com/en-ca/download/details.aspx?id=102.

    Pour savoir comment créer des relations entre des tables, voici un article de référence: https://www.lecfomasque.com/excel-comprendre-en-quoi-consiste-une-relation-entre-deux-tables/.

    Au plaisir,

    Sophie

    #29352
    Francis Paquet
    Participant

    Bonjour,

    IL est en effet possible de lier deux slicers avec une maro VBA. Cette solution, même si elle fonctionne, est loin d’être la plus stable et la plus conviviale. J’ai corrigé votre code VBA pour que ça focntionne. Toutefois, les pistes de solutions données par Sophie sont de loin les meilleures…

    Au plaisir,

    Francis

    Attachments:
    You must be logged in to view attached files.
    #29419
    Lodossgp
    Participant

    Bonjour,
    merci pour vos réponses rapide, je travaille dans une administration, et nous ne pouvons pas télécharger librement des logiciels, il faut passer par le service informatique. De plus mes tableaux de bord sont diffusés dans toute la direction. Donc si je produis un fichier excel utilisant Power Pivot il faudrait que toutes les personnes aient également Power Pivot sur leur poste non ?

    Merci Francis Paquet pour la correction de mon code je vais étudier cela.

    Bonne journée

    #29443
    Lodossgp
    Participant

    Je viens de regarder le code que vous m’avez corriger, il y a du mieux mais mon problème n’est pas résolu entièrement.
    Sur le slicer maitre “Poles” de l’onglet “Synthese”, la sélection ne fonctionne plus. On a beau cliquer sur un des pôles on a toujours tous les pôles qui restent sélectionnés. Par contre le slicer esclave “Poles Postes” a l’air de bien être esclave car on retrouve bien sélectionnés tous les pôles de celui du maitre.
    Il faut donc résoudre le pb de pouvoir sélectionner qu’un seul pôle dans le slicer maitre.
    Merci de votre aide
    J’espère que je suis clair ….

    #29450
    Francis Paquet
    Participant

    Mettez en commentaire la commande ActiveWorkbook.SlicerCaches(“Segment_Poles”).ClearManualFilter

    Voilà!

    #29541
    Lodossgp
    Participant

    Bonjour,
    J’ai fait la modification indiquée, il y a du mieux mais la sélection d’un pôle n’est pas stable car l’on revient toujours à l’ensemble des pôles après en avoir sélectionné un.

    Je vous joins le fichier avec la modification apportée.

    Attachments:
    You must be logged in to view attached files.
    #29544
    Francis Paquet
    Participant

    Bonjour,

    J’ai ajouté un SI qui semble solutionner le tout.

    Et comme vous le voyez, manipulez des Slicers avec du VBA, c’est très complexe…

    Bonne journée,

    Francis

    Attachments:
    You must be logged in to view attached files.
    #29546
    Lodossgp
    Participant

    Oui là c’est impeccable, et répond exactement à ce que je voulais.
    Oui le VBA tout seul c’est pas facile et avec les slicers c’est encore plus difficile.
    Je vais m’appuyer sur votre code pour ajouter la sélections des directions en plus des Pôles.
    Je reviendrai peut-être (surement) en ca de difficultés.
    En tout cas un grand merci pour votre aide et expertise.
    Bonne journée

    #29611
    Lodossgp
    Participant

    Bonjour,
    J’ai rajouté dans le code un deuxième slicer “Directions”, cela fonctionne mais l’exécution devient du coup plus longue et je pense que l’on pourrait l’optimiser en ajoutant un test sur le slicer où l’on clique, (soit directions soit pôles) et qui est donc sélectionné. Cela éviterait de passer systématiquement sur les 2 slicers et ferait gagner du temps d’exécution.
    J’ai essayé de modifier le code dans ce sens, mais mon niveau de VBA est vraiment trop bas.
    Pensez-vous que cette optimisation soit possible.
    Merci encore une fois de votre aide.

    Attachments:
    You must be logged in to view attached files.
    #29633
    Francis Paquet
    Participant

    Bonjour,

    Vous avez là une situation complexe: les deux segments sont inter-reliés, quand vous en changez un, cela change l’autre. Dans un tel cas, la macro s’exécute donc de nombreuses fois. Cela étant dit, l’exécution se fait, selon moi, dans un délai raisonnable.

    Si vous voulez améliorer la performance, vous pourriez mettre le code VBA dans un module et le lier à votre tableau de bord avec un bouton. Donc, quand l’usager a terminé la sélection des segments, il exécute la macro et cela met à jour les 2 autres segments. Cela serait plus rapide, mais demande une intervention de l’usager. Il n’y a pas de remède miracle!

    Francis

    #29636
    Lodossgp
    Participant

    Bonjour,
    Je ne vous ai pas encore tout dit car il y a des données sur la paie que je vais intégrer aux indicateurs. Et là cela va ralentir l’exécution, c’est pour cela que je voulais savoir comment tester le segment où l’on a cliqué pour éviter des boucles inutiles.
    Gérald

    #29720
    Francis Paquet
    Participant

    Bonjour,

    Comme je vous le disais, le mieux alors serait de créer un bouton et d’appeler la macro seulement une fois que toutes les sélections des segments sont complétées. L’exécution sera alors très rapide…

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.