web-dev-qa-db-fra.com

Comment puis-je rendre la police d'une cellule transparente?

Je crée une carte thermique en utilisant 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 à celle trouvée 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 avec la couleur appropriée.

EDIT: Pour clarifier, la carte thermique est colorée à l'aide de Mise en forme conditionnelle> Échelle de couleur> Rouge-Blanc-Bleu (le blanc a été modifié en gris clair ), la valeur de remplissage de la cellule n’est donc pas directement définie, mais plutôt une valeur calculée sur un dégradé de couleur.

Heatmap

17
dav

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

28
dav

Bien que je ne sache aucune fonctionnalité de la feuille de calcul permettant de faire correspondre la couleur de police d'une cellule à sa couleur de remplissage (autre que manuellement), il est très facile à utiliser avec une macro. La première macro ci-dessous modifie la/les couleur (s) de police dans les cellules d'une plage sélectionnée pour correspondre à leurs couleurs de remplissage. La seconde renvoie les couleurs de la 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 Basic dans le ruban principal, puis choisissez Insert/Module dans 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/Macros dans le ruban principal. Sélectionnez simplement avec la souris la plage que vous souhaitez modifier et choisissez la macro que vous souhaitez exécuter.

3
chuff

C'est comme ça que je le fais.

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

1
user685761

Bon, c'est la première fois que je soumets du code, alors allez-y. Je pensais que la route des macros serait la voie à suivre, mais comme vous ne pouvez pas définir la police de manière à ce qu'elle soit identique à la couleur de la cellule à l'aide de la mise en forme conditionnelle, la seule autre méthode consiste à modifier les deux avec une macro qui fonctionne de la même manière. 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 aidera quelqu'un, même s'il est trois ans trop tard pour la question initiale.

1
timbosides