macro pour 4 couleurs conditionnelles

  • Initiateur de la discussion Initiateur de la discussion dedef
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dedef

XLDnaute Occasionnel
Bonjour,
je veux coloriser des cellules d'un onglet sous conditions. Comme j'ai 4 valeurs possibles, je crois qu'il faut passer par une macro. Malheureusement je n'y connais absolument rien en macro.

Après avoir cherché, il me semble que ma macro devrait ressembler à ça :
Sub couleur()
Dim cell As Range
For Each cell In Range("I3:I104")
Select Case cell.Value
Case Is = 0
cell.Interior.ColorIndex = 0
Case Is = 1
cell.Interior.ColorIndex = 3
Case Is = 2
cell.Interior.ColorIndex = 4
Case Is = 3
cell.Interior.ColorIndex = 5
End Select
Next
End Sub

Mon problème, c'est que je ne sais pas comment affecter cette macro au bon onglet (T1) et la faire tourner en permanence. J'ai essayé avec
For Each cell In Range("'T1'!I3:'T1'!I104")
mais il ne se passe rien.

Quelqu'un peut-il me donner un coup de main?

Merci d'avance.
 
Re : macro pour 4 couleurs conditionnelles

Rebonjour,

la macro fonctionne bien, mais j'ai encore un petit problème :
les cellules à colorier sont remplies au travers d'une liste déroulante et quand on change la valeur, le format de la cellule change : suppression des caractères gras, modification de la taille de la police, décentrage vertical et horizontal, l'encadrement de la cellule.

Y a-t'il une solution à ce problème?

Merci d'avance.
 
Dernière édition:
Re : macro pour 4 couleurs conditionnelles

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([ChampMFC], Target) Is Nothing Then
    On Error Resume Next
    Target.Interior.ColorIndex = [couleurs].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
  End If
End Sub

JB
 

Pièces jointes

Re : macro pour 4 couleurs conditionnelles

Si j'osais, ... 😱

Dans une autre partie de mon fichier la valeur change non pas au travers d'une liste déroulante, mais par une fonction de calcul:
- la solution n'est donc pas forcément un nombre fini : est-il possible d'affecter la couleur à un intervalle?
- même si le résultat est un entier (comme pour la liste déroulante), une nouvelle valeur calculée ne modifie pas la couleur (la cellule reste sur la couleur initiale)

Je n'ose pas dire "merci d'avance".
 
Re : macro pour 4 couleurs conditionnelles

Salut...

Pour un changement de couleur selon la valeur entrée j'ai modifié ta macro en feuil1:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cell As Range
For Each cell In Range("I3:I104")
Select Case cell.Value
Case 0
cell.Interior.ColorIndex = 0
Case 1
cell.Interior.ColorIndex = 3
Case 2
cell.Interior.ColorIndex = 4
Case 3
cell.Interior.ColorIndex = 5
End Select
Next
End Sub

Voila...
 
Re : macro pour 4 couleurs conditionnelles


Bonsoir,
J'ai encore quelques problèmes de mise en forme :
Les cellules dont la couleur doit changer sont dispersées sur ma feuille.
Il semble qu'il soit impossible de rentre plus de 8 zones (en maintenant la touche "ctrl") dans la référence du champ "zonecalcul". Par ailleurs, si j'étends "zonecalcul" à toute la surface intégrant les cellules qui m'intéressent, je récupère de la couleur là où cela ne m'intéresse pas.
Y-a-t'il une solution?

Merci d'avance.
 
Re : macro pour 4 couleurs conditionnelles

Bonjour,

Utiliser Union(zone1,Zone2,...).

Code:
Private Sub Worksheet_Calculate()
  For Each c In Union([ZoneCalcul], [laZone])
    p = Application.Match(c.Value, Sheets("couleurs").Range("couleursNB"), 1)
    If Not IsError(p) Then
      c.Interior.ColorIndex = Sheets("couleurs").Range("couleursNB")(p).Interior.ColorIndex
    End If
  Next
End Sub

JB
 

Pièces jointes

Re : macro pour 4 couleurs conditionnelles

Encore merci,
Comme j'ai plus de 16 zones (en fait 22!), réparties sur 2 onglets, j'imagine que je peux écrire Union ({Zone1],[zone2],[zone3]) (j'ai cherché la syntaxe sur internet, mais je ne l'ai pas trouvée!).

Par ailleurs, j'ai un problème bizarre : les macros ne fonctionnent plus, ni sur mon portable (excel 2000) ni sur mon fixe (excel 2003) : j'ai complété des zones actives sur l'onglet MFCcouleurs (dans zone de calcul et zone D20)et elles restent blanches.
J'ai pourtant les options de sécurité macros au mini!!!

Toutes les autres macros que j'ai enregistrées (tri, mise en forme, ...) sur le fichier surlequel je travaille qui apparaissent, elles, sur un module et non sur une des feuilles dans l'éditeur VBA fonctionnent parfaitement!

Comme la macro "couleur" que je veux utiliser doit porter sur 2 feuilles, faut-il l'enregistre 2 fois?
 

Pièces jointes

Dernière édition:
Re : macro pour 4 couleurs conditionnelles

En fait je me suis aperçu que si j'écris directement un nombre, il ne se colorie pas; par contre si je mets une formule (par exemple =B3 dans la cellule H25) ou simplement si je vais sur une formule déjà existante et la revalide dans la barre de formule, tout le tableau se met à jour, y compris les nombres rentrés directement à la main auparavant.

Je vais donc explorer cette piste.
 
Re : macro pour 4 couleurs conditionnelles

Bonjour,

Avec cette version, les nombres peuvent entrés directement ou être le résultat de formules.

JB
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
Réponses
4
Affichages
735
Réponses
4
Affichages
586
Retour