Résolu Changer la couleur des onglets.

  • Auteur de la discussion Arno-Strasbourg
  • Date de début

Arno-Strasbourg

Nouveau membre
Bonjour à tous,

Hyper débutant en VBA, je bloque sur un os. Pas grand chose je pense. Les aficionados d'excel vont sûrement voir mon problème rapidement.
Je désire changer la couleur des onglets de mon classeur en fonction de la valeur d'une case.
Voici mon code :

JavaScript:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$N$36" Then
    If Target.Value > 0 Then
        Sh.Tab.ColorIndex = 6
    Else
        Sh.Tab.ColorIndex = 2
    End If
End If
End Sub

Las, la couleur ne change pas ! pourtant si je fais

Code:
If Target.Address = "$N$36" And If Target.Value ="" Then

Là, ça marche !! :??:

J'imagine que le problème vient de ma condition
JavaScript:
If Target.Value > 0 Then

Je vais avoir plusieurs test de valeur à faire et adapter la couleur de mon onglet en fonction de cette valeur.

Une petite idée de la syntaxe exacte ?
Merci d'avance.

Arno.
 

drul

Obscur pro du hardware
Staff
Salut,
ça marche nickel chez moi ton code ...
Tu mets quoi en N36 ?
 

Arno-Strasbourg

Nouveau membre
Salut Drul,

J'ai le résultat de plusieurs additions.
C'est le total de la colonne N.

Merci pour ton retour.
 

Arno-Strasbourg

Nouveau membre
Ca y est, j'ai compris. Il faut modifier directement la case N36 pour qu'il applique la macro. Quand celle-ci est modifiée par ailleurs, ça ne marche pas.
Vais essayer de trouver, il doit bien y avoir une solution...
 

Arno-Strasbourg

Nouveau membre
Bon, j'ai lu qu'il y a un truc avec "With Target.Parent".
J'ai essayé ça mais ça ne fonctionne pas ;

JavaScript:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$N$36" Then
    With Target.Parent
        If Target.Value = 0 Then
            Sh.Tab.ColorIndex = 2
        ElseIf Target.Value <> 37.5 Then
            Sh.Tab.ColorIndex = 3
        Else: Sh.Tab.ColorIndex = 10
        End If
    End With
End If
End Sub

Je pense ne pas être très loin de la solution. Un petit coup de pouce ??

Merci.
 

drul

Obscur pro du hardware
Staff
Meilleure réponse
Là tu appliques vraiment la maxime: "Pourquoi faire simple quand on peut faire compliqué ?" :D

Que dirais tu de:
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Range("N36").Value = 0 Then
    Sh.Tab.ColorIndex = 2
ElseIf Sh.Range("N36").Value <> 37.5 Then
    Sh.Tab.ColorIndex = 3
Else
    Sh.Tab.ColorIndex = 10
End If
End Sub

P.S. tu peux utiliser la balise [code="vb"] mieux pour les couleurs
 

Arno-Strasbourg

Nouveau membre
Merci drul,

Effectivement, c'était aussi simple que ça !!

MErci pour ton aide.

Bonne journée.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 125
Messages
6 717 794
Membres
1 586 364
Dernier membre
ilyesrd
Partager cette page
Haut