Couleur d'un onglet en fonction de la valeur d'une cellule

Bonjour, je souhaiterais par rapport au fichier joint, colorier uniquement les onglets se rapportant aux jours :

Samedi en bleu

Dimanche en rouge

Jours Fériés en rouge

Le fichier n'est pas terminé car trop volumineux, mais il y a déjà un samedi et un dimanche, je pense qu'il doit falloir faire du VBA (mais là mes compétences sont très limites).

Encore merci pour votre aide

Bonjour,

Clic droit sur l'onglet et "Couleur d'onglet"

Merci mais cette fonctionnalité je la connaissais, mais je pense qu'il est possible avec une macro d'attribuer la couleur d'un onglet en fonction de la valeur d'une cellule.

Ha Ok, alors c'est avec la propriété "Tab" qu'il faut jouer :

If ActiveCell.Value = 10 Then

    Worksheets("Feuil1").Tab.ColorIndex = 3

End If

Merci

J'ai collé ton code dans visualbasic this workbook, mais rien ne ce passe, que faut-il que je fasse afin d'activer ton code.

Tu n'as aucune connaissance de vba ?

Dans ce cas, tu colles le code ci-dessous dans un module standard, tu entres la valeur 10 dans une cellule que tu sélectionnes puis tu pose le curseur dans la procédure (n'importe où du moment qu'il se trouve entre Sub et End Sub) et tu appuis sur la touche F5, l'onglet se colorera en rouge :

Sub Test()

    If ActiveCell.Value = 10 Then

        Worksheets("Feuil1").Tab.ColorIndex = 3

    End If

End Sub

Bonjour Snowkite, Theze

J'interviens pour une petite remarque sur ton fichier....

Snowkite a écrit :

Le fichier n'est pas terminé car trop volumineux, mais il y a déjà un samedi et un dimanche, je pense qu'il doit falloir faire du VBA (mais là mes compétences sont très limites).

heureusement qu'il n'y a que 31 jours maximum par mois et que 12 mois, sinon tu passerais plus de temps à parcourir les onglets qu'a faire le pointage

Encore une fois, sans vouloir vexer, il serait temps de penser informatique et non papier-crayon... Excel n'est (pas plus qu'un ordinateur avec n'importe quel langage ou logiciel) pas prévu pour servir de photocopieur...

Quelle différence notable y a-t-il entre les différents onglets de ton classeur si ce n'est la date...

Pourquoi ne pas faire un calendrier par mois sur 12 onglets, ou mieux encore un calendrier perpétuel sur un seul onglet...

Pourquoi ce procédé parce qu'aussi lorsque viendra le temps de faire des stats quelconques sur ton application il faudra concevoir de relire à chaque fois les mêmes listes d'agents sur 365 onglets (12 classeurs de 31 onglets - selon l'organisation) alors qu'une présentation de ce style sera nettement suffisante et beaucoup plus confortable à la longue... et les évolutions et autres améliorations grandement facilitées

52fichepointage-v1.xlsm (124.05 Ko)
Theze a écrit :

Tu n'as aucune connaissance de vba ?

Dans ce cas, tu colles le code ci-dessous dans un module standard, tu entres la valeur 10 dans une cellule que tu sélectionnes puis tu pose le curseur dans la procédure (n'importe où du moment qu'il se trouve entre Sub et End Sub) et tu appuis sur la touche F5, l'onglet se colorera en rouge :

Sub Test()

    If ActiveCell.Value = 10 Then

        Worksheets("Feuil1").Tab.ColorIndex = 3

    End If

End Sub

A première vue cela ne marche pas, ce que j'aimerais c'est que lorsque la cellule F4 d'un onglet affiche "samedi" l'onglet soit de couleur bleu et que lorsque la cellule F4 d'un onglet affiche "dimanche" soit de couleur rouge.

Bonjour,

A mettre dans le module du classeur (ThisWorkbook). Cette procédure sera exécutée à chaque sélection d'onglet. Les onglets de feuilles ayant pour valeur en F4 samedi ou dimanche,seront colorés en bleu ou rouge :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim Fe As Worksheet

    For Each Fe In Worksheets

        Fe.Tab.ColorIndex = xlColorIndexNone
        If Fe.Range("F4").Value = "samedi" Then Fe.Tab.ColorIndex = 5
        If Fe.Range("F4").Value = "dimanche" Then Fe.Tab.ColorIndex = 3

    Next Fe

End Sub

Bonjour et encore merci pour ton aide, j'ai bien inséré ton code dans (ThisWorkbook) mais cela à 1ère vue ne fonctionne pas (à moins que je ne sache pas l'activer).

Je te joins le fichier afin que tu puisses éventuellement m'expliquer ce que je ne fais pas correctement

Encore merci de ton aide.

Theze a écrit :

Bonjour,

A mettre dans le module du classeur (ThisWorkbook). Cette procédure sera exécutée à chaque sélection d'onglet. Les onglets de feuilles ayant pour valeur en F4 samedi ou dimanche,seront colorés en bleu ou rouge :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim Fe As Worksheet

    For Each Fe In Worksheets

        Fe.Tab.ColorIndex = xlColorIndexNone
        If Fe.Range("F4").Value = "samedi" Then Fe.Tab.ColorIndex = 5
        If Fe.Range("F4").Value = "dimanche" Then Fe.Tab.ColorIndex = 3

    Next Fe

End Sub

Bonjour,

Ta valeur est issue d'une formule donc ce que je t'ai donné ne peu pas fonctionner !

Voici le code modifié qui lui devrait fonctionner. En utilisant la fonction "InStr()" sur la fonction "Format()" qui retourne un String (toujours dans le module du classeur) :

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim Fe As Worksheet

    For Each Fe In Worksheets

        Fe.Tab.ColorIndex = xlColorIndexNone

        If InStr(Format(Fe.Range("F4").Value, "dddd mmm yyyy"), "samedi") <> 0 Then Fe.Tab.ColorIndex = 5
        If InStr(Format(Fe.Range("F4").Value, "dddd mmm yyyy"), "dimanche") <> 0 Then Fe.Tab.ColorIndex = 3

    Next Fe

End Sub

Merci beaucoup cela marche nickel, mais j'ai un message d'erreur de VBA

message erreur vba

Bonjour,

Je soupçonne que dans un ou plusieurs onglets il n'y a pas de date en F4 donc il faut tester si il y a une. Remplace tout le code que je t'ai donné par celui-ci, la procédure sera exécutée à chaque calcul de la feuille de cette façon, si la date change, la couleur de l'onglet sera défini en fonction :

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

    'supprime d'office la couleur !
    Sh.Tab.ColorIndex = xlColorIndexNone

    'et si c'est une date, colore si c'est un samedi ou dimanche sinon, pas de couleur
    If IsDate(Sh.Range("F4").Value) Then

        If InStr(Format(Sh.Range("F4").Value, "dddd mmm yyyy"), "samedi") <> 0 Then Sh.Tab.ColorIndex = 5
        If InStr(Format(Sh.Range("F4").Value, "dddd mmm yyyy"), "dimanche") <> 0 Then Sh.Tab.ColorIndex = 3

    End If

End Sub

Au top, cela marche nickel.

Bravo à toi et encore merci

Bonjour, je relance le sujet, car après avoir réussit à colorier les onglets pour les samedi et dimanche, j'aimerais pouvoir faire de même lorsqu'il s'agit d'un jour férié (couleur de l'onglet en jaune). Bien entendu tout cela en passant par du code VBA

Merci pour votre aide

Ne faut-il pas créer une formule et là mettre en dure dans du code VBA?

Rechercher des sujets similaires à "couleur onglet fonction valeur"