Mise en forme conditionnel couleur d'onglet

Bonjour,

J'ai besoin de votre aide encore..

J'ai un fichier avec plusieurs onglets que j'aimerais colorer en vert une fois certaines cellules remplis.

C'est un fichier de check quotidien, il faudrait donc dans les conditions se baser sur le calendrier présent dans le fichier et vérifier dans la ligne du jour que tout est bien rempli.

Ça sera plus simple de regarder sur le fichier en PJ.

Sur l'exemple, pour aujourd'hui si la colonne du lundi 11,qui pour cet onglet correspond juste à 2 cellules, L8 et L9 est rempli comme sur le fichier, j'utilise "satisfaisant", "insatisfaisant" ou "neutre" pour le remplir, il faudrait que l'onglet se colore en vert.

L'onglet est un exemple, sur tous mes onglets le calendrier est disposé au même endroit, par contre les cellules à contrôler sont différentes d'un onglet à l'autre.

52classeur1-for.xlsx (21.75 Ko)
52classeur1-for.xlsx (21.75 Ko)

J'espère avoir été le plus clair possible.

Bonjour,

Je ne connais pas ton degré de familiarité avec Excel et les macros évènementielles ...

Mais, à titre d'exemple un Worksheet_Calculate() ... fera sans doute l'affaire ...

Merci James pour ton retour.

Je suis pas du tout au fait sur le sujet mais j'y travail.

C'est un peu complexe pour un néophyte comme moi.

Je vais en tout cas explorer cette voie.

J'ai testé avec Worsheet_SelectionChange.

Ça a bien coloré mon onglet, mais mon onglet reste colorié qu'il est une couleur dans la cellule sélectionnée ou pas.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("m8") <> xlColorIndexNone Then

With ActiveWorkbook.Sheets("Feuill").Tab

.Color = 5287936

.TintAndShade = 0

End With

Else

If Range("m8") = xlColorIndexNone Then

With ActiveWorkbook.Sheets("Feuill").Tab

.ColorIndex = xlColorIndexNone

End With

End If

End If

End Sub

Il faudra ensuite que je fixe le range par rapport au calendrier..

C'est pas gagné tout ça.

Re,

Je ne saisis pas très bien pourquoi tu as choisi Worsheet_SelectionChange() ...

A mon avis, cela ne correspond pas à ton objectif ...

Personnellement, je te conseille de tester soit Worksheet_Calculate() ou Worsheet_Change() .....

En fait j'ai trouvé ça en farfouillant un peu.

Worksheet_Change

Private Sub Worksheet_Change(ByVal Target As Range)

Cet évènement est déclenché lorsque le contenu d'une cellule est modifiée dans la feuille.

La procédure ne prend pas en compte la modification des mises en forme dans la cellule. Consultez l'exemple proposé dans le chapitre Worksheet_SelectionChange pour identifier la modification d'une mise en forme.

Nota:

Cet événement ne se produit pas si la feuille vient d'être recalculée (Utilisation de la touche F9 en mode calcul sur ordre).

Le paramètre Target correspond à la cellule modifiée.

Du coup je dirigé sur le SelectionChange..

Re,

Au risque de me répéter ...

Je te conseille de tester soit Worksheet_Calculate() ou Worsheet_Change() .....

Peux-tu, dans ton prochain message, faire une liste très claire de tes conditions ???

Merci James pour tes conseils.

Je remets un fichier en PJ avec deux onglets, un onglet Param et un onglet Test qui correspond à un client.

Le fichier en Prod contient 30 onglet.

Dans l'onglet Param on retrouve un calendrier sur lequel est basé le reste des onglets.

Dans l'onglet Test, chaque jour je dois contrôler via des mails des rapports de sauvegarde.

Une fois le contrôle fait, je rempli mon tableau avec les mises en formes style "Satisfaisant", "Insatisfaisant" ou "Neutre".

Mon but est qu'une fois tous les contrôles effectués pour un client pour la journée, sur le fichier joint ça correspond donc pour ce jour aux cellules N8 et N9, l'onglet du client se colorise en vert.

Mon calendrier est positionné exactement au même endroit sur tous mes onglets.

La seule différence dans les onglets ce situe au niveau du nombre de ligne à contrôler.

59classeur1-for.xlsx (23.17 Ko)

Re,

Dans la mesure où tu ne fais que modifier manuellement la couleur des cellules en lignes 8 et 9 ... il te faut utiliser la touche F9 pour effectuer le rafraîchissement ...

Ci-joint ton fichier test ...

167test-vince2974.xlsm (30.96 Ko)

Tu es trop balaise.

Je vais décortiquer tout ça pour comprendre ce que je fait et l'appliquer sur mon fichier de prod.

Je te dois une reconnaissance éternel.

Merci beaucoup.

Tu es trop balaise.

Je vais décortiquer tout ça pour comprendre ce que je fait et l'appliquer sur mon fichier de prod.

Je te dois une reconnaissance éternel.

Merci beaucoup.

Content que cela corresponde à ton attente ...

Merci ... pour tes remerciements ...

Vraiment désolé, encore une question..

Sur cette ligne :

If Cells(8, y).Interior.ColorIndex > 1 And Cells(9, y).Interior.ColorIndex > 1 Then

J'aimerais si possible indiquer à excel en une seul fois le numéro des lignes à vérifier.

J'ai des onglets avec une centaine de lignes ça va vite devenir compliquer.

J'ai testé ça sans succès

If rows ("8:9"),y).Interior.ColorIndex > 1 Then

A priori, ça passe comme ça tout simplement

If Cells(8, 9, y).Interior.ColorIndex > 1 Then

Bah non échec, j'ai envoyé le msg trop vite

Re,

Si tu dois balayer de grandes plages, tu vas avoir besoin d'une boucle ...

Sub TestPlage()
Dim c As Range
Dim plage As Range
Application.ScreenUpdating = False
Set plage = Range(Cells(8, y), Cells(208, y))
  For Each c In plage
    If c.Interior.ColorIndex > 1 Then
      Me.Tab.Color = vbGreen
    Else
      Me.Tab.Color = vbRed
    End If
  Next c
Application.ScreenUpdating = True
End Sub

En espérant que cela t'aide ...

A priori, ça passe comme ça tout simplement

If Cells(8, 9, y).Interior.ColorIndex > 1 Then

Bah non échec, j'ai envoyé le msg trop vite

Re,

Attention... cette instruction ne va pas passer ...

P.S.

Au fait ... est-ce que tu as un couleur et donc un ColorIndex bien déterminé ...???

C'est parfait avec la plage ça fonctionne nickel

J'ai plus qu'à l'appliquer sur tout mes onglets.

Merci mille fois pour ton aide

C'est parfait avec la plage ça fonctionne nickel

J'ai plus qu'à l'appliquer sur tout mes onglets.

Merci mille fois pour ton aide

Re,

Ravi que cela fonctionne comme tu le souhaites ...

Merci ... pour tes remerciements ...

Rechercher des sujets similaires à "mise forme conditionnel couleur onglet"