Bonjour,

Ayant un problème avec une macro VBA, je me permets de demander votre aide!

Je voudrais pouvoir imposer un filtre "date" en retenant les 4 dernières périodes lors d'une mise à jour du TCD.

Donc dans l'onglet période, l'utilisateur renseigne la date de l'importation des données. Ma formule à coté retient les 4 dernières périodes en tant que période 1, période2, période 3, période 4.

En cliquant sur mise à jour ma macro se lance pour retenir que les 4 dernières période dans le TCD.

Le TCD est issu des données de l'onglet détail facture.

Ci joint ma macro: Dans celle-là je n'arrive pas à imposer les périodes. Je pense n'ai pas très bien compris le rôle de
.PivotItems(i.Value).Visible = False. (avec Excel 2010)

Je joindrais le fichier filtre_TCD par la suite. (J’ai un problème de par feux)

D'avance merci de votre aide et de votre temps. !!!

Cordialement,

Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
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
Sub miseajour()
 
Dim periode1, periode2, periode3, periode4 As Date
Dim PvI As Object
 
 
    Sheets("23 - Période").Activate
    periode1 = Cells(6, 4).Value
    periode2 = Cells(7, 4).Value
    periode3 = Cells(8, 4).Value
    periode4 = Cells(9, 4).Value
 
 
    Sheets("19 - RAFF Qté Zone").Select
    Sheets("19 - RAFF Qté Zone").Activate
 
 
'Set Field = Sheet.PivotTables("14 - Graph Détail RAFF Qté Zone").PivotFields("[Date Observation].[Calendrier].[Annee]").VisibleItemsList = Array("")
'Sheet.PivotTables("14 - Graph Détail RAFF Qté Zone").PivotFields("[Date Observation].[Calendrier].[Mois]").VisibleItemsList = Array("", "[Date Observation].[Calendrier].[Mois].&[" & rng2 & "]", "[Date Observation].[Calendrier].[Mois].&[" & Rng & "]", "[Date Observation].[Calendrier].[Mois].&[" & rng3 & "]")
 
    Application.ScreenUpdating = False
    ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotSelect "Mois[All]", _
        xlLabelOnly + xlFirstRow, True
 
    With ActiveSheet.PivotTables("Tableau croisé dynamique5").PivotFields("Mois")
            For Each PvI In .PivotItems
                Select Case PvI.Name
                    Case Is <> periode1 'Pour tout qui est différent de la période 1,
                    'Il ne m'affichera pas la date
                    PvI.Visible = False 'Il me donne une erreur??? or je ne comprends pas???
                    Case Is <> periode2
                    PvI.Visible = False
                    Case Is <> periode3
                    PvI.Visible = False
                    Case Is <> periode4
                    PvI.Visible = False
                End Select
            Next
    End With
        Sheets("21 - Détails Factures").Select
        MsgBox ("Ok")
End Sub