Filtre TCD en fonction d'une Cellule

WTF

XLDnaute Impliqué
Bonjour à tous,
J'ai créé un TCD à partir de Power Pivot.
Mon TCD est sur l'onglet "TCD" de mon fichier et s'appelle "TCD_Data"

Je souhaiterais que le filtre qui est sur la catégorie "code_soc" s'actualise automatiquement en fonction de ma cellule "SOCIETE" (ou : 'Feuille de saisie'!C28).

J'ai trouvé sur le site extendoffice.com un code que j'ai essayé d'adapter de la façon suivante :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("SOCIETE")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("TCD").PivotTables("TCD_Data")
    Set xPFile = xPTable.PivotFields("code_soc")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True

Mais cela ne fonctionne pas.
Est ce que vous sauriez m'aider ? Un fichier d'exemple en PJ
Merci à tous
 

Pièces jointes

  • Exemple TCD.xlsx
    16.5 KB · Affichages: 11

Amilo

XLDnaute Accro
Bonsoir WTF, Chris, le forum,

Effectivement, comme suggéré par Chris, il serait plus simple avec un segment,
Sinon, malgré mes faibles connaissances en VBA, je me suis lancé afin d'adapter le code au fichier mais sans succès.

Cela fonctionne lorsque la cellule se trouve dans la même feuille que le TCD (ici en H6)
Je n'arrive pas à faire référence à la cellule de la feuille "Feuille de saisie"
J'ai essayé avec : Sheets("Feuille de saisie").Range("B6")
Peut-être qu'il faut utiliser un autre code pour cette ligne ?

Merci d'avance
 

Pièces jointes

  • Exemple TCD.xlsm
    24.9 KB · Affichages: 38

Lolote83

XLDnaute Barbatruc
Salut à tous,
Une solution mais celle de Chris reste à mon avis la plus appropriée
Mettre ce code dans la partie Worksheet_Change de l'onglet Feuille de Saisie
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("B6")) Is Nothing Then Exit Sub
    With Sheets("TCD")
        .[H6] = Target.Value
    End With
End Sub
@+ Lolote83
 

Amilo

XLDnaute Accro
Bonjour Lolote83, le forum,

Merci pour cette proposition qui fonctionne en parallèle avec le code initial,
J'ai compris le raisonnement et on n'aurait plus besoin de la liste de validation en cellule H6 de la feuille TCD,

Bonne journée
 

Discussions similaires

Réponses
12
Affichages
552

Statistiques des forums

Discussions
312 158
Messages
2 085 833
Membres
102 997
dernier inscrit
sedpo