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
 

mécano41

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

J'ai cherché mais je n'ai pas trouvé...

C'est la condition " If Cel.DisplayFormat.Interior.Color = ..." qui semble ne pas être acceptée dans une fonction...mais je ne sais pas pourquoi...

Désolé...

Cordialement
 

mécano41

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

Bonjour,

Tu as toujours la solution proposée par plusieurs intervenants : utiliser les conditions de la cellule munie de la MFC, pour en déterminer la couleur ; mais peut-être cela sera-t-il trop compliqué dans ton application réelle...

PS : j'aurais quand même bien aimé savoir où je me suis trompé dans la fonction que j'ai faite ... :mad: :) :)

Cordialement
 

job75

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

Bonjour à tous,

C'est la condition " If Cel.DisplayFormat.Interior.Color = ..." qui semble ne pas être acceptée dans une fonction...mais je ne sais pas pourquoi...

Voyez ce lien :

Ce lien n'existe plus

Note that the DisplayFormat property does not work in user defined functions

A+



Note that the DisplayFormat property does not work in user defined functions
 

job75

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

Re,

Par contre appelée dans VBA la fonction fonctionne :

Code:
Sub a()
MsgBox F([A1])
End Sub

Function F(r As Range)
F = r.DisplayFormat.Interior.ColorIndex
End Function
A+
 

obelix77

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

Bonjour mécano41 et bonjour à tous

En fait, je m'adresse à des utilisateurs basiques qui savent :
utiliser SI
utilise SOMME.SI et NB.SI
et qui sauront utiliser une fonction simple du type "=couleur" ou "couleurMFC", en pointant sur une cellule

D’où ma demande insistante d'voir une fonction qui donne le code couleur d'un fond de cellule, qu'il soit manuel ou MFC.

Je suis sur que, vue les compétences sur ce forum, on va finir par y arriver.
En plus, je suis d'un naturel optimiste :cool:

Bon après midi à tous
 

job75

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

Re,

Pourquoi ne pas utiliser une feuille auxiliaire pour stocker les codes couleurs ?

Voyez le fichier joint et cette macro dans le code de la 1ère feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, t, ncol%, i&, j%
Set P = Me.UsedRange
If P.Count = 1 Then
  t = P.DisplayFormat.Interior.ColorIndex
Else
  t = P 'matrice, plus rapide
  ncol = UBound(t, 2)
  For i = 1 To UBound(t)
    For j = 1 To ncol
      t(i, j) = P(i, j).DisplayFormat.Interior.ColorIndex
  Next j, i
End If
With Feuil2 'CodeName de la feuille auxiliaire
  .Cells.ClearContents 'RAZ
  .Range(P.Address) = t
End With
End Sub
Dans les formules analysant la 1ère feuille il suffit d'utiliser la feuille "Couleurs" quand il s'agit d'étudier les couleurs...

A+
 

Pièces jointes

  • Couleurs(1).xlsm
    16.9 KB · Affichages: 45

ROGER2327

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

Bonjour à tous.


Un bricolage à adapter...​


Bonne journée.


ℝOGER2327
#8194


Samedi 7 Gueules 143 (Saint Gueule, abbé - fête Suprême Quarte)
12 Pluviôse An CCXXIV, 5,6805h - brocoli
2016-W05-1T13:38:00Z
 

Pièces jointes

  • LectureCouleurFondCellule.xlsm
    22 KB · Affichages: 37

mécano41

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

Une idée...regarde si cela fonctionne bien chez toi...je ne sais pas si cela va bien pour 1 million de lignes...

(cela fonctionne avec une plage de plusieurs colonnes)

Cordialement
 

Pièces jointes

  • Couleur fond par MFC2 .xlsm
    20 KB · Affichages: 41

job75

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

Re, bonjour Roger,

En complément voyez cette fonction fourre-tout qui gère les références :

Code:
Function REF(r As Range, Optional NumeroFeuil = 1, Optional adresse = False)
If adresse Then REF = r.Address(0, 0) _
  Else Set REF = IIf(NumeroFeuil = 1, Feuil1, Feuil2).Range(r.Address)
End Function
Elle renvoie soit l'adresse de la référence (colonne I) soit la référence dans la feuille indiquée (colonne J).

Fichier (3).

A+
 

Pièces jointes

  • Couleurs(3).xlsm
    19.7 KB · Affichages: 43
Dernière édition:

VIARD

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

Bonjour à Tous

Les procédures utilisant (DisplayFormat.Interior.ColorIndex) ne fonctionnent que sur office2013 et après, mais office2007 c'est râpé.
par contre avec la procédure de "L.Longre" pas de souci, je l'appel depuis une autre c'est tout bon.

A+ Jean-Paul
 

Discussions similaires

Réponses
12
Affichages
208

Statistiques des forums

Discussions
312 199
Messages
2 086 161
Membres
103 148
dernier inscrit
lulu56