1 pièce(s) jointe(s)
Filtre via macro sur un TCD
Bonjour,
Je viens chercher de l'aide car j'ai un petit souci avec une macro sur un TCD.
Je cherche via une macro à créer automatiquement un TCD dont un filtre doit se faire uniquement sur les dates concernant l'année 2015. Je n'arrive pas à faire cela ..
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| Sub TCD_CPT_GPI()
'
' Macro "CD_CPT_GPI" qui permet de créer le TCD au niveau de la compta et du GPI :
'
'-----------------------------------------------------------------------------------
'
Sheets("OS11").Select
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(3).Name = "TCD1"
'
' Etiquettes de lignes
'
Dim DerniereLigne As Long
Dim DerniereColonne As Long
DerniereLigne = 14
DerniereColonne = 7
'
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"OS11!R1C1:R" & DerniereLigne & "C" & DerniereColonne & "", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="TCD1!R3C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion14
Sheets("TCD1").Select
'
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Code de l'opération")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Libellé de l'opération")
.Orientation = xlRowField
.Position = 2
End With
'
' Filtre du rapport
'
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immo")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immo")
.PivotItems("NI").Visible = False
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immo").EnableMultiplePageItems = True
'
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date transaction")
.Orientation = xlPageField
.Position = 1
'
' Ne fonctionne pas
'
For i = 1 To .PivotItems.Count
If .PivotItems(i) = "2015" Then
.PivotItems(i).Visible = True
Else
.PivotItems(i).Visible = False
End If
Next i
'
End With
'
' Etiquettes de colonnes
'
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Type indicateur")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Type indicateur")
'.PivotItems("BDT").Visible = False
'.PivotItems("ENG").Visible = False
'.PivotItems("MDP").Visible = False
End With
'
' Valeurs
'
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Montant"), "Somme de Montant", xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Immo").CurrentPage = "(All)"
'
' Permet de ne pas afficher les sous-totaux
'
Range("A2").Select
ssTotaux.SuppressionSousTotauxTCD
'
' Permet d'afficher le TCD sous forme tabulaire
'
ActiveSheet.PivotTables("Tableau croisé dynamique1").RowAxisLayout xlTabularRow
'
' Permet de redimensionner la largeur des colonnes
'
Columns("A:E").EntireColumn.AutoFit
Range("A1").Select
End Sub |
Je vous joint un fichier Test, je n'ai pu y intégrer le code (impossible de télécharger le fichier "xlsm" ...).
Si jamais quelqu'un avait la solution, ça me serait très utile.
Merci d'avance !!