Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA Filtrer un TCD par dates

  • Initiateur de la discussion Initiateur de la discussion jim7963
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jim7963

XLDnaute Junior
Bonjour à tous,

j'étais à la recherche d'un exemple de macro qui me permette de filtrer mon TCD par dates quand je suis tombé sur un code de Pierrot93 dans les archives du forum. J'ai fais une légère adaptation à mon fichier, mais on dirait que cela ne lui a pas plu car j'ai droit à une jolie "erreur d'exécution 1004 - Impossible de définir la propriété Visible de la classe PivotItem".

Voici le code:

Code:
Sub MasqueDates()
Dim p As PivotItem
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date")
    For Each p In .PivotItems
        p.Visible = True
    Next p
    For Each p In .PivotItems
        If p.Value <> Month(Range("J1")) Then p.Visible = False
    Next p
End With
Application.ScreenUpdating = True
End Sub

Quand je lance le débogage il me surligne en jaune la partie: p.Visible = False.

Auriez-vous une idée d'où peut provenir le problème car je sèche.

Je vous joins un fichier que j'ai allégé au niveau des données pour vous aider.
 

Pièces jointes

Re : VBA Filtrer un TCD par dates

Bonjour à tous

J'avais fait sur la même base que Philippe 🙂 ce code (intéressant le Cstr 😱):

Code:
Sub Tri_TCD_Date()
Dim valdeb As Long
Dim valfin As Long
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        ClearAllFilters
    'ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        PivotFilters.Add2 Type:=xlDateBetween, Value1:="04/01/2012", Value2:= _
        "12/01/2012"
        valdeb = Cells(1, 7).Value2
        valfin = Cells(2, 7).Value2
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date"). _
        PivotFilters.Add2 Type:=xlDateBetween, Value1:=valdeb, Value2:= _
        valfin
End Sub
 
Re : VBA Filtrer un TCD par dates

Re,

une petite amélioration (capillo-tractée 😀) pour éviter une erreur si la date de début est postérieure à la date de fin;
cette ligne en début de code permettra d'inverser les dates et d'éviter le plantage
Code:
Sub MasqueDates()
If [G1] > [G2] Then [G1] = [G1] + [G2]: [G2] = [G1] - [G2]: [G1] = [G1] - [G2]
' la suite du code
' .........................
' .........................
End Sub
à+
Philippe

Edit: Bonjour Michel
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
725
Réponses
3
Affichages
243
Réponses
9
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…