EXCEL - VB - Couleur cellule conditionnelle [Résolu]

Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 18 déc. 2008 à 11:00 - Dernière réponse : cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention
- 7 janv. 2009 à 07:14
Bonjour,

Comment récupérer sous VB la couleur d'une cellule EXCEL ayant une mise en forme conditionnelle ?

La propriété ci-dessous me donne la couleur d'origine de ma cellule et non la couleur selon la mise en forme conditionnelle.
CouleurFond = Sheets("Source").Range("Test").Cells(1).Interior.Color
   

Merci d'avance pour votre aide

Arnaud
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 déc. 2008 à 12:52
3
Merci
J'ai trouvé il faut passer par evaluate sur xls2007

CDbl(Evaluate(FC.Formula1))

http://www.vbaexpress.com/kb/getarticle.php?kb_id=190

Désolé pour les multiposts

Merci nhervagault 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de nhervagault
Calade 1212 Messages postés dimanche 20 avril 2003Date d'inscription 4 juin 2016 Dernière intervention - 18 déc. 2008 à 11:19
0
Merci
Bonjour,

   Il existe une bibliothèque Freeware de fonctions additionnelles pour Excel nommé MoreFunc. Fais une recherche avec ton butineur préféré (au hasard Google) sur MoreFunc.

   Le fonction qui t'intéresse est XML.LIRE.CELLULE(). Attention la couleur ne doit pas être automatique. Va voir dans l'aide, elle est très bien faîte en français !!!

Calade
Commenter la réponse de Calade
Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 18 déc. 2008 à 13:21
0
Merci
Merci calade,

les fonctions de MoreFunc semblent très intéressantes, malheureusement mon problème se situe dans le code :

Je cherche dans une macro visual basic à récupérer la couleur d'une cellule dépendant d'une mise en forme conditionnelle.

A+

Arnaud
Commenter la réponse de Arnaud.f123
Calade 1212 Messages postés dimanche 20 avril 2003Date d'inscription 4 juin 2016 Dernière intervention - 18 déc. 2008 à 14:42
0
Merci
Bonjour,

   Désolé, j'avais mal lu ton message et zappé le mot VB.
   Et Redésolé, mais là je sèche, il va falloir quelqu'un de plus doué que moi sous VBA (ce qui ne devrait pas être trop difficile à trouver).

Calade
Commenter la réponse de Calade
JERCAD 2 Messages postés samedi 20 mai 2006Date d'inscription 19 décembre 2008 Dernière intervention - 18 déc. 2008 à 23:47
0
Merci
Bonsoir!
J'ai déja connu ce problème mais sans solution. En effet, on ne peut pas récuperer la couleur d'une cellule EXCEL ayant une mise en forme conditionnelle car la couleur n'est que "visuelle" et sans application de code. En quelque sorte, au niveau code rien ne change pour une conditionnelle c'est juste du maquillage ! La solution: créér une macro !
Commenter la réponse de JERCAD
Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 19 déc. 2008 à 11:22
0
Merci
Merci Jercad,

Bien content de pas être le seul ...
... mais quelle macro faut-il créer ?
Un macro qui refait des mises en forme conditionnelles ?

Arnaud

Arnaud
Commenter la réponse de Arnaud.f123
userrrqi115 181 Messages postés mardi 18 novembre 2008Date d'inscription 4 février 2011 Dernière intervention - 19 déc. 2008 à 12:59
0
Merci
Hello,

J'avais fait quelques test hier soir et en suis arrivé à la même conclusion : pas possible de tester sur la couleur d'un mise en forme conditionnelle.
Pour contourner ce problème le mieux est d'effectuer le test sur la condition de la mise en forme conditionnelle.
BR

USERRRQI115
Simple user
Great brain
Commenter la réponse de userrrqi115
JERCAD 2 Messages postés samedi 20 mai 2006Date d'inscription 19 décembre 2008 Dernière intervention - 19 déc. 2008 à 17:12
0
Merci
bonjour armaud
Tu as tout compris. Il faut que tu réussisses à créer une macro correspondant à une mise en forme conditionnelle.
ex:
mise en condition conditionnelle: cellule couleur rouge si valeur inférieure à 0
Donc à 'traduire' en vb dans une macro.
Normalement c'est pas difficile.
Bonne chance!
Commenter la réponse de JERCAD
Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 20 déc. 2008 à 11:26
0
Merci
Effectivement Jercad, c'est pas difficie mais pas pour l'utilisateur lambda qui par la suite utilisera le tableau excel ne pourra pas changer la mise en forme conditionnelle sans le faire dans la macro (et la çoincera). Je veux évité d'être trop sollicié pa la suite.

Pour comprendre le contexte :
J'ai un tableau excel pour résumer l'avancement de différents projets (1 ligne = 1 projet)
Le but est de créer, à partir de ce tableau, une présentation PPT où chaque slide montrera l'avancement d'un projet.
J'ai donc crée une macro qui fait le boulot (sauf qu'elle ne recopie pas les couleurs conditionnelles ... vous connaissez la suite)

Je souhaite que cette macro soit totalement transporable pour d'autres besoins (donc sans test dédié à une feuille excel en partiulier)
Si besoin, pour ceux que ça interresse, je peux donner le code.

Je creuse toujours le problème

A+

Arnaud
Commenter la réponse de Arnaud.f123
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 déc. 2008 à 12:24
0
Merci
Salut

Apres une recherche sur internet.
J'ai trouvé le code suivant

J'ai changé dans ce code
oFC.Formula1 vers CInt(Replace(oFC.Formula1, "=", ""))
pour que ca fonctionne sur Excel 2007
Il faut mettre a jour les autres formules.

Et je ne vois pas comment le faire marcher autrement?

Ca indique le numero de la couleur de la cellule courante.

Je laisse aux pro de VBA le soin de le corriger pour mieux gerer le truc.




Sub TestCFColorMacro()
MsgBox CFColor(ActiveCell)
End Sub

'---------------------------------------------------------------------
Public Function CFColor(rng As Range) As Long
'---------------------------------------------------------------------
Dim oFC As FormatCondition
Dim sF1 As String
Dim iRow As Long
Dim iColumn As Long
Dim IsCFMet As Boolean



Set rng = rng(1, 1)
If rng.FormatConditions.Count > 0 Then
For Each oFC In rng.FormatConditions
If oFC.Type = xlCellValue Then
IsCFMet = False
Select Case oFC.Operator
Case xlEqual
IsCFMet rng.Value oFC.Formula1
Case xlNotEqual
IsCFMet = rng.Value <> oFC.Formula1
Case xlGreater
IsCFMet = rng.Value > CInt(Replace(oFC.Formula1, "=", "")) 'oFC.Formula1
Case xlGreaterEqual
IsCFMet = rng.Value >= oFC.Formula1
Case xlLess
IsCFMet = rng.Value < oFC.Formula1
Case xlLessEqual
IsCFMet = rng.Value <= oFC.Formula1
IsCFMet = (rng.Value >= oFC.Formula1 And _
rng.Value <= oFC.Formula2)
Case xlNotBetween
IsCFMet = (rng.Value < oFC.Formula1 Or _
rng.Value > oFC.Formula2)
End Select
If IsCFMet Then
CFColor = oFC.Interior.ColorIndex
Exit Function
End If

Else
're-adjust the formula back to the formula that applies
'to the cell as relative formulae adjust to the activecell
With Application
iRow = rng.Row
iColumn = rng.Column
sF1 = .Substitute(oFC.Formula1, "ROW()", iRow)
sF1 = .Substitute(sF1, "COLUMN()", iColumn)
sF1 = .ConvertFormula(sF1, xlA1, xlR1C1)
sF1 = .ConvertFormula(sF1, xlR1C1, xlA1, , rng)
End With
IsCFMet = rng.Parent.Evaluate(sF1)
End If
If IsCFMet Then Exit Function
Next oFC
End If 'rng.FormatConditions.Count > 0


End Function
Commenter la réponse de nhervagault
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 déc. 2008 à 12:48
0
Merci
Une methode identique mais qui peut compléter, mon précédent post.

http://www.cpearson.com/Excel/CFColors.htm

NB : ne fonctionne pas correctement sur xls 2007
Le script me semble buggé à fond.

Mais c'est peut etre xls 2007 qui est moins permissif.
Commenter la réponse de nhervagault
Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 21 déc. 2008 à 20:57
0
Merci
Merci nhervagault pour les infos.
Je vais tenter demain de mettre en application tes conseils.
J'éspère que cela va fonctionner sur ma version 2000

Arnaud
Commenter la réponse de Arnaud.f123
Arnaud.f123 23 Messages postés lundi 19 juillet 2004Date d'inscription 13 novembre 2013 Dernière intervention - 21 déc. 2008 à 21:10
0
Merci
En fait j'ai pas attendu ...

Ca marche, je vais intégrer cette macro à mon code.
Merci à tous et encore bravo, je suis sauvé

Arnaud
Commenter la réponse de Arnaud.f123
cs_lermite222 500 Messages postés jeudi 5 avril 2007Date d'inscription 2 juillet 2012 Dernière intervention - 7 janv. 2009 à 07:14
0
Merci
Bonjour,
Merci, c'est juste ce que je cherchais.
Manque quand même une condition dans les formules...
Select Case oFC.Operator
Case xlBetween
    IsCFMet = (rng.Value >= oFC.Formula1 And rng.Value <= oFC.Formula2)

A+
Commenter la réponse de cs_lermite222

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.