Bonjour,
Avant de poster, je précise que je n'ai fait beaucoup de recherches pour solutionner mon problème, sans succès!
Dans le fichier joint, j'ai 3 feuilles :
- Saisie qui contient mes données,
- une page de Configuration,
- le graphique issu d'un TCD
Mon problème est le suivant :
Lorsque j'exécute la Macro de la feuille "Graphique Salarié", la macro me renvoie le message suivant : "erreur exécution 1004 impossible de définir la propriété visible de la classe pivotitem".
J'i remarqué que le problème survient au moment où elle commence a sélectionner les items correspondant à la plage de date sélectionnée (en rouge dans la macro ci-dessous !)
Dim datetest As Double, Datedeb As Double, Datefin As Double
Application.ScreenUpdating = True
nomsal = CombSalarié.Text
Sheets("Graphique Salarié").Visible = True
Sheets("Menu").Visible = False
Sheets("Graphique Salarié").Select
ActiveWorkbook.RefreshAll
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Tâches").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Tâches").PivotFilters.Add Type:=xlCaptionDoesNotEqual, Value1:="(vide)"
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Salarié"). _
CurrentPage = nomsal
DD = Format(Me.DTPicker1, "dd/mm/yyyy")
DF = Format(Me.DTPicker2, "dd/mm/yyyy")
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Date"). _
ClearAllFilters
Datedeb = CDate(DD)
Datefin = CDate(DF)
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Date"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Date")
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
Next
For i = 2 To .PivotItems.Count
MsgBox .PivotItems.Count
datetest = CDate(Format(.PivotItems(i).Value, "DD/MM/YYYY")): MsgBox datetest
If datetest < Datedeb Or datetest > Datefin Then .PivotItems(i).Visible = False Else .PivotItems(i).Visible = True
Next
datetest = CDate(Format(.PivotItems(1).Value, "DD/MM/YYYY")): MsgBox datetest
If datetest >= Datedeb Then .PivotItems(1).Visible = True Else .PivotItems(1).Visible = False
End With
Application.ScreenUpdating = True
Suis-je suffisamment clair pour qu'une âme charitable puisse m'aider ?
Merci beaucoup.
Avant de poster, je précise que je n'ai fait beaucoup de recherches pour solutionner mon problème, sans succès!
Dans le fichier joint, j'ai 3 feuilles :
- Saisie qui contient mes données,
- une page de Configuration,
- le graphique issu d'un TCD
Mon problème est le suivant :
Lorsque j'exécute la Macro de la feuille "Graphique Salarié", la macro me renvoie le message suivant : "erreur exécution 1004 impossible de définir la propriété visible de la classe pivotitem".
J'i remarqué que le problème survient au moment où elle commence a sélectionner les items correspondant à la plage de date sélectionnée (en rouge dans la macro ci-dessous !)
Dim datetest As Double, Datedeb As Double, Datefin As Double
Application.ScreenUpdating = True
nomsal = CombSalarié.Text
Sheets("Graphique Salarié").Visible = True
Sheets("Menu").Visible = False
Sheets("Graphique Salarié").Select
ActiveWorkbook.RefreshAll
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Tâches").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Tâches").PivotFilters.Add Type:=xlCaptionDoesNotEqual, Value1:="(vide)"
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Salarié"). _
CurrentPage = nomsal
DD = Format(Me.DTPicker1, "dd/mm/yyyy")
DF = Format(Me.DTPicker2, "dd/mm/yyyy")
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Date"). _
ClearAllFilters
Datedeb = CDate(DD)
Datefin = CDate(DF)
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Date"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Date")
.PivotItems(1).Visible = True
For i = 2 To .PivotItems.Count
.PivotItems(i).Visible = False
Next
For i = 2 To .PivotItems.Count
MsgBox .PivotItems.Count
datetest = CDate(Format(.PivotItems(i).Value, "DD/MM/YYYY")): MsgBox datetest
If datetest < Datedeb Or datetest > Datefin Then .PivotItems(i).Visible = False Else .PivotItems(i).Visible = True
Next
datetest = CDate(Format(.PivotItems(1).Value, "DD/MM/YYYY")): MsgBox datetest
If datetest >= Datedeb Then .PivotItems(1).Visible = True Else .PivotItems(1).Visible = False
End With
Application.ScreenUpdating = True
Suis-je suffisamment clair pour qu'une âme charitable puisse m'aider ?
Merci beaucoup.
Pièces jointes
Dernière édition: