Coloration d'un onglet selon valeur.

Igl0

XLDnaute Nouveau
Bonjour à tous,
J'ai un classeur excel dans lequel la cellule AX9 renvoie une valeur.
Je cherche à faire une macro qui me colorierait l'onglet en vert si AX9 > 1 et en rouge si c'est = 0.
Pouvez-vous m'aider ?
Merci.
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Coloration d'un onglet selon valeur.

Re,

à mettre dans le code de la feuille concernée

Code:
Private Sub Worksheet_Calculate()
    With ActiveSheet.Tab
        .TintAndShade = 0
        If Range("AX9").Value >= 1 Then
            .Color = 5296274
        Else
            .Color = 255
        End If
    End With
End Sub

Edit : Oups, ça a tendance à mettre de la couleur pas forcément sur le bon onglet mais sur l'onglet actif
ça devrait être mieux comme ça :

Code:
Private Sub Worksheet_Calculate()
    With Range("AX9").Parent.Tab
        .TintAndShade = 0
        If Range("AX9").Value >= 1 Then
            .Color = 5296274
        Else
            .Color = 255
        End If
    End With
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Coloration d'un onglet selon valeur.

Bonjour à tous

Si toutes les feuilles sont concernées
Tu peux aussi essayer ceci (à mettre dans ThisWorkBook)

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.Tab.ColorIndex = IIf(Sh.[AX9] >= 1, 4, 3) 
End Sub

Tu peux choisir un autre événement si celui-là ne te convient pas.
 

Staple1600

XLDnaute Barbatruc
Re : Coloration d'un onglet selon valeur.

Re,

Finalement, cela colle plus à tes critères

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Not IsEmpty(Sh.[AX9]) Then
Sh.Tab.ColorIndex = Switch(Sh.[AX9] >= 1, 4, Sh.[AX9] = 0, 3)
End If
End Sub

Et pour le fun, tu peux aussi l'écrire ainsi
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Not IsEmpty(Sh.[AX9]) Then
Sh.Tab.ColorIndex = 3 - (Sh.[AX9] >= 1)
End If
End Sub
 
Dernière édition:

Igl0

XLDnaute Nouveau
Re : Coloration d'un onglet selon valeur.

Bonjour à tous, je me demandais si on pouvait adapter ce code de la manière suivante (toujours pour AX9) :
Si < -5 rouge, si entre 0 et - 5 orange et si positif vert.
Je pensais à adapter le code comme suit, mais ça n'a pas l'air de fonctionner.

Code:
Private Sub Worksheet_Calculate()
    With Range("AX9").Parent.Tab
        .TintAndShade = 0
        If Range("AX9").Value =< -5 Then
            .Color = 5296274
        Else
             If Range("AX9").Value < -4 And < 0 Then
            .Color = 49407
             End If
        Else
             .Color = 255
        End If
    End With
End Sub

Pouvez-vous m'indiquer ou est mon erreur svp ?
 

tototiti2008

XLDnaute Barbatruc
Re : Coloration d'un onglet selon valeur.

Bonjour à tous,

Peut-être, vois si les bornes sont correctes pour ton besoin

Code:
    With Range("AX9").Parent.Tab
        .TintAndShade = 0
        If Range("AX9").Value <= -5 Then
            .Color = 5296274
        ElseIf Range("AX9").Value > -5 And Range("AX9").Value < 0 Then
            .Color = 49407
        Else
             .Color = 255
        End If
    End With
 

Igl0

XLDnaute Nouveau
Re : Coloration d'un onglet selon valeur.

Merci beaucoup, les valeurs dans AX9 étant un pourcentage, j'ai adapté le code comme suit :

Code:
Private Sub Worksheet_Calculate()
       With Range("AX9").Parent.Tab
         .TintAndShade = 0
         If Range("AX9").Value <= -0.05 And Range("AX9").Value >= 0 Then
             .Color = 5296274
         ElseIf Range("AX9").Value > -0.05 And Range("AX9").Value < 0 Then
             .Color = 49407
         Else
              .Color = 255
         End If
     End With
End Sub

J'ai une dernière question. Je voudrais savoir comment faire pour appliquer la macro à l'ensemble du classeur et non plus à une seule feuille.
La je sèche complètement...
A bientôt !
 

Discussions similaires

Réponses
21
Affichages
919

Statistiques des forums

Discussions
312 790
Messages
2 092 126
Membres
105 227
dernier inscrit
Hamdi belhaj Farhat