Note: The other languages of the website are Google-translated. Back to English

Comment lier le filtre de tableau croisé dynamique à une certaine cellule dans Excel?

Si vous souhaitez lier un filtre de tableau croisé dynamique à une certaine cellule et rendre le tableau croisé dynamique filtré en fonction de la valeur de la cellule, la méthode de cet article peut vous aider.

Lier le filtre de tableau croisé dynamique à une certaine cellule avec le code VBA


Lier le filtre de tableau croisé dynamique à une certaine cellule avec le code VBA

Le tableau croisé dynamique que vous allez lier sa fonction de filtre à une valeur de cellule doit inclure un champ de filtre (le nom du champ de filtre joue un rôle important dans le code VBA suivant).

Prenez le tableau croisé dynamique ci-dessous comme exemple, le champ de filtre dans le tableau croisé dynamique est appelé Catégories, et il comprend deux valeurs " " et "Sales». Après avoir lié le filtre de tableau croisé dynamique à une cellule, les valeurs de cellule que vous appliquerez au filtre de tableau croisé dynamique doivent être «Dépenses» et «Ventes».

1. Veuillez sélectionner la cellule (ici je sélectionne la cellule H6) que vous allez lier à la fonction de filtre du tableau croisé dynamique, et entrez l'une des valeurs de filtre dans la cellule à l'avance.

2. Ouvrez la feuille de calcul contenant le tableau croisé dynamique que vous lierez à la cellule. Cliquez avec le bouton droit sur l'onglet de la feuille et sélectionnez Voir le code dans le menu contextuel. Voir la capture d'écran:

3. dans le Microsoft Visual Basic pour applications fenêtre, copiez ci-dessous le code VBA dans la fenêtre Code.

Code VBA: lier le filtre de tableau croisé dynamique à une certaine cellule

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("H6")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

Notes:

1) "Sheet1»Est le nom de la feuille de calcul ouverte.
2) "Tableau croisé dynamique2»Est le nom du tableau croisé dynamique sur lequel vous allez lier sa fonction de filtre à une cellule.
3) Le champ de filtrage dans le tableau croisé dynamique s'appelle "Catégories".
4) La cellule référencée est H6. Vous pouvez modifier ces valeurs variables en fonction de vos besoins.

4. appuie sur le autre + Q touches pour fermer le Microsoft Visual Basic pour applications fenêtre.

Désormais, la fonction de filtre du tableau croisé dynamique est liée à la cellule H6.

Actualisez la cellule H6, puis les données correspondantes dans le tableau croisé dynamique sont filtrées en fonction de la valeur existante. Voir la capture d'écran:

Lors de la modification de la valeur de la cellule, les données filtrées dans le tableau croisé dynamique seront modifiées automatiquement. Voir la capture d'écran:


Sélectionnez facilement des lignes entières en fonction de la valeur de la cellule dans une colonne certian:

, Sélectionnez des cellules spécifiques utilité de Kutools pour Excel peut vous aider à sélectionner rapidement des lignes entières en fonction de la valeur de la cellule dans une colonne certian dans Excel, comme illustré ci-dessous. Après avoir sélectionné toutes les lignes en fonction de la valeur de la cellule, vous pouvez les déplacer ou les copier manuellement vers un nouvel emplacement selon vos besoins dans Excel.
Téléchargez et essayez-le maintenant! (30-journée sentier libre)


Articles Liés:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (36)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
comment le faire sur plusieurs champs puisque dans le code il n'y a qu'une seule cible
Ce commentaire a été minimisé par le modérateur sur le site
salut Frank
Sory ne peut pas t'aider avec ça.
Ce commentaire a été minimisé par le modérateur sur le site
Que se passe-t-il si la cellule liée au tableau croisé dynamique, dans ce cas H6, se trouve sur une autre feuille de calcul ? Comment ça change le code ?
Ce commentaire a été minimisé par le modérateur sur le site
que se passe-t-il si j'ai plus d'un tableau croisé dynamique et que je crée un lien vers une cellule. Comment dois-je modifier le code ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Jeri,
Désolé, je ne peux pas vous aider. Bienvenue à poster toute question dans notre forum: https://www.extendoffice.com/forum.html pour obtenir plus de support Excel de la part d'Excel Professional ou d'autres fans d'Excel.
Ce commentaire a été minimisé par le modérateur sur le site
trouvez-les et modifiez-les dans Array(),Intersect(), Worksheets(), PivotFields()

Tableau croisé dynamique1
Tableau croisé dynamique2
Tableau croisé dynamique3
Tableau croisé dynamique4
H1
SheetName
Nom du champ




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Boa tarde...! Ótima publicação, como faço para utilizar o filter em duas ou mais tabelas dinâmicas... ? Agradeço desde já.

Bon après-midi...! Excellente publication, comment utiliser le filtre dans deux ou plusieurs tableaux croisés dynamiques... ? Merci d'avance.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Gilmar Alves,
Désolé, je ne peux pas vous aider. Bienvenue à poster toute question dans notre forum: https://www.extendoffice.com/forum.html pour obtenir plus de support Excel de la part d'Excel Professional ou d'autres fans d'Excel.
Ce commentaire a été minimisé par le modérateur sur le site
Quelqu'un a-t-il compris la question de la liaison de plusieurs tableaux croisés dynamiques?
Ce commentaire a été minimisé par le modérateur sur le site
Modifier les valeurs dans Array(), Worksheets() et Intersect()



** Trouvez-les et changez-les **
SheetName
E1
Tableau croisé dynamique1
Tableau croisé dynamique2
Tableau croisé dynamique3




Private Sub Worksheet_Change (Cible ByVal en tant que plage)
'Mettre à jour par Extendoffice 20180702
Estomper xPTable en tant que tableau croisé dynamique
Dim xPFile As PivotField

Dim xPTabled As PivotTable
Dim xPFiled As PivotField

Dim xStr As String



On Error Resume Next

'리스트 만들기
Dim listArray() comme variante
listeTableau = Tableau("PivotTable1", "PivotTable2", "PivotTable3")



Si l'intersection (cible, plage ("E1")) n'est rien, alors quittez le sous-marin
Application.ScreenUpdating = Faux

Pour i = 0 Vers UBound(listArray)

Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Set xPFile = xPTable.PivotFields("Company_ID")

xStr = Cible.Texte
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr



Suivant

Application.ScreenUpdating = True



End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Ciao, sto provando a fare lo stesso esempio per far in modo che il filtro della pivot si setti sul valore della cella,
non riesco a farla funzionare.

Quale passaggio manca nella descrizione sopra ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Avez-vous reçu une invite d'erreur ? J'ai besoin d'en savoir plus sur votre problème, comme votre version d'Excel. Et si cela ne vous dérange pas, essayez de créer vos données dans un nouveau classeur et réessayez, ou prenez une capture d'écran de vos données et téléchargez-la ici.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

J'ai essayé de faire fonctionner cela pour le filtre de colonne mais cela ne semble pas fonctionner. Ai-je besoin d'un autre code pour cela ?

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Salut Justin,
Avez-vous reçu une invite d'erreur ? J'ai besoin d'en savoir plus sur votre problème.
Avant d'appliquer le code, n'oubliez pas de modifier le "nom de la feuille""nom du tableau croisé dynamique""nom du filtre du tableau croisé dynamique" et le cellule vous souhaitez filtrer le tableau croisé dynamique en fonction de (voir capture d'écran).
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/4.png
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,

Merci de votre aide. Le problème est que la fonction ne fait rien pour une raison quelconque. Quelques éclaircissements :

Nom du pivot : Order_Comp_B2C
Nom de la feuille : feuille de calcul
Nom du filtre : Numéro de la semaine (j'ai changé ce nom à partir de ce qui était "Dispatch Week No" dans le fichier de données)
Cellule à changer : O26 et O27 (cela devrait aller dans la plage)

Dans ce pivot, j'essaie de modifier le filtre pour les colonnes, je n'ai rien dans la zone de filtre du menu Champs de tableau croisé dynamique.

mon code est :

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
'Mettre à jour par Extendoffice 20180702
Estomper xPTable en tant que tableau croisé dynamique
Dim xPFile As PivotField
Dim xStr As String
On Error Resume Next
Si l'intersection (cible, plage (" O26 ")) n'est rien, alors quittez le sous-marin
Application.ScreenUpdating = Faux
Set xPTable = Worksheets("Feuille de calcul").PivotTables("Order_Comp_B2C")
Set xPFile = xPTable.PivotFields("Numéro de semaine")
xStr = Cible.Texte
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
End Sub

Merci,

Justin
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Justin Teew,
J'ai changé le Nom du pivot, nom de la feuille, nom du filtre et cellule à changer aux conditions que vous avez mentionnées ci-dessus, et essayé le code VBA que vous avez fourni, cela fonctionne bien dans mon cas. Voir le GIF suivant ou le classeur joint.
Cela vous dérange-t-il de créer un nouveau classeur et de réessayer le code ?
https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/6.gif
Ce commentaire a été minimisé par le modérateur sur le site
Salut Crystal,

Ci-joint une capture d'écran du pivot, la case rouge est le filtre que je voudrais changer en fonction de la valeur de la cellule.

De préférence, je voudrais utiliser une plage de cellules indiquant plusieurs numéros de semaine.

Merci,

Justin
Ce commentaire a été minimisé par le modérateur sur le site
Salut Justin,
Désolé, je n'ai pas vu la capture d'écran que vous avez jointe sur la page. Il y a peut-être une erreur sur la page.
Si vous avez encore besoin de résoudre le problème, écrivez-moi via zxm@addin99.com. Désolé pour le dérangement.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Justin Teew,
Veuillez essayer le code VBA suivant. J'espère que je peux aider.

Private Sub Worksheet_Change(ByVal Target As Range)
    'Update by Extendoffice 20220706
    Dim I As Integer
    Dim xFilterStr1, xFilterStr2 As String
    On Error Resume Next
    If Intersect(Target, Range("O26:O27")) Is Nothing Then Exit Sub
    'Application.ScreenUpdating = False
    
    xFilterStr1 = Range("O26").Value
    xFilterStr2 = Range("O27").Value
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        ClearAllFilters
    If xFilterStr1 = "" And xFilterStr2 = "" Then Exit Sub
    ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number"). _
        EnableMultiplePageItems = True
    xCount = ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems.Count

    For I = 1 To xCount
        If I <> xFilterStr1 And I <> xFilterStr2 Then
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = False
        Else
            ActiveSheet.PivotTables("Order_Comp_B2C").PivotFields("Week Number").PivotItems(I).Visible = True
        End If
    Next

    'Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Je l'ai utilisé pour un excell normal et cela a fonctionné. Mais je ne pouvais pas l'utiliser pour des feuilles de calcul olap. peut-être dois-je le changer un peu ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut maziaritib4 TIB,
La méthode n'est disponible que pour Microsoft Excel. Désolé pour le dérangement.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Justin,

Cela a parfaitement fonctionné, cependant, je me demande si cette règle peut être appliquée à plusieurs tableaux croisés dynamiques dans la même feuille ?

Merci,
James
Ce commentaire a été minimisé par le modérateur sur le site
Salut James,

Oui, c'est possible, le code que j'ai utilisé pour cela est (4 pivots et 2 références de cellule):

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim i comme entier
Dim xFilterStr1, xFilterStr2, yFilterstr1, yfilterstr2 As String
On Error Resume Next
Si l'intersection (cible, plage ("O26: P27")) n'est rien, alors quittez le sous-marin

xFiltreStr1 = Plage("O26").Valeur
xFiltreStr2 = Plage("O27").Valeur
yFilterstr1 = Range("p26").Valeur
yfilterstr2 = Range("p27").Valeur
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Numéro de semaine"). _
EffacerTousFiltres

Si xFilterStr1 = "" Et xFilterStr2 = "" Et yFilterstr1 = "" Et yfilterstr2 = "" Alors Quitter Sub
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Numéro de semaine"). _
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Numéro de semaine"). _
EnableMultiplePageItems = Vrai

xCount = ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Numéro de semaine").PivotItems.Count
xCount = ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Numéro de semaine").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Numéro de semaine").PivotItems.Count
yCount = ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Numéro de semaine").PivotItems.Count

Pour I = 1 To xCount
Si je <> xFilterStr1 Et je <> xFilterStr2 Alors
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Numéro de semaine").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Numéro de semaine").PivotItems(I).Visible = False
autre
ActiveSheet.PivotTables("Order_Comp_B2C_Crea").PivotFields("Numéro de semaine").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Crea").PivotFields("Numéro de semaine").PivotItems(I).Visible = True
Si fin
Suivant

Pour I = 1 À yCompte
Si je <> yFilterstr1 Et je <> yfilterstr2 Alors
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Numéro de semaine").PivotItems(I).Visible = False
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Numéro de la semaine").PivotItems(I).Visible = False
autre
ActiveSheet.PivotTables("Order_Comp_B2C_Disp").PivotFields("Numéro de semaine").PivotItems(I).Visible = True
ActiveSheet.PivotTables("Order_Comp_B2B_Disp").PivotFields("Numéro de semaine").PivotItems(I).Visible = True
Si fin
Suivant

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Modifier les valeurs dans Array(), Worksheets() et Intersect()



** Trouvez-les et changez-les **
SheetName
E1
Tableau croisé dynamique1
Tableau croisé dynamique2
Tableau croisé dynamique3




Private Sub Worksheet_Change (Cible ByVal en tant que plage)
'Mettre à jour par Extendoffice 20180702
Estomper xPTable en tant que tableau croisé dynamique
Dim xPFile As PivotField

Dim xPTabled As PivotTable
Dim xPFiled As PivotField

Dim xStr As String



On Error Resume Next

'리스트 만들기
Dim listArray() comme variante
listeTableau = Tableau("PivotTable1", "PivotTable2", "PivotTable3")



Si l'intersection (cible, plage ("E1")) n'est rien, alors quittez le sous-marin
Application.ScreenUpdating = Faux

Pour i = 0 Vers UBound(listArray)

Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
Set xPFile = xPTable.PivotFields("Company_ID")

xStr = Cible.Texte
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr



Suivant

Application.ScreenUpdating = True



End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

Le code fonctionne bien pour moi. Cependant, je ne parviens pas à faire en sorte que le tableau croisé dynamique mette à jour automatiquement la cible du filtre. La cible dans mon cas est une formule [DATE(D18,S14,C18)]. Le code ne fonctionne que lorsque je double-clique sur la cellule cible et que j'appuie sur Entrée.

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

Ce code fonctionne parfaitement. Cependant, je ne parviens pas à obtenir le code pour mettre à jour automatiquement le tableau croisé dynamique. La valeur cible pour moi est une formule (=DATE(D18,..,..)) qui change en fonction de ce qui est sélectionné à D18. Pour mettre à jour le tableau croisé dynamique, je dois double-cliquer sur la cellule cible et appuyer sur Entrée. Y a-t-il un moyen de contourner cela?

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour ST,
Supposons que votre valeur cible se trouve dans H6 et qu'elle change en fonction de la valeur dans D18. Pour filtrer un tableau croisé dynamique en fonction de cette valeur cible. Le code VBA suivant peut vous aider. Veuillez essayer.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2022/07/22
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("h6")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub

Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet1").PivotTables("Pivot Table 1")
Set xPFile = xPTable.PivotFields("Category")
xStr = Target.Text
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Crystal,

J'ai ajouté une ligne sur le code : Dim xRg As Range

Le code ne réinitialise pas automatiquement les dates lorsque la cible est modifiée. J'ai un fichier Excel reproduisant ce que j'essaie de faire, mais je ne peux pas ajouter de pièces jointes sur ce site Web. D3 (cible = DATE(A15,B15,C15)) a une équation liée à A15, B15 et C15. Lorsqu'une valeur sur A15, B15 et C15 est modifiée, le tableau croisé dynamique se réinitialise sur aucun filtre. Pourriez-vous m'aider à ce sujet?
Ce commentaire a été minimisé par le modérateur sur le site
Salut ST,
Je ne comprends pas très bien ce que tu veux dire. Dans votre cas, la valeur de la cellule cible D3 est utilisée pour filtrer le tableau croisé dynamique. La formule dans la cellule cible D3 fait référence aux valeurs des cellules A15, B15 et C15, qui changeront en fonction des valeurs dans les cellules de référence. Lorsqu'une valeur sur A15, B15 et C15 est modifiée, le tableau croisé dynamique sera automatiquement filtré si la valeur dans la cellule cible répond aux conditions de filtre du tableau croisé dynamique. Si la valeur de la cellule cible ne répond pas aux critères de filtrage du tableau croisé dynamique, le tableau croisé dynamique sera automatiquement réinitialisé sur aucun filtrage.
Ce commentaire a été minimisé par le modérateur sur le site
Je ne sais pas s'il existe un moyen de partager un fichier Excel avec vous. Si ma valeur cible, qui est une date, change en fonction des changements dans d'autres cellules. Je dois double-cliquer sur la cellule cible et appuyer sur Entrée (comme vous le feriez après avoir entré une formule dans une cellule) pour mettre à jour le tableau croisé dynamique
Ce commentaire a été minimisé par le modérateur sur le site
Salut Sagar T,
Le code a été mis à jour. Veuillez essayer. Merci pour vos commentaires.
N'oubliez pas de modifier les noms de la feuille de calcul, du tableau croisé dynamique et du filtre dans le code. Ou vous pouvez télécharger le classeur téléchargé suivant pour le tester.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220805
Dim xPTable As PivotTable
Dim xPFile As PivotField
Dim xStr As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next

xBoolean = False
Set xRg = Range("D3")

Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
    xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
    xBoolean = True
ElseIf Not (xDs Is Nothing) Then
    xBoolean = True
End If


If Not xBoolean Then Exit Sub
xStr = Format(xRg.Text, "m/d/yyyy")
Application.ScreenUpdating = False
Set xPTable = Worksheets("Sheet2").PivotTables("PivotTable1")
Set xPFile = xPTable.PivotFields("Date")
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True

End Sub
Ce commentaire a été minimisé par le modérateur sur le site
trouvez-les et modifiez-les dans Array(),Intersect(), Worksheets(), PivotFields()

Tableau croisé dynamique1
Tableau croisé dynamique2
Tableau croisé dynamique3
Tableau croisé dynamique4
H1
SheetName
Nom du champ




Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xPTabled As PivotTable
    Dim xPFiled As PivotField
    Dim xStr As String
    On Error Resume Next
    '리스트 만들기
    Dim listArray() As Variant
    listArray = Array("PivotTable1", "PivotTable2", "PivotTable3", "PivotTable4")
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    For i = 0 To UBound(listArray)
        Set xPTable = Worksheets("SheetName").PivotTables(listArray(i))
        Set xPFile = xPTable.PivotFields("FieldName")
        'MsgBox (listArray(i))
        xStr = Target.Text
        xPFile.ClearAllFilters
        xPFile.CurrentPage = xStr
    Next
        Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Как сделать чтобы сводная таблица применяла сразу 2 фильтра из 2хразных ячеек? il n'y en a pas 1 ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Алексей,

Veuillez vérifier si le code VBA dans ce commentaire #38754 peut aider.
Ce commentaire a été minimisé par le modérateur sur le site
Можно ли сослаться вместо ячейки H6 на ячейку на другом листе? как это сделать? подскажите пожалуйста.
Ce commentaire a été minimisé par le modérateur sur le site
Salut Алексей,

Vous n'avez pas besoin de modifier le code, ajoutez simplement le code VBA à la feuille de calcul de la cellule que vous souhaitez référencer.
Par exemple, si vous souhaitez filtrer un tableau croisé dynamique nommé "Tableau croisé dynamique1"En Sheet2 basé sur la valeur de la cellule H6 in Sheet3, veuillez faire un clic droit sur Sheet3 onglet feuille de calcul, cliquez sur Voir le code dans le menu contextuel, puis ajoutez le code au Feuil3 (Code) fenêtre.
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL