XL 2021 Lier deux Segments (Segment1= Tableau Structuré,Segment2= TCD)

EstelleXL

XLDnaute Nouveau
Bonjour à toutes et à tous,
je cherche à lier mes deux segments de la feuille "PG" qui ont le même nom et qui proviennent pour l'un d'un TCD, pour l'autre d'un tableau structuré.
Pour info j'utilise le TCD uniquement pour récupérer des valeurs d'un deuxième tableau structuré "BDD", soit les valeurs qui sont en haut du tableau sur la feuille "PG".

J'aimerais que lorsqu'on choisit une valeur dans un Segment "SERIE_MACHINE", l'autre Segment "SERIE-MACHINE" choisisse la même valeur automatiquement.
(si cela fonctionne, je cacherai le deuxième Segment, mais il devrait permettre de trier les autres segments présents.)

j'étais passée par deux TCD à relier à un segment via Power Pivot, mais je n'y suis jamais arrivée, alors je continue à travailler sur ce fichier en l'état. En vrai si je pouvais me passer des TCD, je ne pense pas qu'ils aient tant l'utilité dans ce classeur. (à part les liens dynamiques au-dessus de la feuille "PG")
j'ajoute que la feuille "PG" à comme finalité l'impression.

Je vous remercie d'avance pour l'aide que vous pourriez m'apporter,
bien cordialement,
Estelle

PS j'ai fait un fichier test à partir de mon fichier de départ, du coup il est très volumineux alors je l'ai zippé (pas trouvé pourquoi il est si volumineux, macros ?)
 

Pièces jointes

  • TABLEAUX&SEGMENTS.zip
    412.9 KB · Affichages: 8
Solution
Bonsoir,



Pour cloturer ce fil merci à @chris dont nous avons suivis les conseils de ma part et d' @EstelleXL .

=> Suppression du powerpivot pour le segment Serie Machine et travailler sur TCD et ou tableau structuré.

En réorganisant mieux le fichier , on a pu faire tout ce que demander Estelle mais qui feraient l'objet d'autres fils de discussion.

La Question d'Estelle :
Affecter une valeur à un segment (serie Machine2) depuis une valeur sélectionnée dans un autre segment (serieMachine1) pour finalement filtrer un tableau structuré dont est issu serie Machine2 => Je vous déconseille en VBAce n’est pas de tout repos , suivant le nombre d'élements dans le segment on a le temps de boire le café,....

Toutefois je...

Zon

XLDnaute Impliqué
Bonjour le forum , Estelle

Tu as fait 3 demandes sur notre forum, il y a des contributeurs qui lisent tes fils mais qui comme moi ne doivent pas comprendre ce que tu cherches à faire. Tu es à fond dans ton fichier mais pas nous , cela ressemble à une facture/devis mais je ne sais pas quoi faire avec tes données et la représentation que tu veux en faire.

Vu les efforts que tu as dus faire pour nous demander de l'aide, je veux bien t'aider, toutefois je suis une quiche en TCD et autres segments, mais en VBA on peut presque tout faire sauf le café ...

Je te permets de me contacter en privé pour qu'on regarde ensemble ce qu'on peut faire.


A+++
 

Zon

XLDnaute Impliqué
Bonsoir,



Pour cloturer ce fil merci à @chris dont nous avons suivis les conseils de ma part et d' @EstelleXL .

=> Suppression du powerpivot pour le segment Serie Machine et travailler sur TCD et ou tableau structuré.

En réorganisant mieux le fichier , on a pu faire tout ce que demander Estelle mais qui feraient l'objet d'autres fils de discussion.

La Question d'Estelle :
Affecter une valeur à un segment (serie Machine2) depuis une valeur sélectionnée dans un autre segment (serieMachine1) pour finalement filtrer un tableau structuré dont est issu serie Machine2 => Je vous déconseille en VBAce n’est pas de tout repos , suivant le nombre d'élements dans le segment on a le temps de boire le café,....

Toutefois je vous mets la procédure à appeler Majseg "Segment_ " & "Nomdusegment", "PEUGEOT"

VB:
Sub MajSeg(SegModif$, ByVal Ch$) 'procedure de Chris adaptée
Dim Cas As SlicerItem
Application.Calculation = xlCalculationManual
    With ThisWorkbook.SlicerCaches(SegModif)
 
        For Each Cas In .SlicerItems
           Cas.Selected = Cas.Value = Ch
        Next Cas
    End With
  
 Application.Calculation = xlCalculationAutomatic

End Sub

Par contre,
Récupérer la valeur d’un segment via l’évenementielle Worksheet_PivotTableUpdate est plus judicieux ; Un exemple de procédure
Unique c’est pour recuperer plusieurs valeurs à True .

En VBA , RecupValSeg "Segment_" & "NOMDUSEGMENT" ,true

VB:
Function RecupValSeg(NomSegment$, Unique As Boolean)
   Dim Cas As SlicerItem
   Dim T(), I&
 
    With ThisWorkbook.SlicerCaches(NomSegment)
      For Each Cas In .SlicerItems
         If Cas.Selected Then
            ReDim Preserve T(I)
            T(I) = Cas.Value
            If Unique = True Then Exit For
            I = I + 1
         End If
      Next Cas
    End With
   RecupValSeg = T
End Function


Pour filtrer un tableau structuré



Si on veut filtrer le Tableau1 de la feuille « Donnes » sur la colonne 3 avec comme critère les valeurs sélectionnée d’un segment TOTO

On peut l’appeler ainsi FiltreTabStructure Sheets("Donnes"), "Tableau1", RecupValSeg("Segment_" & " TOTO", True), 3

VB:
Sub FiltreTabStructure(F As Worksheet, NomTab$, Critere1, _
                        Optional Col& = 1, Optional OP& = 7, Optional  Critere2)
   'Filtre un tableau struturé sur la colonne 1 par défaut
   'Xlor=2,xlTop10Items=3 xlFilterValues=7...
      With F.ListObjects(NomTab)
        .AutoFilter.ShowAllData ' en cas de filtre déjà activé
         If IsMissing(Critere2) Then
            .Range.AutoFilter Col, Critere1, OP
         Else
            .Range.AutoFilter Col, Critere1, OP, Critere2
         End If
      End With
 End Sub


A+++
 

EstelleXL

XLDnaute Nouveau
Bonjour le forum, Zon,

je cloture donc le fil, un ENORME MERCI à @Zon ainsi que @chris pour leurs précieux conseils à tous les deux,
mon fichier est devenu plus léger et plus fonctionnel grâce à la suppression du modèle de données (power pivot)
et très fonctionnel grâce à votre aide, c'est un plaisir de voir que le partage et l'entraide existent (encore?), ça fait chaud au coeur, et aux fichier allégé :)
Merci beaucoup, et merci Zon pour ton précieux récap, que je n'aurais pas pu faire !
Estelle
 

Discussions similaires

Réponses
3
Affichages
505

Statistiques des forums

Discussions
314 701
Messages
2 112 029
Membres
111 407
dernier inscrit
Leopold