Filtre Nom TCD

Bonjour,

Je me permet de revenir encore une fois vers vous pour vous demander de l'aide. Et pourtant je suis aller voir sur de nombreux forum avant de faire ce post!

Voilà, je voudrais que ma macro actualise mes TCD en fonction des items retenu dans une plage de cellule. Cette plage de cellule est renseigné par mon formulaire "Paramètre. L'idée était qu'il m'actualise le TCD en fonction de ses items.

Seulement en fonction des option retenu soit il m'affiche qu'un seule items soit il m'affiche rien. !

D'avance Merci.

Liens vers mon fichier:

La première macro: (J'ai un problème au If! Je n'ai pas très bien compris la sélection dans un tableau)

Sub Macro3()
' Mise a Jour TCD
Dim wsd As Worksheet, _
    wss As Worksheet, _
    strPT As String, strPF As String, _
    pi As PivotItem
Dim item As String

    Application.ScreenUpdating = False

    Set wsd = Worksheets("04 - Synthèse Agence Echu")
    Set wss = Worksheets("01 - Menu")
    strPT = "Tableau croisé dynamique2"
    strPF = "Libellé Pdv"

    With wsd.PivotTables(strPT).PivotFields(strPF)
        .ClearAllFilters
        .AutoSort xlAscending, strPF
    End With

    With wss          

          For Each pi In wsd.PivotTables(strPT).PivotFields(strPF).PivotItems
            If .Range("tblAgences[Agences]").Find(what:=pi, _
                LookIn:=xlValues, lookat:=xlWhole).Row = pi.Name Then 'si il trouve ma valeur qui est égale au champ du TCD,
'il regarde dans la table et trouve la valeur qui doit être strictement égale. Si elle est égale elle sera visible!
              pi.Visible = True
        Else
                pi.Visible = False 'sinon elle est masqué!
            End If
        Next pi

        wsd.PivotTables(strPT).RefreshTable

    End With

    wsd.Activate
    [B1].Select

    Set wsd = Nothing: Set wss = Nothing

End Sub

La seconde macro: (La seconde me fait le filtre sur qu'une seule valeur.)

Sub Macro3()
' Mise a Jour TCD
Dim wsd As Worksheet, _
    wss As Worksheet, _
    strPT As String, strPF As String, _
    pi As PivotItem
Dim item As String
Dim i As Single

    Application.ScreenUpdating = False

    Set wsd = Worksheets("04 - Synthèse Agence Echu")
    Set wss = Worksheets("01 - Menu")
    strPT = "Tableau croisé dynamique2"
    strPF = "Libellé Pdv"

    With wsd.PivotTables(strPT).PivotFields(strPF)
        .ClearAllFilters
        .AutoSort xlAscending, strPF
    End With

    With wss

   For i = 4 To 10
    item = Cells(i + 1, 14)
      For Each pi In wsd.PivotTables(strPT).PivotFields(strPF).PivotItems
            On Error Resume Next
            If pi.Name = item Then
                pi.Visible = True
            Else
                pi.Visible = False
            End If
        Next pi
    Next i            

        wsd.PivotTables(strPT).RefreshTable

    End With

    wsd.Activate
    [B1].Select

    Set wsd = Nothing: Set wss = Nothing

End Sub

Bonjour,

Une solution sans VBA avec l'utilisation d'un segment, mais qui implique Excel 2010+.

Cependant à l'ouverture du fichier on supprime les filtres existants de TCD.

18filtre-tcd-nom-v1.rar (171.35 Ko)
Private Sub Workbook_Open()
    ActiveWorkbook.SlicerCaches("Segment_Libellé_Pdv").ClearManualFilter
End Sub

Bonjour,

Une solution sans VBA avec l'utilisation d'un segment, mais qui implique Excel 2010+.

Cependant à l'ouverture du fichier on supprime les filtres existants de TCD.

Effectivement c'est très pratique! Cela me convient parfaitement. Mais si j'ai plusieurs TCD, est ce que je peux les actualiser avec un seul segment?

Car mon idée était de sélectionner ses points de ventes de manière à actualiser les autres TCD.

Merci d'avance! !

Bonjour,

Si tes TCDs sont issus d'une même source de données, la réponse est oui.

Cdlt.

J'ai résolu mon problème via les segments, et avec un formulaire pour filtrer les segments!

Merci de ton aide! !

Rechercher des sujets similaires à "filtre nom tcd"