Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupérer le colorindex d'une police modifié par MEFC

10 réponses
Avatar
ThierryP
Bonjour aux irréductibles du forum (j'en suis !!),

Je bute sur un truc bête....
Je change la couleur de la police d'une cellule par MEFC et j'essaye de
récupérer son colorindex : J'ai droit à 0 pour une cellule standard et -4105 si
la MEFC est appliquée....A part réécrire en VBA la condition de la MEFC, y
a-t-il moyen de récupérer cette valeur ?

Merci d'avance !

PS : Est-ce que certains d'entre vous ont commencé à fréquenter le forum ouvert
par Michel Claveau (ponx.fr) ?

--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline

10 réponses

Avatar
michdenis
Bonjour,

Un petit exemple :

Ma formule de ma condition :
si ma cellule = "$B$2" vérifier la propriété ColorIndex

La procédure teste si la formule de la mise en forme
conditionnelle est appliquée à la cellule A1, si oui,
on extrait la valeur de la propriété ColorIndex
de "FormatCondition(1)" sinon on extrait la valeur
de la propriété "ColorIndex de la cellule A1

Si on a plusieurs mises en forme conditionnelles, on peut
effectuer une boucle
For each Fc in Feuil1.Range("A1").FormatConditions(1)
If Range("A1").Value = Evaluate(Fc.Formula1) Then
A ü.Interior.ColorIndex
'.../reste du code

Next
'----------------------------------
Sub test()
Dim A As Long
Dim X As FormatCondition
With Feuil1.Range("A1").FormatConditions(1)
If Range("A1").Value = Evaluate(.Formula1) Then
A = .Interior.ColorIndex
Else
A = Range("A1").Interior.ColorIndex
End If
End With
MsgBox A
End Sub
'----------------------------------



"ThierryP" a écrit dans le message de groupe de discussion :

Bonjour aux irréductibles du forum (j'en suis !!),

Je bute sur un truc bête....
Je change la couleur de la police d'une cellule par MEFC et j'essaye de
récupérer son colorindex : J'ai droit à 0 pour une cellule standard et -4105 si
la MEFC est appliquée....A part réécrire en VBA la condition de la MEFC, y
a-t-il moyen de récupérer cette valeur ?

Merci d'avance !

PS : Est-ce que certains d'entre vous ont commencé à fréquenter le forum ouvert
par Michel Claveau (ponx.fr) ?

--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
ThierryP
Bonjour Michdenis,

Merci de ta réponse!
J'avais annulé mon message, vu qu'en faisant une petite recherche sur le forum,
j'étais tombé sur une ficelle expliquant que grosso modo ce n'était pas possible...
J'ai testé ta procédure mais j'ai une incompatibilité de type sur la ligne If
range("A1").... Deuxième question : tu définis X mais tu ne t'en sers pas ?

D'avance merci !

Le 19/05/2010 12:28, michdenis a écrit :
Bonjour,

Un petit exemple :

Ma formule de ma condition :
si ma cellule = "$B$2" vérifier la propriété ColorIndex

La procédure teste si la formule de la mise en forme
conditionnelle est appliquée à la cellule A1, si oui,
on extrait la valeur de la propriété ColorIndex
de "FormatCondition(1)" sinon on extrait la valeur
de la propriété "ColorIndex de la cellule A1

Si on a plusieurs mises en forme conditionnelles, on peut
effectuer une boucle
For each Fc in Feuil1.Range("A1").FormatConditions(1)
If Range("A1").Value = Evaluate(Fc.Formula1) Then
A ü.Interior.ColorIndex
'.../reste du code

Next
'----------------------------------
Sub test()
Dim A As Long
Dim X As FormatCondition
With Feuil1.Range("A1").FormatConditions(1)
If Range("A1").Value = Evaluate(.Formula1) Then
A = .Interior.ColorIndex
Else
A = Range("A1").Interior.ColorIndex
End If
End With
MsgBox A
End Sub
'----------------------------------



"ThierryP" a écrit dans le message de groupe de discussion :

Bonjour aux irréductibles du forum (j'en suis !!),

Je bute sur un truc bête....
Je change la couleur de la police d'une cellule par MEFC et j'essaye de
récupérer son colorindex : J'ai droit à 0 pour une cellule standard et -4105 si
la MEFC est appliquée....A part réécrire en VBA la condition de la MEFC, y
a-t-il moyen de récupérer cette valeur ?

Merci d'avance !

PS : Est-ce que certains d'entre vous ont commencé à fréquenter le forum ouvert
par Michel Claveau (ponx.fr) ?




--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
michdenis
L'explication est dans le fichier joint.

http://cjoint.com/?ftoK2do7Pi
Avatar
ThierryP
Re-bonjour,

J'avais deviné en partie....! Mais je bute sur la valeur renvoyée par ma MEFC.

MEFC de la cellule D191 :
la formule est : =CNUM(GAUCHE($C191;2))<CNUM($I191) alors police =rouge

J'ai essayé ceci (qui fonctionne dans ton exemple) pour connaître la valeur
renvoyée : MsgBox Evaluate(Feuil1.Range("D191").FormatConditions(1).Formula1)
mais qui me renvoie une erreur....Je pensais que ça me renvoyait VRAI ou FAUX.

Merci d'avance pour ton aide !!

Le 19/05/2010 14:37, michdenis a écrit :
L'explication est dans le fichier joint.

http://cjoint.com/?ftoK2do7Pi



--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
michdenis
As-tu essayé quelque chose comme :

if [Value(left($C191,2))] < [Value($I191)] Then
Avatar
ThierryP
Oui, en fait je m'en suis tiré comme ça. J'ai recréé le test en VBA et ça roule
mais par simple curiosité, j'aurais aimé savoir pourquoi j'avais ce message
d'erreur sur Evaluate(....

Merci !



Le 19/05/2010 15:23, michdenis a écrit :
As-tu essayé quelque chose comme :

if [Value(left($C191,2))]< [Value($I191)] Then



@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
michdenis
| j'aurais aimé savoir pourquoi j'avais ce message
| d'erreur sur Evaluate(....

*** Quel était le contenu de la chaîne de caractères
que tu passais à "Evaluate()" ?
Avatar
ThierryP
MEFC de la cellule D191 :
la formule est : =CNUM(GAUCHE($C191;2))<CNUM($I191) alors police =rouge

J'ai essayé ceci (qui fonctionne dans ton exemple) pour connaître la valeur
renvoyée : MsgBox Evaluate(Feuil1.Range("D191").FormatConditions(1).Formula1)


Le 19/05/2010 16:17, michdenis a écrit :
| j'aurais aimé savoir pourquoi j'avais ce message
| d'erreur sur Evaluate(....

*** Quel était le contenu de la chaîne de caractères
que tu passais à "Evaluate()" ?








--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
michdenis
|Evaluate("=CNUM(GAUCHE($C191;2))<CNUM($I191)")

C'est impossible pour "Evaluate" d'évaluer cette chaîne de
caractères. Evaluate() fonctionne avec une syntaxe des formules
écrites en anglais en utilisant la virgule comme séparateur.

Feuil1.Range("D191").FormatConditions(1).Formula1
retourne la formule en français

Range("A1").Formula retourne une formule en anglais avec le
bon séparateur d'argument... On parle de 2 choses totalement
différentes.



"ThierryP" a écrit dans le message de groupe de discussion :
#
MEFC de la cellule D191 :
la formule est : =CNUM(GAUCHE($C191;2))<CNUM($I191) alors police =rouge

J'ai essayé ceci (qui fonctionne dans ton exemple) pour connaître la valeur
renvoyée : MsgBox Evaluate(Feuil1.Range("D191").FormatConditions(1).Formula1)


Le 19/05/2010 16:17, michdenis a écrit :
| j'aurais aimé savoir pourquoi j'avais ce message
| d'erreur sur Evaluate(....

*** Quel était le contenu de la chaîne de caractères
que tu passais à "Evaluate()" ?








--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline
Avatar
ThierryP
Excuse-moi, le rouge de la honte me monte au front.....
En plus, j'ai traduit la formule en VBA pour écrire ma procédure !

Quelqu'un aurait-il quelques neurones à vendre :-((((

Le 19/05/2010 17:04, michdenis a écrit :

|Evaluate("=CNUM(GAUCHE($C191;2))<CNUM($I191)")

C'est impossible pour "Evaluate" d'évaluer cette chaîne de
caractères. Evaluate() fonctionne avec une syntaxe des formules
écrites en anglais en utilisant la virgule comme séparateur.

Feuil1.Range("D191").FormatConditions(1).Formula1
retourne la formule en français

Range("A1").Formula retourne une formule en anglais avec le
bon séparateur d'argument... On parle de 2 choses totalement
différentes.





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G.
Courteline