Autres problème sous excel 2007. changer la couleur du texte en couleur de fond de cellule

goeland31

XLDnaute Nouveau
Bonjour,



Je dois refaire une mise en forme sur un tableau dont le texte un "X" a été mis soit en rouge, soit en jaune, soit en vert dans chaque cellule.

Par souci de lisibilité, je préfèrerais que le fond de la cellule soit en rouge, jaune, vert (de la même couleur que le texte de départ donc ...)



j'ai regardé au niveau de la mise en forme conditionnelle mais je ne vois pas comment faire...

je ne me vois pas faire les 600 cases une par une



qui a une idée? merci par avance
 
Solution
@goeland31

Je te propose une solution générale, car :

a) la dernière colonne utilisée est détectée automatiquement selon la ligne 4
➯ ça marchera même pour un tableau qui a plus de colonnes.

b) pour chaque colonne, la dernière ligne utilisée est détectée ➯ ça marchera
même si la dernière cellule d'une colonne est vide ; et même s'il y a plusieurs
cellules vides en fin de colonne
.

fais Ctrl e ➯ travail effectué

Tu verras que ça met pour la couleur du fond la même que celle du texte,
puis ça met le texte en blanc ; les cellules vides sont ignorées ; en fait, ça
fait le job pour toute cellule non vide, donc...

soan

XLDnaute Barbatruc
Inactif
Bonjour goeland31,

Tu as écrit : « Par souci de lisibilité, je préférerais que le fond de la cellule soit
en rouge, jaune, vert (de la même couleur que le texte de départ donc...) »


Euh, je suis pas vraiment sûr que ce soit l'idéal ! d'ailleurs, mon caméléon est
d'accord avec moi : texte rouge / fond rouge ; ou texte jaune / fond jaune ;
ou texte vert / fond vert : tu risques de découvrir le principe de l'invisibilité !

Maintenant, si tu veux jouer à l'Homme invisible,
c'est une bonne piste à explorer !
:p

soan
 

goeland31

XLDnaute Nouveau
en fait c'est un collègue qui m'a envoyé ces croix. Tous les autres m'ont envoyé avec les fonds de cellule en rouge, jaune ou vert.
C'est pour avoir qq chose de similaire pour tout le monde.

Mais pourquoi ai je dit que je voulais synthétiser tout cela aussi :mad:
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
ben c'est simple
exemple
VB:
Sub colortextToBackground()
    Set plage = Range("feuil1!B1:U34")
    For Each cel In plage.Cells
        If cel.Font.Color <> vbBlack And Not IsNull(cel.Font.Color) Then
            cel.Interior.Color = cel.Font.Color
            cel.Font.Color = vbBlack 'si tu ne veux pas que tes "X" soient  invisible'
        End If
    Next
End Sub
 

patricktoulon

XLDnaute Barbatruc
colle le code que j'ai mis dans un module et lance la sub c'est tout
ppour les eventuelles cells vides qui auraient été formaté pour la couleur du text on les met blanches d'office

VB:
Sub colortextToBackground()

    Set plage = Range("feuil1!B1:U34")
    For Each cel In plage.Cells
        If cel.Font.Color <> vbBlack And Not IsNull(cel.Font.Color) and cel.value<>""Then
            cel.Interior.Color = cel.Font.Color
            cel.Font.Color = vbBlack 'si tu ne veux pas que tes "X" soient  invisible'
        else
            cel.Interior.Color = xlnode
            cel.Font.Color = vbBlack 'si tu ne veux pas que tes "X" soient  invisible'
        End If
    Next

End Sub
 

soan

XLDnaute Barbatruc
Inactif
@goeland31

Je te propose une solution générale, car :

a) la dernière colonne utilisée est détectée automatiquement selon la ligne 4
➯ ça marchera même pour un tableau qui a plus de colonnes.

b) pour chaque colonne, la dernière ligne utilisée est détectée ➯ ça marchera
même si la dernière cellule d'une colonne est vide ; et même s'il y a plusieurs
cellules vides en fin de colonne
.

fais Ctrl e ➯ travail effectué

Tu verras que ça met pour la couleur du fond la même que celle du texte,
puis ça met le texte en blanc ; les cellules vides sont ignorées ; en fait, ça
fait le job pour toute cellule non vide, donc même s'il y a autre chose
que "X
".


Voici le code VBA :

VB:
Option Explicit

Sub ChgColor()
  Dim nlm&, dcol%, col%, dlig&, lig&, cx&
  nlm = Rows.Count: Application.ScreenUpdating = 0
  dcol = Cells(4, Columns.Count).End(1).Column
  For col = 2 To dcol
    dlig = Cells(nlm, col).End(3).Row
    For lig = 4 To dlig
      With Cells(lig, col)
        If .Value <> "" Then
          cx = .Font.Color: .Interior.Color = cx: .Font.ColorIndex = 2
        End If
      End With
    Next lig
  Next col
End Sub
À te lire pour avoir ton avis. ;)

soan
 

Pièces jointes

  • fichier croix.xlsm
    16 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
315 092
Messages
2 116 119
Membres
112 666
dernier inscrit
Coco0505