Segment entre TCD de bases différentes

Bonjour à tous.

Actuellement dans l'élaboration d'une base de donnée je souhaite ajouter un onglet "indicateurs" comprenant divers graphiques d'analyse.

Pour filtrer les données sources de ces graphiques, j'extrait les données des bases de données en utilisant des TCD et j'utilise ensuite des segments.

J'ai déjà utilisé des segments par le passé mais seulement pour filtrer plusieurs TCD provenant d'une seule base de donnée.

Dans mon cas, je me retrouve avec deux TCD, provenant de deux bases de données différentes mais dont les champs filtrés sont identiques (format date). L'ajout d'un segment est possible sur un TCD mais lors de l'ajout de connexion de rapport à l'autre TCD, aucune connexion ne m'est proposée.

Ma question est : Est il possible de filtrer par un segment deux TCD dont les données proviennent de base de données différentes ?

(J'ai cherché des solutions sur le net sans pour autant trouver de réponse à cette question).

J'ajoute en PJ la base de donnée Excel sur laquelle je travaille si vous souhaitez y jeter un coup d’œil.

Le segment et les deux TCD que je souhaite "lier" se situent dans l'onglet "TCD OF conforme - non conforme".

En vous remerciant par avance des conseils et réponses que vous m'apporterez.

Cordialement,

Wallatom.

Bonjour,

Une proposition à étudier.

Cdlt.

Merci Jean Eric, c'est exactement ce que je recherchais.

Par contre, avez vous réalisé des manipulations particulières pour "réussir" la liaison ?

J'aimerais refaire l'opération par moi même de mon coté. A savoir que j'utilisais l'option "Connexions de rapport" se situant dans l'onglet options du segment sans réussir pour autant (le second TCD ne s'affichait pas dans la fenêtre de sélection).

Edit : Je viens de m'apercevoir que vous avez "synchronisé" les deux filtres des deux TCD. Est ce bien cela ?

Comment avez vous fait ?

Edit* : Je vois que cela est fait par code VBA (autant pour moi, c'est la fin de matinée et j'avais oublié cette option la ).

Juste pour confirmation sur le fonctionnement du code VBA : Vous vérifier si le filtre du premier TCD est modifié (par le segment) et si c'est le cas vous modifier en conséquence le filtre du second TCD ?

Merci encore une fois Jean-Eric.

PS : Je laisse le sujet en non résolu le temps que je termine mes deux/trois essais (dans la journée).

Re,

Voir module de feuille "TCD OF conforme - non conforme"

J'ai renommé les TCDs...

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim strPI As String
    If Target.Name = "TCD_2" Then
        strPI = Me.PivotTables("TCD_2").PivotFields("Date contr?le").CurrentPage
        Me.PivotTables("TCD_3").PivotFields("Date de contr?le").CurrentPage = strPI
    End If
End Sub

Je renvoie le classeur avec une petite modification.

Cdlt.

Re bonjour.

Je poste de nouveau un message pour signaler un nouveau problème avec le code fournis par Jean-Eric.

Le code est parfaitement fonctionnel dans le cas ou les filtres appliqués dans les TCD sont "uniques"' ( un seul critère sélectionné dans le filtre).

Par contre, si plusieurs critères sont choisis dans un seul filtre, le code s’arrête de fonctionner (sans message d'erreur).

La valeur alors stockée et appliquée au différents filtre est "(all)" ce qui correspond à aucun filtre appliqué.

Une fois que cette "erreur" a été commise, je ne trouve aucun moyen de refaire fonctionner normalement le code VBA (la valeur "(all)" reste indéfiniment même après avoir ré-ouvert Excel).

Mon analyse est que strPI est un "string" et ne supporte pas le filtre multicritère appliqué (ce n'est pas un texte "simple").

Edit : Si on désactive la sélection de plusieurs éléments sur tout les filtres des TCD le code VBA fonctionne.

Existe il un moyen de pouvoir synchroniser les filtres de plusieurs TCD lorsque l'on souhaite choisir plusieurs valeurs pour filtre ?

Merci de votre aide.

Bonjour,

j'ai répondu en toute logique avec les données communiquées.

Quel était l'intérêt de multiples sélections avec l'exemple ?

Maintenant, de multiples sélections dans un champ de page avec des dates en sus !...

Cdlt.

Il est vrai que je n'ai pas explicitement demandé la possibilité d'une sélection multicritères . Je n'ai pas pensé que le fait d'effectuer une sélection multicritère impliquerait une autre manière d'effectuer la synchronisation des différents filtres.

L'intérêt de multiples sélections est de pouvoir affiner (avec plus de possibilités qu'une sélection unique) l'affichage des graphiques / indicateurs produits à partir de ces TCD.

Update :

J'ai réussi à écrire une portion de code qui effectue la synchro de filtre lors de filtre multicritères.

Je le post ici (en brut ) si cela peut aider quelqu'un :

Sub filtersynchro()

Dim i As Integer
Dim ii As Integer
Dim k As Integer
Dim kk As Integer
Dim j As Integer
Dim JJ As Integer
Dim b As Boolean

 i = Feuil8.PivotTables("TCD_2").PivotFields("Années").PivotItems.Count  ' on compte le nombre de Pivoitems dans le filtre du 1er TCD.
 ii = Feuil8.PivotTables("TCD_3").PivotFields("Années").PivotItems.Count  ' on compte le nombre de Pivoitems dans le filtre du 2nd TCD.

 'On loop ici pour activer tout les Pivoitems du 2nd filtre.
 kk = 1
 For kk = 1 To ii - 2    'ici la limite est ii-2 car le filtre est sous un format date et les deux derniers pivoitems du filtre ne peuvent être comparés à ceux du 2nd filtre du à leur format (<01/02/1900 ou >01/01/2019 ) Par défaut la portion de code est :  For kk = 1 To ii 

 Feuil8.PivotTables("TCD_3").PivotFields("Années").PivotItems(kk).Visible = True
 Next kk

For k = 1 To i - 2

  b = False

  If Feuil8.PivotTables("TCD_2").PivotFields("Années").PivotItems(k).Visible = False Then 'Si un Pivoitems du 1er filtre est "non visible"

   j = Feuil8.PivotTables("TCD_2").PivotFields("Années").PivotItems(k).Value   'on récupère la value pour la stocker dans J.
   b = True                                                                     ' b passe en true
   End If

    kk = 1

    For kk = 1 To ii - 2

    JJ = Feuil8.PivotTables("TCD_3").PivotFields("Années").PivotItems(kk).Value 'on récupère la value du second filtre pour le pivoitems(kk)(2nd TCD) pour la stocker dans JJ.

    If j = JJ And b = True Then                                                     ' Si la value du pivoitems(k) (1er TCd) est égale à la value du pivoitems(kk) (2nd TCD) et que B est égale à true
    Feuil8.PivotTables("TCD_3").PivotFields("Années").PivotItems(kk).Visible = False ' on passe le pivoitems(kk) en non visible (false)
    End If

       Next kk   'on loop pour chaque pivoitems du filtre du 2nd TCD

Next k          'on loop pour chaque pivoitems du filte du 1er TCD

End Sub

bonjour

salut Jean-Eric

LA solution n'est pas VBA, mais Power BI Desktop gratuit

c'est un outil relativement nouveau sur lequel Microsoft travail à fond

PBI D a pour unique but la présentation de données : TCD et surtout graphiques interactifs avec des "segments" super géniaux. Bien meiux que ceux d'Excel.

regarde des démos sur Youtube

pas de VBA.

bonne journée à vous

Rechercher des sujets similaires à "segment entre tcd bases differentes"