[Excel] Utilise Macro Couleur fond -> Texte

Fermé
Demky Messages postés 17 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 26 mars 2012 - 6 oct. 2009 à 23:28
Demky Messages postés 17 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 26 mars 2012 - 7 oct. 2009 à 10:47
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 :/

4 réponses

Demky Messages postés 17 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 26 mars 2012 2
7 oct. 2009 à 08:54
up...
0
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 3 292
7 oct. 2009 à 10:15
Bonjour,

essaies:
Target.Offset(0, -1).EntireColumn.Interior.ColorIndex
0
Demky Messages postés 17 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 26 mars 2012 2
7 oct. 2009 à 10:37
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 17 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 26 mars 2012 2
7 oct. 2009 à 10:47
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