Mise à jour d'un TCD à partir d'un autre TCD

Bonjour,

J'utilise régulièrement les segments bien pratique pour la mise à jour de plusieurs TCD liés à une base.

Toutefois dans ce cas de figure, j'ai 2 bases différentes donc il faut crée des segments pour chaque base. Je voudrais mettre à jour le filtre de mon second TCD à partir du segment choisi dans le 1er TCD.

Auriez une solution à m'apporter ?

Merci pour votre aide.

Bonjour,

Une proposition à étudier.

Cdlt.

Bonjour,

Merci pour votre réponse.

La méthode fonctionne parfaitement. Par contre, je ne comprends pas bien le code et vous est il

possible afin que je puisse m'améliorer en VBA de me mettre quelques commentaires sous les lignes de code.

Encore un grand merci pour votre aide.

Cordialement.

Marc

Bonjour,

Quelques commentaires pour la compréhension.

A te relire.

Cdlt.

Option Explicit

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
'Déclaration des variables
Dim wb As Workbook
Dim scFirst As SlicerCache, scSecond As SlicerCache
Dim siFirst As SlicerItem, siSecond As SlicerItem
    On Error GoTo errHandler
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    'Initialisation des variables
    Set wb = ThisWorkbook
    Set scFirst = wb.SlicerCaches("Segment_Entité")     'Segment TCD_1
    Set scSecond = wb.SlicerCaches("Segment_Entité1")   'Segment TCD_2
    'Efface le filtre manuel pour le cache du segment
    scSecond.ClearManualFilter
    'Boucle sur chaque élément visible du segment
    For Each siSecond In scSecond.VisibleSlicerItems
        Set siSecond = scSecond.SlicerItems(siSecond.Name)
        Set siFirst = Nothing
        On Error Resume Next
        Set siFirst = scFirst.SlicerItems(siSecond.Name)
        On Error GoTo errHandler
        'Si élément Segment TCD_1 existe
        If Not siFirst Is Nothing Then
            'Si l'élément est sélectionné
            If siFirst.Selected = True Then
                siSecond.Selected = True
            'Si l'élément n'est pas sélectionné
            ElseIf siFirst.Selected = False Then
                siSecond.Selected = False
            End If
        Else
            'Si l'élément n'existe pas
            siSecond.Selected = False
        End If
    'Prochain élément visible du segment
    Next siSecond
exitHandler:
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Exit Sub
errHandler:
    MsgBox "Could not update pivot table"
    Resume exitHandler
End Sub

Bonjour,

Merci pour ton retour et tes explications : je vais étudier cela à tête reposée

Cordialement.

Marc

Rechercher des sujets similaires à "mise jour tcd partir"