Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

couleur onglets en fonction de la date

  • Initiateur de la discussion Initiateur de la discussion folkcyrus
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

folkcyrus

Guest
Bonsoir,
J'ai trouvé plusieurs réponses pour mettre un onglet en couleur.
Ce que je voudrais c'est qu'en ouvrant le fichier, l'onglet qui correspond au mois en cours soit en couleur et si c'est possible que la feuille s'ouvre sous cet onglet.
Est-ce possible ?

Merci
Hélène
 

Pièces jointes

Re : couleur onglets en fonction de la date

Bonsoir Hélène

mettre le code dans l'événement workbook_open

VB:
Dim mois As Integer
Dim folio As Worksheet
  mois = Month(Date)
  
  For Each folio In Worksheets
    If ((folio.Name = "SEPT") And (mois = 9)) Or ((folio.Name = "OCT") And (mois = 10)) Or ((folio.Name = "DEC") And (mois = 11)) Then
      folio.Tab.ColorIndex = 3
      folio.Activate
    Else
      folio.Tab.ColorIndex = xlColorIndexNone
    End If
  Next folio

j'avoue que le test if () or () or () then ne me plait pas si quelqu'un a une idée je suis preneur
 
Re : couleur onglets en fonction de la date

Bonjour,
et merci de vos réponses;
Est-il possible qu'un fichier se ferme avec un onglet ouvert et qu'il s'ouvre systématiquement avec l'onglet correspondant à la date du jour ?

Je n'arrive pas à faire fonctionner le deuxième code. Je suis très peu expérimentée avec excel.

Merci encore
Hélène
 
Dernière modification par un modérateur:
Re : couleur onglets en fonction de la date

Bonjour
Mon grain de sel

VB:
Option Explicit


Private Sub Workbook_Open()
Dim I As Integer
Dim Nom As String

  Nom = Left(UCase(Format(Date, "mmmm")), 3)
  For I = 1 To Sheets.Count
    Sheets(I).Tab.ColorIndex = xlNone
  Next I
  On Error Resume Next
  With Sheets(Nom)
    .Tab.ColorIndex = 3
    .Select
  End With
  If Err > 0 Then MsgBox "Feuille " & Nom & " inexistante"
  On Error GoTo 0

End Sub


Une seule contrainte le nom des feuilles seulement 3 caractères
 
Re : couleur onglets en fonction de la date

Bonsoir
et merci ...

Pourriez-vous me dire pourquoi ceci affiche une erreur de compilation ?

Private Sub Workbook_Open()
Dim mois As Integer
Dim folio As Worksheet
mois = Month(Date)

For Each folio In Worksheets

If ((folio.Name = "SEPT") And (mois = 9))Or ((folio.Name = "OCT") And (mois = 10)) Or ((folio.Name = "NOV") And (mois = 11))Or ((folio.Name = "DEC") And (mois = 12))Or ((folio.Name = "JAN") And (mois = 1))Or ((folio.Name = "FEV") And (mois = 2))Or ((folio.Name = "MARS") And (mois = 3) Or ((folio.Name = "AVRIL") And (mois = 4)) Or ((folio.Name = "MAI") And (mois = 5)) Or ((folio.Name = "JUIN") And (mois = 6)) Or ((folio.Name = "JUIL") And (mois = 7))Then

folio.Tab.ColorIndex = 3
folio.Activate
Else
folio.Tab.ColorIndex = xlColorIndexNone
End If
Next folio
End Sub
 
Re : couleur onglets en fonction de la date

RE folkcurus

Bonsoir folkcyrus, le fil,

Il faut toujours éviter d'écrire des lignes de conditions à rallonge : il est préférable d'utiliser un aiguillage de type Select Case ... End Select (voir aide VBA pour la syntaxe exacte).

Par contre, si ton classeur ne contient que les 12 feuilles correspondantes aux 12 mois de l'année, voici une solution plus concise :

Code:
Sub Workbook_Open()
Dim mois As Integer
Dim folio As Worksheet
Dim NomMois(12) As String

mois = Month(Date)
For Each folio In Worksheets
  NomMois(folio.Index) = folio.Name
  folio.Tab.Color = xlColorIndexNone
Next folio
Sheets(NomMois(mois)).Tab.ColorIndex = 3
Sheets(NomMois(mois)).Activate
End Sub

Cette macro commence par définir le numéro du mois en cours, puis la boucle balaie les 12 feuilles, enregistre le nom de ces feuilles dans un tableau de variables, et réinitialise le format de l'onglet. Il ne reste plus qu'à formater l'onglet du mois en cours et à l'activer, dans les 2 dernières lignes.

Je rappelle que cette macro ne fonctionnera correctement que s'il n'y a pas d'autres feuilles que les feuilles mensuelles. Dans le cas contraire, il faudra alors définir le tableau des variables en toutes lettres dans le début de la macro. On perdra alors le bénéfice de la mise à jour automatique des onglets en cas de changement de nom de l'onglet.

Espérant avoir contribué utilement.

Cordialement.
 
Dernière édition:
Re : couleur onglets en fonction de la date

Bonjour,
Merci l'erreur est partie en effet.
Cependant les onglets de mon fichier ne suivent pas l'ordre des mois de la semaine.
Feuil1=SEPT
Feui2=OCT
Feuil3=NOV
et ce jusqu'à juillet, je n'utilise pas le mois d'août où les enfants sont en vacances.
Dans l'exemple que vous m'avez donné, l'onglé en surbrillance est celui qui correspond à l'onglet 10 càd dans mon fichier le mois de juin.

Y aurait-t-il une autre solution ?

Merci
Hélène
 
Re : couleur onglets en fonction de la date


Bonjour Hélène,

Il y a effectivement toujours d'autres solutions en VBA Excel.

Celle-ci devrait répondre au mieux à ta demande précise :

Code:
Private Sub Workbook_Open()
Dim folio As Worksheet
Dim Mois As Variant

' Création du tableau des mois
' Il faut modifier ce tableau en cas de modification des noms de feuilles
Mois = Array(" ", "JAN", "FEV", "MAR", "AVR", "MAI", "JUN", "JUL", "AOU", "SEPT", "OCT", "NOV", "DEC")
' Remise à blanc du format des onglets
For Each folio In Worksheets
  folio.Tab.Color = xlColorIndexNone
Next folio
On Error Resume Next ' poursuit le programme si la feuille n'existe pas
' Mise en surbrillance et activation de la feuille du mois en cours
Sheets(Mois(Month(Date))).Tab.ColorIndex = 3
Sheets(Mois(Month(Date))).Activate
End Sub

En te souhaitant un bon dimanche.

Cordialement.
 
Dernière édition:
Re : couleur onglets en fonction de la date

Ta macro me convient très bien merci, mais j'ai un petit soucis, mon msgbox ne fonctionne plus, merci pour votre aide.😀

Code:
Private Sub Workbook_Open()
If Day(Now) = 25 Then MsgBox "Attention le 25 du mois !"


Dim folio As Worksheet
Dim Mois As Variant

' Création du tableau des mois
' Il faut modifier ce tableau en cas de modification des noms de feuilles
Mois = Array(" ", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
' Remise à blanc du format des onglets
For Each folio In Worksheets
  folio.Tab.Color = xlColorIndexNone
Next folio
On Error Resume Next ' poursuit le programme si la feuille n'existe pas
' Mise en surbrillance et activation de la feuille du mois en cours
Sheets(Mois(Month(Date))).Tab.ColorIndex = 3
Sheets(Mois(Month(Date))).Activate
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
371
Réponses
3
Affichages
499
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…