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.
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 ;;;
.
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.
C'est comme ça que je le fais.
.Cells (RowTo, ColHcpDiP) .Font.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Définir la couleur invisible
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.