Problème gestion des Couleurs Onglet

Bonjour à tous,

Dans le fichier que vous trouverez en PJ, j'essaie de mettre une couleur déterminée aux onglets en fonction du statut de la cellule B4 de chacun

J'ai ce VBA, mais il fait n'importe quoi au niveau des couleurs des onglet. Il me mets des couleurs qui ne sont pas définis dans mes paramètres

Private Sub Worksheet_Calculate()
If [B4] = "lots conformes" Then
ActiveSheet.Tab.ColorIndex = 43
ElseIf [B4] = "lots trop lents sortie étuve" Then
ActiveSheet.Tab.ColorIndex = 27
ElseIf [B4] = "lots rapides sortie étuve" Then
ActiveSheet.Tab.ColorIndex = 55
ElseIf [B4] = "lots trop rapides sortie géluleuse" Then
ActiveSheet.Tab.Color = RGB(255, 0, 0)
ElseIf [B4] = "lots trop lents après géluleuse" Then
ActiveSheet.Tab.ColorIndex = 33
ElseIf [B4] = "lots en investigation" Then
ActiveSheet.Tab.ColorIndex = 39
ElseIf [B4] = "lot en attente de resultat" Then
ActiveSheet.Tab.ColorIndex = 15
ElseIf [B4] = "Pas de donnée" Then
ActiveSheet.Tab.ColorIndex = 22
End If
End Sub
23charles.xlsm (218.27 Ko)

Par ailleurs, les onglets "légende" et "BDD" se colore alors qu'il n'y a pas de code ,

Si vous aviez une idée pour résoudre ce petit soucis

Merci de votre aide

Prenez soins de vous

Charles

Salut Charles,

j'ai supprimé tous tes Worksheet_Calculate() et mis ceci dans 'ThisWorkbook'...
Je ne me suis pas amusé à corriger tous les onglets : il faudra que tu fasses les manip'...

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
If Sh.Name <> "Légende" And Sh.Name <> "BDD" Then _
    If Not Intersect(Target, Sh.Range("B4")) Is Nothing Then _
        Sh.Tab.Color = Worksheets("Légende").Columns(2).Find(what:=Sh.Range("B4").Value, lookat:=xlWhole, LookIn:=xlValues).Offset(0, 2).Interior.Color
'
End Sub
13charlesvi.xlsm (188.02 Ko)


Joyeuses Fêtes !

A+

J'avais commencer une solution, comme curulis57, en passant par 'ThisWorkbook', mais j'ai eu plus ou moins le même problème que toi, j'ai régler le problème des couleurs sur "Légende" et "BDD", mais les couleurs ne respectait pas les critère données.

Même ça n'a pas marché :

Dim ws as Worksheet

For Each ws in ActiveWorkbook.Worksheet
Activeworksheet.Tab.Colorindex = XlNone
Next

Et je n'ai toujours pas compris pourquoi.. ?

Salut Evan,

Dim ws As Worksheet
'
For Each ws In ThisWorkbook.Worksheets
    ws.Tab.ColorIndex = XlNone
Next

- ThisWorkbook.Worksheets ;
- Activeworksheet.Tab.Colorindex = XlNone ne risque pas d'aller puisque tu restes sur la même feuille :
Utilise au moins ta variable ws...
- ws.Tab.ColorIndex = XlNone


A+

Excellent @curulis57

Fonctionne parfaitement, merci beaucoup pour ton aide

Passez tous de Bonnes Fêtes de fin d'année

Charles

Merci Curulis pour ton explication, je me sens bête maintenant :')
Bonne fêtes a tous

Rechercher des sujets similaires à "probleme gestion couleurs onglet"