XL 2016 [RESOLU] Obtenir la couleur de remplissage d'une MFC

Brain Box

XLDnaute Nouveau
Bonjour à tous ! :)

Je viens solliciter le forum pour une histoire qui me tracasse depuis quelques jours, et pour laquelle je ne vois pas de fin ! Pour une fois (!) je vais faire simple : à partir de bouts de codes piochés à droite / à gauche sur internet, je me suis créé une macro permettant d'extraire la couleur de remplissage d'une cellule (en Long ou RGB).

Malheureusement, cette macro est incomplète, car je ne sais pas comment lire les couleurs des objets de type 'Top10', 'AboveAverage' et 'ColorScale'. Et il se trouve que ces objets sont assez peu commentés sur le net...

En l'état j'ai placé une MsgBox si ce type de MFC est rencontré, mais je préférerais bien sûr disposer des jeux de couleurs :)

Merci d'avance pour vos lumières, et à tous ceux qui prendront un peu de leur temps pour répondre.

Cordialement,

Maxence
 

Pièces jointes

  • Macro Couleur Cellule.xlsm
    31.2 KB · Affichages: 47
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Le mieux c'est d'affecter par un Set le membre de la collection FormatConditions à une variable de son propre type. As ColorScale pour xlColorScale.
Ça permet déjà au moins de se débrouiller plus facilement avec les propriétés suggérées derrière un point.
Un tout petit bout de code exhibé pour illustrer :
VB:
   Case xlColorScale: Set CS = OBjFC
      For N = 1 To CS.ColorScaleCriteria.Count
         L = L + 1
         If Sortie Then
            CS.ColorScaleCriteria(N).FormatColor.Color = Cells(L, "K").Interior.Color
         Else
            Cells(L, "K").Interior.Color = CS.ColorScaleCriteria(N).FormatColor.Color
Je n'ai jamais traité les types :
' Case xlDatabar: Case xlTop10: Case XlIconSet: Case xlUniqueValues
' Case xlTimePeriod: Case xlAboveAverageCondition
' Case xlErrorsCondition: Case xlNoErrorsCondition
Mais on devrait pouvoir faire pareil. Certains donnent d'ailleurs peut être lieu à un simple FormatCondition, c'est le cas de la plupart.
 
Dernière édition:

Brain Box

XLDnaute Nouveau
Bonsoir à vous,

Désolé du retard, j'ai bien vu vos réponses mais je n'ai pas trouvé le temps de me poser pour répondre avant maintenant !

Dranreb: Comment redéfinis-tu le type d'une variable en cours de macro dans VBA ? (en l’occurrence mon FormatMFC qui est définit comme Variant) Ou alors tu crées une nouvelle variable / nouvel objet du type en question ?

ODVJ: Merci pour ton retour ! Le second lien est trop ancien (avant XL 2007 donc les MFC étaient gérées différemment), mais le premier contient un lien qui ramène sur un topic Excel-Downloads (!), qui contient un document intéressant. À creuser quand j'aurais un peu de temps.

Ce lien n'existe plus / JM: Je confirme qu'avec DisplayFormat je peux tout à fait retrouver le numéro de couleur (et en une seule ligne s'il vous plait !), mais j'ai cru voir sur l'aide Office que c'est le genre d'instruction que l'on ne peut pas mettre en formule personnalisée... Ce que j'aurais aimé faire dans un second temps !

Merci à tous pour vos apports !

Maxence
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 400
Membres
102 883
dernier inscrit
jameseyz