mise en forme conditionnel

C

copayo

Guest
Bonjour,

Je souhaiterais profiter de l'expérience de ce forum pour résoudre un problème simple mais que je n'arrive pas à résoudre.

Je voudrais mettre une coleur dans une celulle en fonction de sa valeur que je compare à une autre.

J'ai écrit ce petit code mais le résultat obtenu n'est pas ce que j'attends.

vert = 10
orange = 45

For Each A In Range('a2:a13 ')
For Each B In Range('b2:b13 ')
If A > B Then
B.Interior.ColorIndex = orange
Else: B.Interior.ColorIndex = vert
End If

Next B
Next A
End Sub

Auriez vous un peu de temps à m'acorder et m'apprendre à corriger mon erreur.

Merci par avance,
 
G

GesCo

Guest
Bonjour,

Dans ta procédure, chaque cellule de la colonne A sont comparée à la cellule de la colonne B ce qui implique non pas 1 comparaison par cellule mais 13 comparaisons pour chaque cellules de A.

Si c'est une seule comparaison que tu veux, voici une petite boucle rapide:

Où c représente la cellule en court de traitement
Où c.offset(,1) fait référence à la cellule délcalée de une colonne à droite par rapport à c (soit la cellule de la colonne B)

Sub color()
Const VERT = 10
Const ORANGE = 45

Dim c As Range

For Each c In Range('A2:A13')
c.Interior.ColorIndex = IIf(c.Offset(, 1) > c, ORANGE , VERT)
Next c

End Sub


Mais encore plus simple serait de laisser Excel Gérer ce qui sait très bien faire: Les formats conditionnels.

1 Sélectionner la plage 'A2:A13' puis Menu Format/Mise en forme conditionnel

Liste 'Condition1': la valeur de la cellule est
Liste ' à droite' : supérieure à
puis zone encore à droite: =B2 (Excel adaptera automatiquement cette référence pour toute les cellule sélectionnées)

enfin bouton Format : Choisir la couleur de fond qui correspond à la condition. Valider

sur la fenêtre Format Conditionnels clicquez sur Ajouter et suivre la même procédure

La valeur de la cellule/ est inférieure à/ =B2
re-bouton format choisir deuxième couleur et valider le tout

Voilà le tour est joué!!!
 
C

copayo

Guest
Bonjour Gesco,

C génial ta première solution fonctionne à merveille, sauf que je voudrais récuperer la mise en forme sur la 2eme colonne (je te joint le fichier)



je peux pas utilier la mfc d'excel car j'importe la couleur par macro dans un graphique et il ne la reconnait pas donc ta macro est parfaite,



un grand merci
 
G

GesCo

Guest
RE Bonjour

Si je comprend bien ta question voici une solution possible. Transforme la boucle :

For Each c In Range('A2:A13')
c.Interior.ColorIndex = IIf(c.Offset(, 1) > c, ORANGE , VERT)
Next c

En Boucle:

For Each c In Range('A2:A13')
c.Resize(,2).Interior.ColorIndex = IIf(c.Offset(, 1) > c, ORANGE , VERT)
Next c

Et les cellule de la colonne A et B seront coloriées
 

Discussions similaires

Réponses
3
Affichages
228

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet