[Excel] Utilise Macro Couleur fond -> Texte

Demky Messages postés 18 Statut Membre -  
Demky Messages postés 18 Statut Membre -
Bonjour,

J'utilise dans mon fichier exccel, cette macro :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 _
And Target.Row >= 2 Then
If UCase(Target.Value) = "0" Then
Target.EntireRow.Interior.ColorIndex = 22
Else
Target.EntireRow.Interior.ColorIndex = 0
End If
End If
End Sub

Celle-ci, me permet Lorsque l'Une des case de la collone 8 est egale a 0, de changer toute la couleur de la ligne en question.

N'y connaissant rien en VB, j'essaye, sans trouver la solution, d'ajouter dans cette macro, une option afin qu'en plus de changer la couleur de toute la ligne;
Lorsque la condition précedente est vrai, Cela change la couleur du texte de la collone precedante (soit la collone 7) egalement...

J'ai essayer d'inventer pas mal de ligne de code mais rien n'y fait... la programation soit on connait les "bon" termes soit on n'y arrive pas...

Ce que j'ai essayer :/
Case.(Target.Column -1).Font.ColorIndex = 22 -> J'etait parti sur le principe que la macro se rendant compte que la Case X etait modifier, celle-ci aurai été apte a trouver la case x-1...

Bref j'ai essayer pas mal de chose qui ne fonctionne helas pas :/
A voir également:

4 réponses

Demky Messages postés 18 Statut Membre 2
 
up...
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

essaies:
Target.Offset(0, -1).EntireColumn.Interior.ColorIndex
0
Demky Messages postés 18 Statut Membre 2
 
Bonjour Michel_m ta ligne de code est dans l'idée de ce que je cherche a faire :

Private Sub Worksheet_Change(ByVal Target As Range)
' Quantité = 0 ?
' adapter le numéro de la colonne (ici 8)...
' et de ligne pour ne pas toucher aux lignes entête (ici 2)
If Target.Column = 8 _
And Target.Row >= 2 Then
If UCase(Target.Value) = "0" Then
Target.EntireRow.Interior.ColorIndex = 22
Target.Offset(0, -1).EntireColumn.Interior.ColorIndex = 22
Else
Target.EntireRow.Interior.ColorIndex = 0
End If
End If
End Sub

Le probleme, c'est que toute la colonne G passe en Color=22
Comment faire pour que seulement la case Gx passe en couleur ? (la case de la ligne ou G9 est egal a 0)
Plus compréhensible avec l'exemple :

/ A B C D
1 * * * *
2 * * * 0
3 * * * *

D2=0
La Ligne 2 passe en "color22".
Le texte de la Case C2 passe en "color22"
**-> nb : si, c'est D3 qui est egale a 0, c'est C3 qui passera son texte en couleur22.

Je vais essayer de chercher, mais si tu es toujours là, tu es le bienvenue :)

Edit :J'ai mis Font à la place de Interior, la modification s'effectue bien sur le texte, reste plus qu'a trouver comment n'agir que sur la case dx
Target.Offset(0, -1).EntireColumn.Font.ColorIndex = 22
0
Demky Messages postés 18 Statut Membre 2
 
Je pense avoir trouver la solution...
Je ne sais pas si c'est la bonne façon mais avec :

Private Sub Worksheet_Change(ByVal Target As Range)
' Quantité = 0 ?
' adapter le numéro de la colonne (ici 8)...
' et de ligne pour ne pas toucher aux lignes entête (ici 2)
If Target.Column = 8 _
And Target.Row >= 2 Then
If UCase(Target.Value) = "0" Then
Target.EntireRow.Interior.ColorIndex = 22
Target.Offset(0, -1).Font.ColorIndex = 22
Else
Target.EntireRow.Interior.ColorIndex = 0
End If
End If
End sub

Cela semble fonctioner :)
Merci beaucoup.
0