filtrer un TCD via Macro

filiph79

XLDnaute Occasionnel
Bonjour,

j'utilise un TCD avec un filtre sur un champ Date.
j'ai enregistré une macro me permettant de filtrer une date en particulier.

Excel me géneèe un code avec autant de lignes à ne pas afficher que de dates non sélectionnées dans le filtre du genre :

.PivotItems("1/3/2012").Visible = True (La date sélectionnée)
et
.PivotItems("1/4/2012").Visible = False
.PivotItems("1/8/2012").Visible = False
.PivotItems("1/17/2012").Visible = False
.PivotItems("1/26/2012").Visible = False
.PivotItems("2/4/2012").Visible = False
.PivotItems("2/13/2012").Visible = False
.PivotItems("2/22/2012").Visible = False
.....................

pour les dates non sélectionnées.


J'aimerai modifié le code de façon à pouvoir filtre mon TCD pour n'avoir que les dates d'une période, par exemple :

<= 30/06/2012
ou
>=1/1/202 et <=31/03/2012.


J'ai essayé de définir une variable (ex FINPERIODE) pour pouvoir saisir ma date et la récupérer dans le filtre, mais je ne sais pas comment la traduire dans l'expression :

.PivotItems("1/8/2012").Visible = False

j'ai nbien tenté .PivotItems(">=" & finperiode).Visible = False
.PivotItems(">=" & cdate(finperiode)).Visible = False
.PivotItems(">=" & format(cdate(finperiode),"jj/mm/aaaa").Visible = False

mais rien ne va.

Si vous pouvez m'aiguiller...
Cordialement et Merci d'avance
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : filtrer un TCD via Macro

Bonjour filiph

avec ce code: (adapter les dates de début et de fin)

Code:
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("a"). _
        PivotFilters.Add Type:=xlDateBetween, Value1:="1/01/2015", Value2:= _
        "31/12/2015"

à+
Philippe
 

filiph79

XLDnaute Occasionnel
Re : filtrer un TCD via Macro

Bonjour Philippe,

J'ai essayé le code que tu m'as envoyé en l'adaptant, et il me renvoi le Message ERREUR 1004, erreur définie par l'application ou par l'objet.....
J'ai de mon coté fait quelques essais et voila ou j'en suis :

en refaisant des tests sur un champ contenant du texte, j'arrive à filtrer par macro en utilisant le code suivant :

Dim Nom As String
Nom = InputBox("saisir le nom (DEVEAUX, BOUVET ou ENGUENT)")
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("VENDEUR" _
).ClearAllFilters

With ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotFields("VENDEUR" _
)
For i = 1 To .PivotItems.Count
If .PivotItems(i).Value = Nom Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
Next i

End With
.......


Cette même structure de code, en l'appliquant sur une date me renvois une erreur :
impossible de définir la propriété visible de la classe pivotitem

Je joins mon fichier d'exemple avec les codes.

Si tu as un peu de temps pour le regarder.......

Merci
Cordialement
 

Pièces jointes

  • FIltreTCDParVBA.xlsm
    87.2 KB · Affichages: 43

Discussions similaires

Réponses
2
Affichages
117
Réponses
11
Affichages
958

Statistiques des forums

Discussions
312 215
Messages
2 086 314
Membres
103 176
dernier inscrit
jean.yvesjean.yves