Couleur d'onglet via VBA suivant année ?

Bonjour,

Comment je puisse adapter cette formule :

Function CouleurdesOnglets(ByVal Coul%)
If Coul < 0 Then Coul = -4142
Application.Caller.Worksheet.Tab.ColorIndex = Coul
End Function

Afin d'avoir par exemple :

J'ai des onglets avec du texte et des onglet avec années 2013,2014,2015,2016,2017,2018

Donc comment avoir une couleur pour l'année actuelle 2016 ==> VERT

une couleur pour les années avant 2016 ==> ROUGE

pour les années après 2016 ==> JAUNE

Sachent que dans une cellule de chaque année j'ai ceci comme code :

=CONCATENER("Janvier";" ";STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32))

Merci pour votre aide

Bonjour,

voilà :

Private Sub Workbook_SheetActivate(ByVal sh As Object)

MiseAjourCouleur
End Sub

Private Sub MiseAjourCouleur()
  Dim sh As Worksheet
  Dim lAn As Long
  For Each sh In ThisWorkbook.Worksheets
   If IsNumeric(sh.Name) Then lAn = CInt(sh.Name) Else lAn = 0
    If lAn > 2000 And lAn < 3000 Then 'pour élimier les valeurs textuelle
        If lAn > Year(Now) Then sh.Tab.Color = vbYellow
        If lAn = Year(Now) Then sh.Tab.Color = vbGreen
        If lAn < Year(Now) Then sh.Tab.Color = vbRed
    End If
  Next
End Sub
 

Bonjour

Bonjour pierre.jy

Ta formule

=CONCATENER("Janvier";" ";STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32)) en A1

Dans n'importe quelle cellule tape

=SI(ANNEE(A1)<ANNEE(AUJOURDHUI());CouleurdesOnglets(3);SI(ANNEE(A1)>ANNEE(AUJOURDHUI());CouleurdesOnglets(6);CouleurdesOnglets(4)))

Tu auras automatiquement la bonne couleur des onglets

Merci Banzai64,

Est-ce que le code je dois mettre dans la feuille ou dans thisworkbook ?

Puis est-ce que ce code vas afficher tout le temps les couleur des onglets ou seulement quand ils ont activer. Ce que je cherche c'est que les onglets ont déjà ces couleur lors d'ouverture de fichier

Bonjour

La macro (Fonction) est à placer dans un module standard

La formule est à placer dans n'importe quelle cellule de chaque page comme ton autre formule


Merci je viens d'essayer,

J'ai mis la fonction (Macro) dans un module, puis dans une cellule de chaque feuille j'ai mis la formule mais j'obtiens cette erreur :

Private Sub Workbook_SheetActivate(ByVal sh As Object)
  'couleur des onglet
 MiseAjourCouleur

  VSht = sh.Name 'affichage msg nom de la feuille
  ChangementFeuille.Show 0
  NextTime = Now + TimeValue("00:00:01")
  Application.OnTime NextTime, "FermerUSF"
  ActiveSheet.Range("J7").Select

End Sub

Erreur de compliation Sub ou Function non definie MiseAJourCouleur ?

La Macro est mis dans un modul avec option explicit et sheetactivat est mis dans le code pour thisworkbook

Merci pour aide

Et pour avoir des onglet deèa en couleur à l'ouverture je dois mettre dans thiswookbook open ?


Merci j'ai supprimer private et j'ai mis dès que j'ouvre le fichier et j'ai donc les onglets en couleur donc merci Banzai64 pour aide

re,

nunizgb , il vas falloir que tu "tri" un peu, il n'est pas question de formule dans ma réponse ... tu as un peu mélangé ma solution avec celle de banzai .. .

pour "ma" solution pas besoin d'ajouter de formules ...

pour la solution à banzai tu n'as pas besoin de la procédure "Miseajourcoleur.."

Encore une question Banzai64 comment je puis avoir une couleur par exemple Blue pour onglet active et qui redevient comme avant.

Exemple 2018 est en JEUNE puis quand j'active elle devient blue puis quand j'active une autre 2018 devient JEUNE ?


Merci pierre.jy

En fait les réponse ce sont croiser la prochaine fois j'y vais regarde un peu mieux et actualiser mon navigateur

Bonjour

La formule va replacer la bonne couleur dès qu'il y aura un calcul dans la page

Donc pas possible avec la formule, il faut passer par macro

Merci Banzai64,

Et comment en fait via vba avec la fonction de pierre.jy ?

Rechercher des sujets similaires à "couleur onglet via vba suivant annee"