Formule Excel -- Couleur case?

Hello,

Est-il possible d'avoir une formule, soit par macro ou pas, qui interprète 3 valeurs décimales R G et B et donner la couleur à la case où se trouve la formule?

En vous remerciant par avance

Fred

Bonjour,

D'après ce que je crois comprendre de votre besoin, une MFC devrait y répondre.

Pouvez-vous poster un fichier exemple avec le résultat attendu ?

Bonjour Fredel

un fichier exemple avec plusieurs

possibilités de choisir sa couleur le code exemple est à placer dans un module

Amicalement

Pierrot,

Merci

En fait mon souhait est que la formule puisse donner la couleur selon le code couleur en décimal

Il y a 2-3 ans on m'a donné une formule pour colorier des objets ( =Afficheimage(objet;condition;code couleur en décimal) et j'avais cette macro là :

Function afficheImage(s, ok, couleur)
  Set f = Sheets(Application.Caller.Parent.Name)
  f.Shapes(s).Visible = ok
f.Shapes(s).Fill.ForeColor.RGB = couleur
End Function

    Sub test()
    ActiveSheet.Shapes(1).DrawingObject.Interior.ColorIndex = 3

  f.Shapes(s).Visible = ok.Fill.ForeColor.RGB = couleur
    End Sub

Serait-il possible d'avoir le même, mais pour la case là ou se trouve la formule?

85couleur.xlsx (10.58 Ko)

Désolé, cela dépasse mes connaissances

Pierrot

Bonjour,

Si tu veux taper une formule dans une cellule et qu'elle se colorie, n'y pense plus ! Aucune fonction de feuille de calcul ne peut faire cela. Interdit par Microsoft !

Et tes procédures citées (une Function qui n'en est d'ailleurs pas une et une Sub) ne faisaient nullement cela...

Maintenant, tu peux taper une formule qui renvoie une valeur, ou une valeur directement, déclenchant une procédure d'évènement qui pourra colorier la cellule en fonction de la valeur, et même effacer la valeur ensuite...

Ton tableau peut servir de référence pour les couleurs utilisées...

Cordialement.

Alors je me penche sur un autre souhait, par exemple dans le fichier excel de Pierrot. La macro cible une case.

Est-ce alors possible comme la macro que j'ai pris en exemple dans mon post précédement, au lieu de la référence de l'objet, on met la référence de la case ciblée?

J'ai par exemple idée d'utiliser la case à droite de la case avec la formule?

Est ce possible encore?

Un exemple sur ton fichier :

La plage M3:M14 est nommée : MesCouleurs. Elle définit des valeurs de couleur (12) que tu peux désigner par leur rang dans la plage (1 à 12).

Tu crées une fonction MACOULEUR, assorti d'un argument Integer qui permettra de lui indiquer la couleur souhaitée (de 1 à 12).

Function MACOULEUR(clr As Integer)
    MACOULEUR = [MesCouleurs].Cells(clr, 1).Value
End Function

Cette fonction doit être placée dans un module Standard.

Tu tapes par exemple : =MACOULEUR(12) dans une cellule, la formule renverra la valeur de couleur indiquée par ton tableau MesCouleurs.

Dans le module de la feuille tu définis un procédure d'évènement Change.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.HasFormula Then
        If Target.Formula Like "*MACOULEUR*" Then
            Target.Interior.Color = Target.Value
            Target.ClearContents
        End If
    End If
End Sub

Cette procédure va se déclencher chaque fois qu'une cellule est modifiée dans la feuille. Donc quand tu tapes ta formule.

Elle teste si la cellule modifiée contient une formule. Si c'est le cas, elle vérifie que le texte de la formule contient "MACOULEUR".

Et si c'est le cas, elle colorie la cellule en appliquant la valeur de couleur que la fonction renvoie dans la cellule.

Et elle efface la cellule (tu peux ne pas l'effacer, mais une fois la cellule coloriée, la valeur de couleur ne sert plus).

Cordialement.

89fredel-couleur.xlsm (17.30 Ko)

Merci MFerrand,

Je recherchais plutôt quelque chose qui correspond à un simple affichage de la couleur à coté de la cellule avec le code couleur en décimal, juste un affichage en "temps réel" sans à avoir appuyer sur un bouton ou faire une autre manip.

Un peu comme le fichier de Pierrot apporté précédemment, mais avec la simplicité de la formule pour changer la couleur d'un objet, indiqué précédemment. L'idée c'est de voir la couleur qui s'affiche pour pouvoir ensuite ajuster les valeurs RGB.

Si avec une macro et une formule est impossible, je vais plutôt me tourner sur l'idée de Pierrot.

Mais il te suffit d'écrire la proc. Change en conséquence !

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.HasFormula Then
        If Target.Formula Like "*MACOULEUR*" Then
            Target.Offset(, 1).Interior.Color = Target.Value
        End If
    End If
End Sub

Quand on peut faire une chose à partir de la saisie dans une cellule, on peut tout faire !

Bonjour,

Une autre méthode avec un UserForm

de quelles couleurs as-tu besoin ?

Pierrot

Une autre version avec un UserForm

Pierrot

Bonjour, MFerrand , Fredel

tout ce que je peux faire, c'est attribuer une couleur à la cellule en fonction du code RVB, voir mon UserForm, mais je ne vois pas comment faire avec une valeur RVB dans une cellule ? et appliquer la couleur dans la cellule voisine ? je ne sais rien faire d'autre.

Amicalement

Pierrot

Rechercher des sujets similaires à "formule couleur case"