Critère sur TCD d'une autre feuille

Bonjour et merci d'avance !

J'ai ce code qui réactualise un TCD qui se trouve dans une autre feuille. J'ai mis les commentaires dans le code pour chaque ligne.

Sub Macro3()
'
' Macro3 Macro
'

' cette première ligne de code fonctionne ! Mon TCD (XXX) dans une autre feuille (FFFF) se met à jour

Sheets("FFFF").PivotTables("XXX").RefreshTable
        Application.EnableEvents = True

'Par contre je n'arrive pas à "distance" à lui imposer des critères...

Sheets("FFFF").PivotTables("XXX").PivotFields("C1").PivotFilters.Add2 _
        Type:=xlValueIsGreaterThan, DataField:=ActiveSheet.PivotTables("XXX" _
        ).PivotFields("C2"), Value1:=0
End Sub

Avez-vous une solution ? J'ai l'impression qu'on ne peut que rafraichir un TCD à "distance"....

Merci bcp !

Bonjour, sans fichier difficile de répondre correctement.

Vous pouvez toujours utilisez l'enregistrement macro pour voir la différence entre votre code et celui enregistré par excel.

Merci pour la réponse. Si je fais comme vous dites ça m'impose d'aller dans la feuille FFFF pour mettre les critères et ce n'est pas ce que je recherche.

Je veux la même chose que la première ligne de code : pouvoir à distance mettre des conditions.

Quand vous enregistrez oui mais aprés vous obtenez le code utilisé pour le TCD.

Il vous suffira d'utiliser le code trouvé par excel puis de le copier entre :

With Sheets("FFFF")

....
...
End with

Bonjour,
Merci de joindre un fichier à ta demande, car c'est un peu confus !
Et consulte l'aide pour la méthode PivotFilter.Add de VBA pour une bonne syntaxe.
Cdlt.

Merci Xmenpl
j'ai testé ta méthode depuis une autre feuille et il y a une erreur au premier ActiveSheet...

Sub Macro5()
'
' Macro5 Macro
'

With Sheets("FFFF")
    ActiveSheet.PivotTables("XXX").PivotCache.Refresh
    ActiveSheet.PivotTables("XXX").PivotFields("C1").PivotFilters.Add2 _
        Type:=xlValueDoesNotEqual, DataField:=ActiveSheet.PivotTables("XXX") _
        .PivotFields("C2"), Value1:=0
End With

End Sub
image

Bonjour à tous

Je partage l'avis de Jean-Eric

Par ailleurs si FFFF n'est la feuille active, ActiveSheet ne peut fonctionner

Ta syntaxe avec With n'est pas correctement utilisée. Tu devrais avoir seulement .PivotTables

oops depuis une autre feuille :

With Sheets("FFFF").Activate

Bonjour, Jean éric et bonjour , 78Chris. c'est plus facile effectivement avec le fichier surtout s'il faut rester sur l'onglet de départ ou si

au final il faut se rendre sur l'onglet du TCD pour voir le résultat ?

Parfait Xmenpl !merci beaucoup ça fonctionne.

Re,

Public Sub FilterData()
Dim pt As PivotTable, pf As PivotField, pf2 As PivotField

    Set pt = Worksheets("FFFF").PivotTables("XXX")
    Set pf = pt.PivotFields("C1")
    Set pf2 = pt.PivotFields("C2")
    pt.ClearAllFilters
    pf.PivotFilters.Add _
            Type:=xlValueDoesNotEqual, _
            DataField:=pf2, _
            Value1:=0

End Sub
16essai.xlsm (28.79 Ko)

Juste un petit bémol : c'est que je ne veux pas accéder à cette feuille. Or pour le coup c'est ce qui se passe.

Si vous reprenez mon premier code et la première ligne faisait le taff, mais juste pour le rafraichissement…. La mise à jour du TCD se faisait à "distance" sans accéder à la feuille FFFF.

Re,
Il suffisait dan sun premier temps de mettre tes données sous forme de tableau structuré.
Tu évitais des lignes vides !
Voir fichier et macro modifiée (peut-être inutile maintenant).
Cdlt.

14essai.xlsm (32.58 Ko)

Merci Jean-Eric,

Sauf que dans feuil1 ma source de données est à géométrie variable et donc elle n'a pas tout le temps 26 lignes. Et c'est pour çà qu'il y a des vides.

Cdlt,

Re,
Un tableau structuré est dynamique.
Renseigne toi sur leurs fonctionnalités.
Cdlt.

RE

Un tableau structuré est dynamique.
Renseigne toi sur leurs fonctionnalités.

Et cela fait 19 ans qu'on les utilise comme source de TCD...

Merci pour votre aide. Merci Jean-Eric pour ton code mais il ne fonctionne pas. Il ne condense pas les données dans TCD XXX quand je supprime volontairement des lignes de feuil 1. Mon problème initial ne relevait pas de la gestion d'un TCD mais d'un code VBA. J'ai pas mal d'éléments pour avancer.

Cdlt,

Re,
Un peu difficile à suivre.
Cdlt.

Option Explicit

Dim pt As PivotTable

Public Sub FilterData()
Dim pf As PivotField, pf2 As PivotField

    Set pt = Worksheets("FFFF").PivotTables("XXX")
    Set pf = pt.PivotFields("N°OF")
    Set pf2 = pt.PivotFields("QTE OK  ")
    With pt
        .PivotCache.MissingItemsLimit = xlMissingItemsNone
        .PivotCache.Refresh
        .ClearAllFilters
        .PivotFilters.Add _
                Type:=xlValueDoesNotEqual, _
                DataField:=pf2, _
                Value1:=0
    End With

End Sub

Public Sub ClearFiletrs()

    Set pt = Worksheets("FFFF").PivotTables("XXX")
    pt.ClearAllFilters

End Sub

RE

Il ne condense pas les données dans TCD XXX quand je supprime volontairement des lignes de feuil 1

Tu supprimes des lignes ou tu effaces leur contenu ? Ce n'est pas la même chose surtout dans un tableau structuré...

Au pire à la méthode barbare tu reviens sur ta feuille de départ à la fin du code :

Sheets("Feuil1").Activate

Bonjour à tous,

@ Xmenpl : Merci ! Oui j'ai procédé comme çà, car à "distance" je n'ai su que rafraichir le TCD.

@ Jean-Eric : Merci ! Tu n'es pas loin de la solution ! J'ai testé ta dernière proposition et voici le message qu'il met, en bloquant dans la zone rouge.

image

@ 78chris : Que je supprime des lignes ou les efface, au final les données n'y sont plus. Donc ça revient au même. Le code préalable de Jean-Eric ne fonctionnait pas. SI par contre je mettais à jour le TCD manuellement alors les données se "condensaient".

Cdlt,

Rechercher des sujets similaires à "critere tcd feuille"