Filtrer un TCD sur résultat Recherchev

Bonjour,

Je souhaiterais faire un filtre sur un TCD à partir du résultat d'une recherchev.

Plus en détail :

Dans l'onglet Q_MARQUE du fichier joint, quand je choisis un numéro dans la liste déroulante de la cellule D2, je souhaiterais que le résultat de la cellule D5 filtre mon TCD_Marques sur ce code "SOCAGE".

Je galère sur ce code depuis deux jours, j'ai essayé tous les codes qui ressemblent sur le forum en vain.

Merci d'avance pour votre aide

20outil-parc-dat-v1.zip (769.03 Ko)

Bonjour,

Essaie :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$D$2" Then Exit Sub
    Dim Sh As Worksheet, Pt As PivotTable
    For Each Sh In Worksheets
        For Each Pt In Sh.PivotTables
            With Pt.PivotFields("SOCAGE")
                .ClearAllFilters
                .CurrentPage = [Q_MARQUE!D5].Value
            End With
        Next Pt
    Next Sh
End Sub

Daniel

Merci

Super, c'est parfait !

Merci beaucoup pour ton aide.

Par contre j'ai un problème avec ce code, qui fonctionne très bien sur le fichier en exemple, mais si j'ajoute un autre TCD sur un autre onglet la macro plante sur

 .CurrentPage = [Q_MARQUE!D5].Value

Est-il possible de changer cette ligne ?

Merci d'avance

Je ne vois pourquoi ça ne fonctionnerait pas. Peux-tu joindre un fichier exemple ?

Daniel

Voici avec un onglet avec un autre TCD (même source)

Remplace la macro de la feuille Q_MARQUE:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$D$2" Then Exit Sub
    Dim Sh As Worksheet, Pt As PivotTable
    For Each Sh In Worksheets
        For Each Pt In Sh.PivotTables
            With Pt.PivotFields("SOCAGE")
                .Orientation = xlPageField
                .Position = 1
                .ClearAllFilters
                .CurrentPage = [Q_MARQUE!D5].Value
            End With
        Next Pt
    Next Sh
End Sub

Daniel

Désolé, cela ne fonctionne toujours, cela modifié également l'autre TCD avec les segments/chronologie. Du coup la macro fonctionne bien mais plante l'autre onglet avec TCD.

Essaie alors :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$D$2" Then Exit Sub
    Dim Sh As Worksheet, Pt As PivotTable
    For Each Sh In Worksheets
        For Each Pt In Sh.PivotTables
            With Pt.PivotFields("SOCAGE")
              If Sh.Name = "BUDGET_RENOUV_TRR" Then
                .Orientation = xlPageField
                .Position = 1
              End If
                .ClearAllFilters
                .CurrentPage = [Q_MARQUE!D5].Value
            End With
        Next Pt
    Next Sh
End Sub

Daniel

Merci encore pour le temps passé c'est super sympa.

Ca ne marche malheureusement toujours pas.

Lorsque je modifie la cellule D2 j'ai ce message : soit j'annule et il ne se passe rien, soit je fais OK et il modifie l'autre tableau sur l'onglet BUDGET_RENOU... que je ne souhaite pas modifier.

capture

Bonjour,

il modifie l'autre tableau sur l'onglet BUDGET_RENOU... que je ne souhaite pas modifier.

L'autre tableau ? La macro initiale, celle que j'ai modifiée, appliquait le filtre à TOUS les TCD, sur TOUTES les feuilles. Quels sont les tableaux qu'il ne faut pas modifier ? Enfin, je n'ai pas l'erreur que tu indiques :

capture d ecran 2023 08 09 092607

Mets en pièce jointe le classeur qui provoque cette erreur.

Daniel

Le TCD que je veux mettre à jour c'est TCD_Marques, malheureusement l'autre TCD sur l'onglet BUDGET_RENOUV_TRR change également lorsque je modifie la cellule D2, celui-là n'a rien à voir (d'autant qu'il est filtré sur NBRMOI et que la macro change ce filtre en SOCAGE également).

Donc seul le GCD de la feuille Q_MARQUES est actualisé avec D2.

Daniel

C'est absolument parfait ! Merci.

Petite question, c'est quoi les trois petites lignes de commentaires que tu as laissé ?

Tu peux les supprimer. Je me suis servi de l'enregistreur macro pour trouver la syntaxe.

Daniel

Rechercher des sujets similaires à "filtrer tcd resultat recherchev"