Bonsoir à toutes et à tous,
je n’arrive pas à restreindre mes tcd au mois exact que je recueille par une inputbox.
Autant en cumul, j’arrive par le signe « < « à afficher de janvier au mois n, autant je n’arrive pas à afficher UNIQUEMENT le mois n
J’ai l’impression que ça bugge car je « désaffiche » tous les mois (alors que dans mon code, certes je mets tout à zéro mais dans la foulée, j’affiche le mois souhaité)
J’ai essayé avec 12 select case mais ça devient une usine à gaz et je ne m’y retrouve plus …
Quelqu’un a-t-il une idée comment contourner la difficulté ?
Merci d’avance
Xxx mon code xxxx
Sub SaisiePériode()
Dim sh As Long
Dim MaRéponse As Variant
' je demande la période
Do While MaRéponse > 12 Or MaRéponse <= 0 Or MaRéponse <> Int(MaRéponse)
MaRéponse = Application.InputBox("Saisissez un chiffre entier correspond au mois de " + vbCrLf + _
"l'analyse souhaitée (1 = janvier, 12 = décembre)" _
+ vbCrLf + vbCrLf + "Cette question apparaît tant qu'une réponse valable " + vbCrLf + "ne sera pas saisie !", Type:=1)
Loop
For sh = 1 To Sheets.Count
Sheets(sh).Select
If ActiveSheet.PivotTables.Count > 0 Then ' pour que ça ne teste que les TCD
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("Janvier").Visible = False
.PivotItems("Février").Visible = False
.PivotItems("Mars").Visible = False
.PivotItems("Avril").Visible = False
.PivotItems("Mai").Visible = False
.PivotItems("Juin").Visible = False
.PivotItems("Juillet").Visible = False
.PivotItems("Août").Visible = False
.PivotItems("Septembre").Visible = False
.PivotItems("Octobre").Visible = False
.PivotItems("Novembre").Visible = False
.PivotItems("Décembre").Visible = False
If MaRéponse = 1 Then .PivotItems("Février").Visible = True
If MaRéponse = 2 Then .PivotItems("Février").Visible = True
If MaRéponse = 3 Then .PivotItems("Mars").Visible = True
If MaRéponse = 4 Then .PivotItems("Avril").Visible = True
If MaRéponse = 5 Then .PivotItems("Mai").Visible = True
If MaRéponse = 6 Then .PivotItems("Juin").Visible = True
If MaRéponse = 7 Then .PivotItems("Juillet").Visible = True
If MaRéponse = 8 Then .PivotItems("Août").Visible = True
If MaRéponse = 9 Then .PivotItems("Septembre").Visible = True
If MaRéponse = 10 Then .PivotItems("Octobre").Visible = True
If MaRéponse = 11 Then .PivotItems("Novembre").Visible = True
If MaRéponse = 12 Then .PivotItems("Décembre").Visible = True
End With
End If ' f(ActiveSheet.PivotTables.Count > 0)
Next
End Sub
je n’arrive pas à restreindre mes tcd au mois exact que je recueille par une inputbox.
Autant en cumul, j’arrive par le signe « < « à afficher de janvier au mois n, autant je n’arrive pas à afficher UNIQUEMENT le mois n
J’ai l’impression que ça bugge car je « désaffiche » tous les mois (alors que dans mon code, certes je mets tout à zéro mais dans la foulée, j’affiche le mois souhaité)
J’ai essayé avec 12 select case mais ça devient une usine à gaz et je ne m’y retrouve plus …
Quelqu’un a-t-il une idée comment contourner la difficulté ?
Merci d’avance
Xxx mon code xxxx
Sub SaisiePériode()
Dim sh As Long
Dim MaRéponse As Variant
' je demande la période
Do While MaRéponse > 12 Or MaRéponse <= 0 Or MaRéponse <> Int(MaRéponse)
MaRéponse = Application.InputBox("Saisissez un chiffre entier correspond au mois de " + vbCrLf + _
"l'analyse souhaitée (1 = janvier, 12 = décembre)" _
+ vbCrLf + vbCrLf + "Cette question apparaît tant qu'une réponse valable " + vbCrLf + "ne sera pas saisie !", Type:=1)
Loop
For sh = 1 To Sheets.Count
Sheets(sh).Select
If ActiveSheet.PivotTables.Count > 0 Then ' pour que ça ne teste que les TCD
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Mois")
.PivotItems("Janvier").Visible = False
.PivotItems("Février").Visible = False
.PivotItems("Mars").Visible = False
.PivotItems("Avril").Visible = False
.PivotItems("Mai").Visible = False
.PivotItems("Juin").Visible = False
.PivotItems("Juillet").Visible = False
.PivotItems("Août").Visible = False
.PivotItems("Septembre").Visible = False
.PivotItems("Octobre").Visible = False
.PivotItems("Novembre").Visible = False
.PivotItems("Décembre").Visible = False
If MaRéponse = 1 Then .PivotItems("Février").Visible = True
If MaRéponse = 2 Then .PivotItems("Février").Visible = True
If MaRéponse = 3 Then .PivotItems("Mars").Visible = True
If MaRéponse = 4 Then .PivotItems("Avril").Visible = True
If MaRéponse = 5 Then .PivotItems("Mai").Visible = True
If MaRéponse = 6 Then .PivotItems("Juin").Visible = True
If MaRéponse = 7 Then .PivotItems("Juillet").Visible = True
If MaRéponse = 8 Then .PivotItems("Août").Visible = True
If MaRéponse = 9 Then .PivotItems("Septembre").Visible = True
If MaRéponse = 10 Then .PivotItems("Octobre").Visible = True
If MaRéponse = 11 Then .PivotItems("Novembre").Visible = True
If MaRéponse = 12 Then .PivotItems("Décembre").Visible = True
End With
End If ' f(ActiveSheet.PivotTables.Count > 0)
Next
End Sub