masquer onglets en fonction de la date du jour

CHRISTOPHEAGPM

XLDnaute Nouveau
Bonsoir à tous,

Pouvez-vous m'apporter votre aide pour concevoir une macro qui dans un classeur comportant 12 onglets (un par mois) affichera uniquement celui correspondant au mois en cours.

Je mets dans la cellule A1 de chaque feuille la date du jour (=aujourd'hui) en B1 le 1er du mois et en C1 le dernier jour de chaque mois.

En Pj. un exemple avec dans "this workbook" un certain nombre d'essais effectués en tachant de mélanger les différents morceaux de code piochés sur le forum (sans succée car seul le premier à une action sur le classeur mais pas la bonne malheureusement...


A mon avis (qui vaut ce qu'il vaut cad pas grand chose) l'ideal serait de commencer par definir une variable permettant de boucler sur chacune des feuilles correspondant aux mois (et excluant les autres feuilles du classeur)

for i = 1 to 12
nomonglet = ("production(" & i & ")")

de definir 3 variables

A = Now (ou A=(A,1))
B = (B,1)
C= (C,1)

Puis un test

if B<=A<=C
nomonglet.visible=false

Next I

End sub


ça me parait si simple comme ça:eek:

merci beaucoup pour l'aide que vous pourrez m'apporter pour resoudre ce probleme qui me bloque et m'agite les neurones depuis deja plusieurs jours:)

Christophe.
 

Pièces jointes

  • exemple.zip
    14 KB · Affichages: 51
  • exemple.zip
    14 KB · Affichages: 46
  • exemple.zip
    14 KB · Affichages: 51
Dernière édition:

systmd

XLDnaute Occasionnel
Re : masquer onglets en fonction de la date du jour

bonjour,

déjà il faut modifier

With Sheets("Production (1)") au lieu de With Sheets("Production (01)")

Attention il faut au moins une feuille d'afficher à la fin

sinon essaye
Code:
Sub Test()

For Each sheet In Worksheets
If Cells(1, 1).Value >= Cells(1, 2).Value Then
   sheet.Visible = False
   End If
Next sheet
End Sub
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : masquer onglets en fonction de la date du jour

Bonjour CHRISTOPHEAGPM, bonjour à tous
Un essai qui semble répondre au problème :
Code:
[COLOR="DarkSlateGray"]Private Sub workbook_open()
Dim i As Integer, nbVisible As Integer, nomFeuilleUtile As String, nomFeuilleCourante As String
   ThisWorkbook.Worksheets.Add After:=Sheets(Sheets.Count)
   For i = 1 To Sheets.Count - 1
      nomFeuilleCourante = Sheets(i).Name
      If Left$(nomFeuilleCourante, 12) = "Production (" Then
         If Month(Sheets(nomFeuilleCourante).Cells(1, 2).Value) = Month(Date) Then
            nomFeuilleUtile = nomFeuilleCourante
            Sheets(nomFeuilleCourante).Visible = True
         Else
            Sheets(nomFeuilleCourante).Visible = False
         End If
      End If
      nbVisible = nbVisible - Sheets(i).Visible
   Next i
   Application.DisplayAlerts = False
   If nbVisible Then Worksheets(Sheets.Count).Delete
   Application.DisplayAlerts = True
   If nomFeuilleUtile <> "" Then Sheets(nomFeuilleUtile).Activate
End Sub[/COLOR]
ROGER2327
#1965
 

CHRISTOPHEAGPM

XLDnaute Nouveau
Re : masquer onglets en fonction de la date du jour

Roger2327,

Quel plaisir de me reveiller ce matin avec une solution "clé en main" qui répond parfaitement à mon besoin et va me permettre de continuer à avancer.
Reste aussi à l'etudier pour je l'espere pouvoir l'adapter à d'autres besoins.

Hellas oui systemd, c'est magique quand tout fonctionne mais un grain de sable (ou dans ce cas un guillemet) et il ne se passe rien...

Un grand merci à vous deux et un excellent week-end.
 

Discussions similaires

Réponses
5
Affichages
195

Statistiques des forums

Discussions
312 305
Messages
2 087 082
Membres
103 457
dernier inscrit
fab2614