Bonjour à toutes et à tous,
j'ai adapté un code à mon besoin mais je bute sur une boucle et sur une mise en forme :
Mon code passe en revue les feuilles du fichier et effectue les actions suivantes s'il y a un TCD
- met les mois tel que demandé (on saisit de 1 à 12), c'est-à-dire déploie ou restreint les périodes du TCD
- affiche le TCD
1er problème : boucle
Il doit y avoir une erreur dans ma boucle car quand le dernier onglet (pas avant …) a été traité, le debugger met en jaune fluo l'instruction Sheets(sh).Select
Pourtant, cette instruction me paraît indispensable, sinon, comment passer d'une feuille à l'autre ?
2ème problème : centrage
Je n'arrive pas à centrer l'affichage ni à mettre en taille maxi, malgré .CenterVertically = True et .FitToPagesTall = 1 etc.
Quelqu'un a-t-il une idée concernant cette boucle et ce problème de centrage ?
Merci d'avance
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
le code est le suivant (détails dans Ma_question.xlsm):
Sub Ajuster_Date_et_Afficher_Tableau()
Dim sh As Long
Dim DateRéponse As Long
DateRéponse = Application.InputBox("A quel mois inclus voulez-vous restreindre l'affichage ?")
For sh = 1 To Sheets.Count
Sheets(sh).Select
If ActiveSheet.PivotTables.Count > 0 Then
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 DateRéponse < 2 Then .PivotItems("Février").Visible = False
If DateRéponse < 3 Then .PivotItems("Mars").Visible = False
If DateRéponse < 4 Then .PivotItems("Avril").Visible = False
If DateRéponse < 5 Then .PivotItems("Mai").Visible = False
If DateRéponse < 6 Then .PivotItems("Juin").Visible = False
If DateRéponse < 7 Then .PivotItems("Juillet").Visible = False
If DateRéponse < 8 Then .PivotItems("Août").Visible = False
If DateRéponse < 9 Then .PivotItems("Septembre").Visible = False
If DateRéponse < 10 Then .PivotItems("Octobre").Visible = False
If DateRéponse < 11 Then .PivotItems("Novembre").Visible = False
If DateRéponse < 12 Then .PivotItems("Décembre").Visible = False
End With
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With ActiveSheet
If .PivotTables.Count > 0 Then .PivotTables(1).TableRange2.Select ' après THEN cette instruction pour ne prendre en
ActiveSheet.PrintPreview ' compte que le tcd (pas les colonnes vides avec format)
End With
End If ' fin test si feuille contient TCD
Next ' on passe au sh suivant
End Sub
j'ai adapté un code à mon besoin mais je bute sur une boucle et sur une mise en forme :
Mon code passe en revue les feuilles du fichier et effectue les actions suivantes s'il y a un TCD
- met les mois tel que demandé (on saisit de 1 à 12), c'est-à-dire déploie ou restreint les périodes du TCD
- affiche le TCD
1er problème : boucle
Il doit y avoir une erreur dans ma boucle car quand le dernier onglet (pas avant …) a été traité, le debugger met en jaune fluo l'instruction Sheets(sh).Select
Pourtant, cette instruction me paraît indispensable, sinon, comment passer d'une feuille à l'autre ?
2ème problème : centrage
Je n'arrive pas à centrer l'affichage ni à mettre en taille maxi, malgré .CenterVertically = True et .FitToPagesTall = 1 etc.
Quelqu'un a-t-il une idée concernant cette boucle et ce problème de centrage ?
Merci d'avance
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
le code est le suivant (détails dans Ma_question.xlsm):
Sub Ajuster_Date_et_Afficher_Tableau()
Dim sh As Long
Dim DateRéponse As Long
DateRéponse = Application.InputBox("A quel mois inclus voulez-vous restreindre l'affichage ?")
For sh = 1 To Sheets.Count
Sheets(sh).Select
If ActiveSheet.PivotTables.Count > 0 Then
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 DateRéponse < 2 Then .PivotItems("Février").Visible = False
If DateRéponse < 3 Then .PivotItems("Mars").Visible = False
If DateRéponse < 4 Then .PivotItems("Avril").Visible = False
If DateRéponse < 5 Then .PivotItems("Mai").Visible = False
If DateRéponse < 6 Then .PivotItems("Juin").Visible = False
If DateRéponse < 7 Then .PivotItems("Juillet").Visible = False
If DateRéponse < 8 Then .PivotItems("Août").Visible = False
If DateRéponse < 9 Then .PivotItems("Septembre").Visible = False
If DateRéponse < 10 Then .PivotItems("Octobre").Visible = False
If DateRéponse < 11 Then .PivotItems("Novembre").Visible = False
If DateRéponse < 12 Then .PivotItems("Décembre").Visible = False
End With
With ActiveSheet.PageSetup
.CenterHorizontally = True
.CenterVertically = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With ActiveSheet
If .PivotTables.Count > 0 Then .PivotTables(1).TableRange2.Select ' après THEN cette instruction pour ne prendre en
ActiveSheet.PrintPreview ' compte que le tcd (pas les colonnes vides avec format)
End With
End If ' fin test si feuille contient TCD
Next ' on passe au sh suivant
End Sub