OVH Cloud OVH Cloud

Comment récupérer la formule d'un format conditionnel

23 réponses
Avatar
luck82
Bonsoir;
Lsteph n'a passé il y a pas longtemps un classeur qui contenait un format
conditionnel (sur X valeur identique; le format conditionnel appliqué une
police blanche sur X-1 valeur et noire sur la dernière valeur).

Je voudrai récupérer la formule qui me fait ça mais dans l'onglet
format/mise en forme conditionnel, je ne vois rien.
Comment récupérer cette formule?

merci par avance.

10 réponses

1 2 3
Avatar
Philippe.R
Re Stéphane,
C'était aussi dans ce sens que j'avais commencé à chercher, mais je ne suis
pas parvenu à mettre en place la boucle qui pourrait récupérer l'expression
de la condition.
--
http://www.excelabo.net/mpfe/connexion.php
Avec plaisir
Philippe.R
"LSteph" a écrit dans le message de
news:
Bonsoir Philippe,

j'ai pris peu de temps pour m'y pencher ce jour mais ce que j'en retiens
est que par vba c'est assez "galère"
si tu as plusieurs mefc et des plages assez importantes , le pb est que
Formatconditions est propriété de range et pas de worksheet donc outre
délimiter d'avance les plages qui ont les mêmes conditions cela suppose
qu'on les ai déjà épluchées donc potentiellement avec des millers de
cellules, boucler dessus risque d'être un peu longuet,
sinon mon idée était de générer un rapport (as string)

xlCellTypeSameFormatConditions serait sans doute une piste

mais reste à voir comment on boucle la dessus pour en sortir
l'adresse de plage
.formatconditions(n) n? le nombre
.operator (traduire l'indice en compréhensible)
.formula1
.formula2 (si c'est le cas sinon erreur)

etc...

@+

Stéphane

Bonsoir Stéphane,
On peut toujours, une fois qu'on en a repéré une ou l'autre, affiner avec
:

Sub meMEFC()
'MPFE le 01/10/2007
'
Selection.SpecialCells(xlCellTypeSameFormatConditions).Select

End Sub

Ce qui est une traduction VBA d'une variante de la piste indiquée par
Claudy




Avatar
Modeste
Bonsour® LSteph avec ferveur ;o))) vous nous disiez :

j'en retiens est que par vba c'est assez "galère"


;o)))
Determining Which Format Condition Is In Effect
Excel does not give you a direct way to determine whether conditional formatting
is currently in effect for a cell.
You must use VBA to actually test the defined conditions.
See this page for more details :
http://www.cpearson.com/excel/CFColors.htm

@+
;o)))

Avatar
Filochard
http://www.cpearson.com/excel/CFColors.htm


Si je peux me permettre une remarque : La fonction personnelle proposée dans ce
lien est incompatible avec toutes les versions antérieures à XL2007
(GetStrippedValue)
C'est dire si elle d'une utilisation extrèmement limitée...

Avatar
Filochard
Je voudrai récupérer la formule qui me fait ça mais dans l'onglet
format/mise en forme conditionnel, je ne vois rien.
Comment récupérer cette formule?


Pour récupérer les diverses infos, une solution :

Sub Tester_MFC()
Dim MFC As FormatCondition, Typ, Op, CoulPol, Inté, F1, F2
For Each c In Cells.SpecialCells(xlCellTypeAllFormatConditions)
aD = c.Address
For Each MFC In c.FormatConditions
CoulPol = MFC.Font.ColorIndex
If CoulPol = -4105 Then CoulPol = "Automatique"
Inté = MFC.Interior.ColorIndex
If Inté = -4142 Then Inté = "Automatique"
Typ = MFC.Type
F1 = MFC.Formula1
If Typ = 1 Then
Op = MFC.Operator
If Op = 1 Or Op = 2 Then
If CoulPol = -4105 Then CoulPol = "Automatique"
F2 = MFC.Formula2
résult = MsgBox("Cellule : " & aD & Chr(13) & "Condition " & x + 1 &
" : La valeur de la cellule est " & Switch(Op = 1, _
"comprise entre ", Op = 2, "non comprise entre ") & F1 & " et " & F2
& Chr(13) & _
"Couleur police : " & CoulPol & Chr(13) & "Couleur motif : " & Inté,
_
vbOKOnly + vbInformation, "Format Conditionnel")
x = x + 1
Else
résult = MsgBox("Cellule : " & aD & Chr(13) & "Condition " & x + 1 &
" : La valeur de la cellule est " & Switch(Op = 3, "égale à ", _
Op = 4, "différente de ", Op = 5, "supérieure à ", Op = 6,
"inférieure à ", Op = 7, _
"supérieure ou égale à ", Op = 8, "inférieure ou égale à ") & F1 &
Chr(13) _
& "Couleur police : " & CoulPol & Chr(13) & "Couleur motif : " &
Inté, _
vbOKOnly + vbInformation, "Format Conditionnel")
x = x + 1
End If
Else:
résult = MsgBox("Cellule : " & aD & Chr(13) & "Condition unique : La
formule est : " & F1 & Chr(13) & "Couleur police : " _
& CoulPol & Chr(13) & "Couleur motif : " & Inté, vbOKOnly +
vbInformation, "Format Conditionnel")
End If
Next MFC
x = 0
Next c
End
End Sub

Vous pourrez voir un exemple là :
http://cjoint.com/?kcjP4gkOjv

Avatar
lSteph
Bonjour Modeste,

Merci
bien voilà, c'est exactement ce dont on parlait avec Philippe,
;o)) en plus simple et en mieux bien sûr!
Il fallait bien que quelqu'un l'eut déjà trouvé ce fut Pearson
Pourtant son nom est bien connu, faut juste y songer.
Quand on ne sait plus chez qui ..cpearson!

Grâce à toi...et à lui...

--
lSteph


On 1 oct, 23:33, "Modeste" wrote:
Bonsour® LSteph avec ferveur ;o))) vous nous disiez :

j'en retiens est que par vba c'est assez "galère"


;o)))
Determining Which Format Condition Is In Effect
Excel does not give you a direct way to determine whether conditional for matting
is currently in effect for a cell.
You must use VBA to actually test the defined conditions.
See this page for more details :http://www.cpearson.com/excel/CFColors.h tm

@+
;o)))



Avatar
Modeste
Bonsour® Filochard avec ferveur ;o))) vous nous disiez :

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


Si je peux me permettre une remarque : La fonction personnelle
proposée dans ce lien est incompatible avec toutes les versions
antérieures à XL2007 (GetStrippedValue)
C'est dire si elle d'une utilisation extrèmement limitée...


Heu .... as-tu essayé ????
moi je n'ai que EXCEL 2002
http://cjoint.com/?kclqJQijCH
;o))))

Tiens pour répondre à la question initiale et faire avancer le schmilblick :
Sub LectureMEFC()
' Macro enregistrée le 02/10/2007 par GeeDee pour MPFE
FCOpe = Array(" ", "Comprise entre", "Non comprise entre", "Egale à",
"Differente de", "Superieure à", "Inferieure à", "Superieure ou egale à",
"Inferiere ou égale à")
FCTyp = Array(" ", "La valeur de la cellule est ", "La formule est ")
If ActiveCell.FormatConditions.Count > 0 Then

For Ndx = 1 To ActiveCell.FormatConditions.Count
Set FC = ActiveCell.FormatConditions(Ndx)
If FC.Type = 1 Then
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FCope(FC.Operator) _
& Chr(10) & FC.Formula1 & Chr(10) _
& FC.Formula2, vbInformation, _
"MEFC Cellule : " & ActiveCell.Address
Else
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FC.Formula1, _
vbInformation, _
"MEFC Cellule : " & ActiveCell.Address
End If
Next
Else
MsgBox "Pas de MEFC", vbExclamation, "MEFC Cellule : " & ActiveCell.Address
End If
End Sub


--
--
@+
;o)))


Avatar
Filochard
Tiens pour répondre à la question initiale et faire avancer le schmilblick :
Sub LectureMEFC()


Il me semble assuré que cette procédure aura un "gros problème" lorsque la
cellule active contiendra une Mise en forme conditionnelle comprenant plus d'une
seule condition...

Ceci étant, chacun fera comme bon lui semble

Avatar
jps
hello GeeDee
chez moi, ta proc bogue ici :

MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FCope(FC.Operator) _
& Chr(10) & FC.Formula1 & Chr(10) _
& FC.Formula2, vbInformation, _
"MEFC Cellule : " & ActiveCell.Address

elle marche pour 2 conditions mais pas pour la troisième qui est :
la valeur de la cellule est supérieure à :
c'est quoi encore ce chibrelot, l'anichois?
jps

"Modeste" a écrit dans le message de news:

Bonsour® Filochard avec ferveur ;o))) vous nous disiez :

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


Si je peux me permettre une remarque : La fonction personnelle
proposée dans ce lien est incompatible avec toutes les versions
antérieures à XL2007 (GetStrippedValue)
C'est dire si elle d'une utilisation extrèmement limitée...


Heu .... as-tu essayé ????
moi je n'ai que EXCEL 2002
http://cjoint.com/?kclqJQijCH
;o))))

Tiens pour répondre à la question initiale et faire avancer le schmilblick
:
Sub LectureMEFC()
' Macro enregistrée le 02/10/2007 par GeeDee pour MPFE
FCOpe = Array(" ", "Comprise entre", "Non comprise entre", "Egale à",
"Differente de", "Superieure à", "Inferieure à", "Superieure ou egale à",
"Inferiere ou égale à")
FCTyp = Array(" ", "La valeur de la cellule est ", "La formule est ")
If ActiveCell.FormatConditions.Count > 0 Then

For Ndx = 1 To ActiveCell.FormatConditions.Count
Set FC = ActiveCell.FormatConditions(Ndx)
If FC.Type = 1 Then
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FCope(FC.Operator) _
& Chr(10) & FC.Formula1 & Chr(10) _
& FC.Formula2, vbInformation, _
"MEFC Cellule : " & ActiveCell.Address
Else
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FC.Formula1, _
vbInformation, _
"MEFC Cellule : " & ActiveCell.Address
End If
Next
Else
MsgBox "Pas de MEFC", vbExclamation, "MEFC Cellule : " &
ActiveCell.Address
End If
End Sub


--
--
@+
;o)))






Avatar
Modeste
Bonsour® Filochard avec ferveur ;o))) vous nous disiez :

Il me semble assuré que cette procédure aura un "gros problème"
lorsque la cellule active contiendra une Mise en forme conditionnelle
comprenant plus d'une seule condition...


Bien vu Filochard....
Mais il ne s'agissait pas du nombre de conditions !!!!
mais du nombre d'arguments de condition
;o)))

--
--
@+
;o)))

Avatar
Modeste
Bonsour® jps avec ferveur ;o))) vous nous disiez :

hello GeeDee
chez moi, ta proc bogue


tssss....
pourtant tu t'en doutais bien,
tu as baissé ta garde mon bon Jean-Paul ;o)))

c'est que que m'a signalé Filochard (l'autre pas l'originaLL)

ce que faisait remarquer Lsteph : c'est galère ....
il manque le détails des bordures, le motif(trame), le style de police, le
soulignement
et la condition active lors du test

Sub LECTURE_MEFC()
FCope = Array(" ", "Comprise entre", "Non comprise entre", "Egale à",
"Differente de", "Superieure à", "Inferieure à", "Superieure ou egale à",
"Inferiere ou égale à")
FCtyp = Array(" ", "La valeur de la cellule est ", "La formule est ")
If ActiveCell.FormatConditions.Count > 0 Then

For Ndx = 1 To ActiveCell.FormatConditions.Count
Set FC = ActiveCell.FormatConditions(Ndx)
If FC.Type = 1 Then
If FC.Operator < 3 Then
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FCope(FC.Operator) _
& Chr(10) & FC.Formula1 _
& chr(10) & " et " _
& Chr(10) & FC.Formula2 _
& Chr(10) & "Interieur Idx Couleur : " & FC.Interior.ColorIndex _
& Chr(10) & "Police idx Couleur : " & FC.Font.ColorIndex, _
vbInformation, _
"MEFC Cellule : " & ActiveCell.Address '
Else
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FCope(FC.Operator) _
& Chr(10) & FC.Formula1 _
& Chr(10) & "Interieur Idx Couleur : " & FC.Interior.ColorIndex _
& Chr(10) & "Police idx Couleur : " & FC.Font.ColorIndex, _
vbInformation, _
"MEFC Cellule : " & ActiveCell.Address '
End If

Else
MsgBox "Condition " & Ndx _
& Chr(10) & FCtyp(FC.Type) _
& Chr(10) & FC.Formula1 _
& Chr(10) & "Interieur Idx Couleur : " & FC.Interior.ColorIndex _
& Chr(10) & "Police idx Couleur : " & FC.Font.ColorIndex, _
vbInformation, _
"MEFC Cellule : " & ActiveCell.Address
End If
Next
Set FC = Nothing
Else
MsgBox "Pas de MEFC", vbExclamation, "MEFC Cellule : " & ActiveCell.Address
End If
End Sub



@+
;o)))

1 2 3