Récuper la couleur d'une mise en forme conditionnelle

nvitalie

XLDnaute Nouveau
Salut Camarads,
j'ai une question:
j'ai fait une mise en forme conditionnelle (couleur de fond des cellules) à l'aide de l'outil excel (format->mise en forme conditionnelle).:)

J'ai fait une macro qui me fait un calcul par rapport aux cellules colorées, mais le pb c'est que la macro ne voit pas les couleurs mises par l'outil excel, que si je mets la couleur manuellement (en sachant que j'ai bien respecté les codes couleur) :(

Connaissez vous une instruction qui rends visible la couleur mise par l'outil excel (format->mise en forme conditionnelle) ? :confused:

Gracias ;)
 

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Bonjour Monique, nvitalie

Les Mises en forme conditionnelles n'affectent en aucun cas les cellules mais fonctionnent comme un papier peint qui est visible mais qui n'existe pas

Les macros sont inutiles dans ce cas, seules les formules, comme le dit Monique, en reprenant les conditions des MFC, peuvent realiser ce que tu cherches
 

ChTi160

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

salut nvitalie
Bonsoir Monique,Wilfried

je pense contrairement à ce que tu dis, que l'on peut travailler sur les formats conditionnels,j'ai fais une recherche sur le net et voilà l'une des nombreuses possibilités


Boucler sur les cellules de même conditions (par Denis M.)

Sub Couleur ()

Dim C as Range

Dim Total as Double

With Range ("A1")

For Each C In Selection.SpecialCells (xlCellTypeSameFormatConditions)

total = total + C.Value

Next

End With

End Sub
Somme des cellules de même Format, autres moyens

Sub Couleur ()

Dim Total As Double

Total = Application.WorksheetFunction.Sum ( _

Selection.SpecialCells (xlCellTypeSameFormatConditions))

End Sub

Bonne fin de Soirée

 

Gael

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Bonjour Nvitalie, Monique, Jean-Marie, Wilfried,

Pour la récupération des couleurs MFC en VBA, il y a ausi la macro de Laurent Longre ci-dessous:

Code:
Sub ElleEstBelleMaMEFC()
'Laurent Longre, MPFE, correction 2003
Dim FC As FormatCondition, F1, F2
Dim C As Range
Set C = Cells.Find(Empty)
Application.ScreenUpdating = False
For Each FC In ActiveCell.FormatConditions
C.FormulaLocal = FC.Formula1: F1 = C
If FC.Type = xlCellValue Then
Select Case FC.Operator
Case xlBetween, xlNotBetween:
C.FormulaLocal = FC.Formula2: F2 = C
If FC.Operator = xlBetween Then If ActiveCell >= F1 _
And ActiveCell <= F2 Then Exit For
If FC.Operator = xlNotBetween Then If ActiveCell < F1 _
Or ActiveCell > F2 Then Exit For
Case xlEqual: If ActiveCell = F1 Then Exit For
Case xlGreater: If ActiveCell > F1 Then Exit For
Case xlGreaterEqual: If ActiveCell >= F1 Then Exit For
Case xlLess: If ActiveCell < F1 Then Exit For
Case xlLessEqual: If ActiveCell <= F1 Then Exit For
Case xlNotEqual: If ActiveCell <> F1 Then Exit For
End Select
Else
If F1 Then Exit For
End If
Next FC
If Not FC Is Nothing Then ActiveCell.Interior.ColorIndex = FC.Interior.ColorIndex
If Not FC Is Nothing Then ActiveCell.Font.ColorIndex = FC.Font.ColorIndex
If Not FC Is Nothing Then ActiveCell.Font.FontStyle = FC.Font.FontStyle
C.Clear
End Sub

Je l'ai testée et ça marche très bien chez moi. Ceci étant, je préfère utiliser dans ce cas des formules qui intègrent les conditions de la MFC.

@+

Gael
 

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Bonjour chti160, Gael

j'ai survolé le code de gael et à premiere vue, il ne traite que les cas de format condition par bornage,
dans ce code on peut remarquer qu'il teste l'operateur, et les valeurs, finalement il ne traite pas le formatage de la cellule mais refait les conditions

les formatconditions : " La formule est" n'est pas traitée, et pour cause, refaire excel n'est pas de tout repos !!!!!

Chti, Ta formule m'interresse, mais je ne vois aucune notion de couleur
je vais additionné des cellules qui ont le meme formatcondition mais le resultat correspondra à quoi ? je ne vois aucune reference à un choix, aucune reference à une cellule type, sur une colonne de 20 cellules, j'ai pour chaque cellule 3 formatsconditions, avec bien entendu 3 formats diferrents et 3 resultat differents......... lequel sera calculé ?
mais c'est une piste que je vais approfondir.......

@ vous lire
amicalement
 

Gael

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Re,

Cela ne se voit pas facilement, mais si tu regardes bien le code il y a au début:

Code:
If FC.Type = xlCellValue Then
qui permet de tester les conditions de "La valeur de la cellule est"

et à la fin on trouve:

Code:
Else
If F1 Then Exit For

Qui évalue la formule dans le cas contraire.

Ci-joint un exemple à partir de cette macro qui affecte à une forme la couleur correspondant au résultat de la MEFC d'une autre cellule.

C'est un peu pour le fun car je n'ai jamais trouvé d'utilisation pratique de cette macro dans mes applis mais ça marche.

@+

Gael
 

Pièces jointes

  • Form_Coul.xls
    29 KB · Affichages: 115
  • Form_Coul.xls
    29 KB · Affichages: 124
  • Form_Coul.xls
    29 KB · Affichages: 123

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Re: jean marie

je confirme, il additionne toutes les cellules sans tenir compte du resultat des differentes conditions

Donc aucune selection en fonction de la couleur choisie decoulante de telle ou telle condition
 

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Gael

Ca y est, j'ai vu, tres ingenieux comme system, mais ca ne se limite pas à

IF F1 then exit for

Au debut, il cherche une cellule vide : dans laquelle il place la formule qui donne bien sur un resultat
Mais il y a un probleme que j'ai rencontré et que pour le reglé, j'ai mis un platre.
il a reglé ce probleme avec un Range("B4").select

ce probleme est que les references de cellule dans le formatcondition.formula evoluent en fonction de la position du curseur

tu enleves le range("B4").select et ca ne marche plus
ton fichier joint avec quelques explications dans le code

sinon, c'est tres interressant.
Merci gael
 

Pièces jointes

  • Form_Coul.xls
    29.5 KB · Affichages: 99
  • Form_Coul.xls
    29.5 KB · Affichages: 105
  • Form_Coul.xls
    29.5 KB · Affichages: 107
Dernière édition:

Gael

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Bonjour Wilfried, bonjour à tous,

Merci pour tes explications et commentaires.

L'objectif initial de la macro de Laurent est de formater une cellule en fonction des résultats de la MFC de cette cellule. Cela permet de compter par exemple les cellules de couleur avec les macros classiques puisque la couleur se trouve définie dasn la cellule en plus de la MFC.

L'exemple que j'ai envoyé est une adaptation perso pour répondre à un autre Fil mais l'original de Laurent est bien le code que j'ai posté dans ce Fil. Les défauts sont donc perso aussi!

Je t'envoie ci-joint un autre exemple qui permet de compter les cellules d'une plage sélectionnée.

J'ai trouvé, comme toi, ce code très astucieux et je suis sûr qu'une main experte y trouvera une utilisation pratique avec quelques modifs.

@+

Gael
 

Pièces jointes

  • Comptage_MFC.xls
    30.5 KB · Affichages: 112
  • Comptage_MFC.xls
    30.5 KB · Affichages: 101
  • Comptage_MFC.xls
    30.5 KB · Affichages: 98

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

re: Gael

J'ai modifié la MFC pour y mettre des formules : Hic m'enfin
je le savais je cherche depuis 2 mois comment regler ce Bug sans rajouter la ligne de code que j'ai mis en commentaire : Cell.select

ton fichier en retour

Et encore avec tous mes remerciements pour ce bout de code

Si je pouvais retirer ce select, une fonction perso devient envisageable
 

Pièces jointes

  • Comptage_MFC.xls
    27.5 KB · Affichages: 102
  • Comptage_MFC.xls
    27.5 KB · Affichages: 113
  • Comptage_MFC.xls
    27.5 KB · Affichages: 115

Gael

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

Re,

En templaçant le "Cell.select" par un "cell.activate", ça fonctionne bien et ne modifie pas la sélection initiale.

Est-ce que cela résoud le problème?

@+

Gael
 

wilfried_42

XLDnaute Barbatruc
Re : Récuper la couleur d'une mise en forme conditionnelle

re:

Bon j'ai fait un essai rapide, c'est le meme resultat

j'ai changé selection par range("B4:B25")
ensuite j'ai mis cell.activate

je clique dans la feuille, ensuite sur le bouton, à la fin ma cellule selectionnée devient B25, je perds donc ma cellule ou je m'etais placé

Donc si je desire enlever select et activate, les adresses de mes formules de la MFC sonts decalée en fonction de la celule active
Dans une fonction, ne pouvant agir directement sur un objet RANGE, c'est raté

Snif, j'ai encore du boulot pour trouver

merci à toi et @ bientot

amicalement
wilfried
 

Discussions similaires

Réponses
12
Affichages
265

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU