Macro pour filtrer un tableau croisé dynamique à partir d'une cellule liste

Bonjour,

Je cherche depuis quelques jours à créer une macro sur un filtre pour un TCD. Je souhaite qu'à partir d'une cellule sous forme de liste et d'un bouton de validation, le tableau croisé dynamique puisse se mettre à jour. Je compte faire plusieurs lignes de filtres afin d'affiner les résultats.

En fouillant sur internet je n'ai pas forcément trouvé la solution que je voulais donc j'espérais pouvoir la trouver en postant mon problème.

Voici le tout premier code que j'ai testé pour revenir à la base du problème :

Sub Test()
'
' Test Macro
'

'
    Range("Tableau7[Type]").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "[Tableau2].[Filtre Type].[Filtre Type]").VisibleItemsList = Array( _
        "[Tableau2].[Filtre Type].&[Toiture terrasse]")
End Sub

Le but est de changer "Toiture terrasse" par ce qui est présent dans la cellule de liste "B6".

En vous remerciant d'avance.

Bonjour

Pourquoi ne pas tout simplement utiliser des segments ?

Si les segments sont les filtres des TCD : c'est ce que je fais pour l'instant mais je trouve ça moins intuitif qu'une liste déroulante sur le côté

image

RE

Il serait bien d'indiquer ta version Excel dans ton profil

Non les segments c'est cela

image

Si tu tiens à tes listes tu peux passer par PowerQuery (intégré à Excel) mais il faudrait déjà clarifier les combinatoires...

J'ai trouvé la solution finalement, je suis passé par des fonctions "if"

Sub Test()
'
' Test Macro
'
'
Dim B7 As String

B7 = Range("B7").Value

    If B7 = "Toiture terrasse" Then
    Range("Tableau7[Type]").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "[Tableau2].[Filtre Type].[Filtre Type]").VisibleItemsList = Array( _
        "[Tableau2].[Filtre Type].&[Toiture terrasse]")

    ElseIf B7 = "Ombrière" Then
    Range("Tableau7[Type]").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
        "[Tableau2].[Filtre Type].[Filtre Type]").VisibleItemsList = Array( _
        "[Tableau2].[Filtre Type].&[Ombrière]")

    End If

End Sub

RE

Mauvaise solution qui oblige à tester tous les cas et donc non évolutive...

Mais si es content de toi, c'est l'essentiel...

Rechercher des sujets similaires à "macro filtrer tableau croise dynamique partir liste"