TCD : sélection d’un mois unique bugge par VBA

Sebast

XLDnaute Impliqué
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
 

Sebast

XLDnaute Impliqué
Re : TCD : sélection d’un mois unique bugge par VBA

Bonjour Gareth,

merci pour ce fichier qui devrait faciliter la compréhension.

J'ai essayé de faire tourner le code mais ça bute sur :

VarPivotField.PivotItems(Var2).Visible = True 'Affiche le champs choisi par l'utilisateur

"impossible de lire la propriété PivotItems de la classe PivotField"


et ce quelque soit le mois choisi


Je continue d'investiguer


Bonne journée
 

Gareth

XLDnaute Impliqué
Re : TCD : sélection d’un mois unique bugge par VBA

Bonjour,

En fait, ma macro fontionne nickel (mieux que sous Excel 2010) il faut juste que tu recré le TCD.
La version Excel 2010 vers Excel 2002 ne passe pas ...

Voir le fichier joint
 

Pièces jointes

  • TCD.xls
    48.5 KB · Affichages: 32
  • TCD.xls
    48.5 KB · Affichages: 30
  • TCD.xls
    48.5 KB · Affichages: 39
Dernière édition:

Sebast

XLDnaute Impliqué
Re : TCD : sélection d’un mois unique bugge par VBA

Bonjour,

merci pour ta perspicacité. Je vais regarder ta solution, mais entre-temps, j'ai creusé ma demande initiale et ai trouvé à tête reposée les bonnes combinaisons : je ferme les mois (c'est à dire je les positionne en False) de façon sélective, après les avoir tous ouvert. C'est un peu rustique mais très lisible :


Sub RestreindreàUnSeulMois()

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 = True
.PivotItems("Février").Visible = True
.PivotItems("Mars").Visible = True
.PivotItems("Avril").Visible = True
.PivotItems("Mai").Visible = True
.PivotItems("Juin").Visible = True
.PivotItems("Juillet").Visible = True
.PivotItems("Août").Visible = True
.PivotItems("Septembre").Visible = True
.PivotItems("Octobre").Visible = True
.PivotItems("Novembre").Visible = True
.PivotItems("Décembre").Visible = True

If MaRéponse > 1 Then .PivotItems("Janvier").Visible = False
If MaRéponse > 2 Or MaRéponse < 2 Then .PivotItems("Février").Visible = False
If MaRéponse > 3 Or MaRéponse < 3 Then .PivotItems("Mars").Visible = False
If MaRéponse > 4 Or MaRéponse < 4 Then .PivotItems("Avril").Visible = False
If MaRéponse > 5 Or MaRéponse < 5 Then .PivotItems("Mai").Visible = False
If MaRéponse > 6 Or MaRéponse < 6 Then .PivotItems("Juin").Visible = False
If MaRéponse > 7 Or MaRéponse < 7 Then .PivotItems("Juillet").Visible = False
If MaRéponse > 8 Or MaRéponse < 8 Then .PivotItems("Août").Visible = False
If MaRéponse > 9 Or MaRéponse < 9 Then .PivotItems("Septembre").Visible = False
If MaRéponse > 10 Or MaRéponse < 10 Then .PivotItems("Octobre").Visible = False
If MaRéponse > 11 Or MaRéponse < 11 Then .PivotItems("Novembre").Visible = False
If MaRéponse < 12 Then .PivotItems("Décembre").Visible = False
End With

End If ' f(ActiveSheet.PivotTables.Count > 0)

Next

End Sub




Encore merci pour ton aide
 

MJ13

XLDnaute Barbatruc
Re : TCD : sélection d’un mois unique bugge par VBA

Bonjour à tous

J'avais fait un code dans une autre discussion avec ce code pour filtrer sur une valeur inférieure à 2000 par exemple.

Si ça peut aider :).
 

Pièces jointes

  • TCD_Extrait_Sup_2000_MJ.xlsm
    37.7 KB · Affichages: 46
  • TCD_Extrait_Sup_2000_MJ.xlsm
    37.7 KB · Affichages: 35
  • TCD_Extrait_Sup_2000_MJ.xlsm
    37.7 KB · Affichages: 39

Sebast

XLDnaute Impliqué
Re : TCD : sélection d’un mois unique bugge par VBA

Bonjour MJ13,

merci pour ta contribution. Le code que j'avais posté au tout début intervenait pour des items < à un certain mois (ou, à adapter au besoin, à une certaine valeur) et le tout dernier pour UN mois précis (donc par exemple uniquement le mois de mars et pas janv, fév et mars).

Ta solution est beaucoup plus "universelle" car dans mon cas, je dois prendre en compte 12 cas de figure (12 mois) et je reconnais volontiers que si je devais l'adapter pour gérer par exemple non pas 12 mois mais 50 items, ce serait une usine à gaz ...
Mais pour ce besoin spécifique, ça me suffit, même s'il est vrai que c'est rustique.

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
314 654
Messages
2 111 595
Membres
111 212
dernier inscrit
Ben50