récupérer les codes couleurs sur mise en forme conditionnelle

obelix77

XLDnaute Junior
Bonjour à tous,

J'utilise le code ci-dessous qui me permet de récupérer le code couleur de la palette de 56 couleurs Excel, quand une cellule est remplie en couleur.

Mon problème : cette macro ne fonctionne que si les couleurs ont été mises manuellement.
Si les couleurs provienne d'une mise en forme conditionnelle ou d'un tableau d'Excel, voir un TC, cette macro considère qu'il n'y a aucune couleur.

Je suis nul en VBA. Quelqu'un pourrait m'aider?

Un grand merci à vous

Obelix77

Code:
Function Couleur(CL As Range) As Long
Couleur = CL.Interior.ColorIndex
End Function
 

VIARD

XLDnaute Impliqué
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour Obelix77 et à tous

Voici un petit programme qui devrait t'aider à t'en sortir, regarde bien les codes utilisés.
il y a plein de chose dedans.

Jean-Paul
 

Pièces jointes

  • Test_Cellule(3).xlsm
    50.7 KB · Affichages: 181
  • Test_Cellule(3).xlsm
    50.7 KB · Affichages: 124

obelix77

XLDnaute Junior
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour à tous.

Message pour Dranreb : merci mais mes connaissances en VBA (nulles) ne me permettent pas d'exploiter ton aide

Message pour Viar : de nouveau, je ne suis pas assez calé pour exploiter ce fichier

Message pour DoubleZero : il y a plein de choses dans cette discussion; merci. Mais rien qui correspond à ma demande.

En clair, je n'ai toujours pas de solution :(

Donc à votre bon coeur ...

Je reformule : je souhaite récupérer les codes couleurs de celulles qui ont un fond de couleur, que ce fond provienne d'une mise en place manuelle, d'une MFC, d'un TCD ou d'un tableau d'Excel.

Par avance, merci à tous

Laurent Kassis
 

VIARD

XLDnaute Impliqué
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour Obelix Dranreb DoubleZero et à toutes et tous

Voici ce que j'ai trouvé de Laurent Longre. J'ai testé c'est Ok.

Code:
Sub Elle_Est_Belle_Ma_MEFC()
'Laurent Longre, MPFE, corrections 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 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 MsgBox FC.Interior.ColorIndex _
    Else MsgBox ActiveCell.Interior.ColorIndex
C.Clear
End Sub

A+ Jean-Paul
 

obelix77

XLDnaute Junior
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonsoir Jean-Paul et bonsoir à toutes et tous

Merci pour ce code qui, effectivement, indique le code de la couleur d'une cellule ou d'une plage de cellule, quelque soit l'origine de la couleur (manuelle, MFC ou autre), dans une petite fenêtre.

Mon besoin va plus loin : j'ai besoin de récupérer le code de la couleur sous forme de valeur dans une cellule; par une fonction en fait; par exemple :
Si cellule A1 a un fond rouge, je souhaite faire une formule du type :
=couleur(A1) qui donne le résultat 3

Je souhaite récupérer les codes couleurs sous forme de chiffres pour les exploiter dans d'autres formules (SOMME.SI, NB.SI, SI, ...).

SI pas clair, me le dire, bien sur :)


Par avance, merci à tous
 
Dernière modification par un modérateur:

obelix77

XLDnaute Junior
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour à toutes et tous et merci aussi. J'avance gentiment

Merci pour ce lien, DoubleZero. Sur ce lien, j'ai trouvé le code suivant qui permet d'obtenir le nombre de cellules colorisées avec le code, pour une plage de cellule et le nombre de cellules colorisées.

Sub toto(plage As Range, cellule As Range)
Dim i, cel, w, c()
Set w = plage.Cells(1, 1).FormatConditions
ReDim c(1 To w.Count, 2)
For i = 1 To w.Count
c(i, 0) = w(i).Interior.Color
c(i, 1) = 0
c(i, 2) = w(i).Font.Color
Next
With plage
For Each cel In .Cells
For i = 1 To w.Count
If cel.DisplayFormat.Interior.Color = c(i, 0) Then c(i, 1) = c(i, 1) + 1
Next
Next
End With
With cellule
.Resize(1, 2) = Array("couleur", "nombre")
For i = 1 To w.Count
.Offset(i).Interior.Color = c(i, 0)
.Offset(i).Font.Color = c(i, 2)
Next
.Offset(1).Resize(w.Count, 2).Value = c
End With
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Cible As Range, Contremander As Boolean)

If Not Intersect(Cible, Range("B3:E6")) Is Nothing Then toto Range("B3:E6").Cells, Range("C9").Cells: Contremander = True
End Sub

Je ne suis pas loin du parfait.

En fait, il faudrait transformer cette macro en fonction du type "couleurMFC" qui permettrai de récupérer le code, cellule par cellule.

Exemple : cellule A1 rouge par MFC
En B1 : =couleurMFC(A1) doit donner le code de la couleur mise en A1

Problème : je ne sais pas le faire ...

Qui pourrait m'aider?

Par avance, merci à tous et bon après-midi
 

DoubleZero

XLDnaute Barbatruc
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour à toutes et à tous,

... En fait, il faudrait transformer cette macro en fonction du type "couleurMFC" qui permettrai de récupérer le code, cellule par cellule.

Exemple : cellule A1 rouge par MFC
En B1 : =couleurMFC(A1) doit donner le code de la couleur mise en A1

Problème : je ne sais pas le faire ...

Problème 1 : je ne sais si je saurai :confused: le faire.

Problème 2 : nous ne disposons d'aucun fichier exemple.

A bientôt :)
 

obelix77

XLDnaute Junior
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour à tout le monde sous ce magnifique soleil parisien

Merci pour ta réponse DoubleZero et tu as tout à fait raison pour le fichier. Je joins donc un fichier exemple.

Effectivement, la récupération des couleurs MFC ou autre (non manuelles) est un sujet qui a déjà généré une foultitude de discussion.
Mais impossible de trouver une solution complète qui marche à tous les coups.

Peut être que c'est parce que c'est infaisable.

Je vais continuer à chercher et interroger. Je n'arrive pas à croire que la solution n'existe pas.

Merci à tous ceux qui voudront bien m'aider.

Et Un excellent week-end bien sur
 

Pièces jointes

  • récupérer les codes couleurs sur mise en forme conditionnelle.xlsm
    12.8 KB · Affichages: 81
  • récupérer les codes couleurs sur mise en forme conditionnelle.xlsm
    12.8 KB · Affichages: 58

mécano41

XLDnaute Accro
Re : récupérer les codes couleurs sur mise en forme conditionnelle

Bonjour,

J'ai fait ceci mais seule la version par SUB fonctionne ; celle par FUNCTION ne veut rien savoir...si quelqu'un voit pourquoi...

Cordialement
 

Pièces jointes

  • Couleur fond par MFC1 .xlsm
    19 KB · Affichages: 117

Discussions similaires

Réponses
12
Affichages
196

Statistiques des forums

Discussions
312 092
Messages
2 085 223
Membres
102 826
dernier inscrit
ag amestan