Comment rendre la police d'une cellule transparente?


18

Je crée une carte thermique à l'aide de la mise en forme conditionnelle d'Excel. Je ne veux pas que les valeurs de la cellule s'affichent sur le fond de couleur. Existe-t-il un moyen de rendre la mise en forme de la police transparente, similaire à ce qui se trouve dans la mise en forme de remplissage de la cellule?

Puisqu'il s'agit d'une carte thermique, je ne peux pas utiliser une seule couleur (par exemple le blanc) et je préférerais ne pas avoir à formater individuellement la propriété de police de chaque cellule à la couleur appropriée.

EDIT: Pour aider à clarifier, la carte de chaleur est colorée à l'aide de la mise en forme conditionnelle> échelle de couleurs> rouge-blanc-bleu (où le blanc a été modifié en gris clair), de sorte que la valeur de remplissage de la cellule n'est pas directement définie, mais plutôt une valeur calculée sur un dégradé de couleurs.

Carte de chaleur

Réponses:


29

J'ai trouvé une solution de contournement qui ne change pas la couleur de la police, mais supprime efficacement le texte des cellules. Réglez le format du numéro de cellule sur Personnalisé, avec une valeur de ;;;.


Génial, cela fonctionne comme n'importe quoi
Dev_Man

3

Bien que je ne sois au courant d'aucune fonctionnalité de feuille de calcul pour faire correspondre la couleur de police d'une cellule à sa couleur de remplissage (autre que manuellement), il est très facile de le faire avec une macro. La première macro ci-dessous modifie les couleurs de police dans les cellules d'une plage sélectionnée pour correspondre à leurs couleurs de remplissage. La seconde ramène les couleurs de police au noir par défaut.

Sub HideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = cell.Interior.Color
    Next cell
End Sub

Sub UnhideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = 0
    Next cell
End Sub

Pour installer les macros, sélectionnez Developer/ Visual Basicdans le ruban principal, puis choisissez Insert/ Moduledans le menu. Collez le code dans le volet d'édition qui s'ouvre. Les macros apparaîtront dans la liste des macros accessible en choisissant Developer/ Macrosdans le ruban principal. Sélectionnez simplement avec la souris la plage que vous souhaitez modifier et choisissez la macro que vous souhaitez exécuter.


Approche très intéressante. Je l'ai essayé et cela fonctionne dans une cellule remplie de format noramlly (c'est-à-dire où le format de cellule est directement sélectionné). Malheureusement, cela ne fonctionne pas lorsque la couleur de la cellule est un format conditionnel sur un dégradé, puis elle passe simplement au blanc. Des pensées?
dav

C'est dommage. Les réponses dans ce post StackOverflow suggèrent une approche. Va vérifier plus tard dans la journée.
chuff

Merci, pour l'instant j'utilise ma triche au format numérique, mais je vais travailler sur le VBA référencé dans votre lien pour obtenir une meilleure solution à long terme.
dav

Désolé de changer la réponse acceptée, mais avec la disparité des votes, cela semblait approprié. En outre, cela correspond à la méthode que j'utilise régulièrement maintenant.
dav

1

D'accord, c'est la première fois que je soumets du code, alors voilà. Je pensais que la macro serait la voie à suivre, mais comme vous ne pouvez pas définir la police comme la couleur de la cellule en utilisant la mise en forme conditionnelle, la seule autre façon serait de changer les deux avec une macro qui fonctionne de la même manière que effet du format conditionnel, voir ci-dessous:

Sub change()

    Dim Rstart, Rmid, Rend, Gstart, Gmid, Gend, Bstart, Bmid, Bend, Rsd, Rdd,_
    Gsd, Gdd, Bsd, Bdd, Rcell, Gcell, Bcell As Integer
    Dim maxsel, minsel, halfsel, halfval, v As Double



    Rstart = 0
    Rmid = 230
    Rend = 255
    Gstart = 0 
    Gmid = 230
    Gend = 0
    Bstart = 255
    Bmid = 230
    Bend = 0

    Rsd = Rmid - Rstart
    Rdd = Rend - Rmid

    Gsd = Gmid - Gstart
    Gdd = Gend - Gmid

    Bsd = Bmid - Bstart
    Bdd = Bend - Bmid

    maxsel = Application.WorksheetFunction.Max(Selection)
    minsel = Application.WorksheetFunction.Min(Selection)
    halfsel = (maxsel - minsel) / 2
    halfval = minsel + halfsel
    If halfval = 0 Then Exit Sub

    Dim cell As Variant
    For Each cell In Selection
        v = cell.Value
        If v >= minsel And v < halfsel Then
            Rcell = Round((Rstart + ((halfval - v) / halfsel) * Rsd), 0)
            Gcell = Round((Gstart + ((halfval - v) / halfsel) * Gsd), 0)
            Bcell = Round((Bstart + ((halfval - v) / halfsel) * Bsd), 0)
        Else
            Rcell = Round((Rmid + ((v - halfval) / halfsel) * Rdd), 0)
            Gcell = Round((Gmid + ((v - halfval) / halfsel) * Gdd), 0)
            Bcell = Round((Bmid + ((v - halfval) / halfsel) * Bdd), 0)
        End If

    cell.Font.Color = RGB(Rcell, Gcell, Bcell)
    cell.Interior.Color = RGB(Rcell, Gcell, Bcell)

    Next cell

    End Sub

J'espère que cela aide quelqu'un, même s'il est trois ans trop tard pour la question d'origine.


1

Voilà comment je le fais.

.Cells (RowTo, ColHcpDiP) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Définir la couleur invisible

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.