Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 17h38   #1
Invité régulier
 
Inscription : avril 2009
Messages : 27
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 27
Points : 6
Points : 6
Par défaut Ajouter filtre sur Zone de pages

Bonjour à tous,

Je me demande si c'est possible d'ajouter un filtre sur une Zone de pages(Tableau croisée dynamique). Voici le code .. L'erreur se produit à la dernière ligne ;
Citation:
1004: Application-definied or object-definied error.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim PT As PivotTable, PI As PivotItem
    Dim PiValue As Date 'Filter value
    Dim FDate As Date, EDate As Date
 
    FDate = Range("C4").Value
    EDate = Range("C5").Value
 
'Prevent Invalid dates
    If EDate < FDate Then
        MsgBox ("The date order is invalid")
        End
    End If
 
    Set PT = ActiveSheet.PivotTables("Activity")
 
'Speeding up code
        PT.ManualUpdate = True
 
        ActiveSheet.PivotTables("Activity").PivotFields("Date").ClearAllFilters
        ActiveSheet.PivotTables("Activity").PivotFields("Date").PivotFilters.Add Type:=xlDateBetween, Value1:=FDate, Value2:=EDate
Merci de votre aide
legaramir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 21h22   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonsoir
Ci-joint proposition
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
Dim PT As PivotTable, PI As PivotItem
Dim PiValue As Date, FDate As Date, EDate As Date
 
Application.ScreenUpdating = False
With Worksheets("Feuil1")
    FDate = DateValue(.Range("C4").Value)
    EDate = DateValue(.Range("C5").Value)
    If EDate < FDate Then
        MsgBox ("The date order is invalid")
    Else
        Set PT = .PivotTables("Activity")
        With PT
            .ManualUpdate = True
            With .PivotFields("Date")
                .ClearAllFilters
                For Each PI In .PivotItems
                    PiValue = Format(PI.Value, "mm/dd/yyyy")
                    If PiValue < FDate Or PiValue > EDate Then PI.Visible = False
                Next PI
            End With
            .Update
        End With
        Set PT = Nothing
    End If
End With
Attention quand même au cas où aucun item ne répond au critère.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 04h59   #3
Invité régulier
 
Inscription : avril 2009
Messages : 27
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 27
Points : 6
Points : 6
Merci de la proposition. En fait, c'est ce que je fais en ce moment. Parcontre, je trouve que le For Each prend trop de temps, tandis que ajouter un filtre se fait en un clin d'oeil. Voila pourquoi j'essaie cette technique, mais je ne crois que l'on puise appliquer un filtre sur un "Report Filter" (Zone de pages).
legaramir est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 13h53   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Si manuellement tu ne peux pas faire de filtre chronologique sur ta zone de page, c'est que par macro tu ne pourras pas.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h33.


 
 
 
 
Partenaires

Hébergement Web