Coloration cellule en fonction du résultat

amocco

XLDnaute Occasionnel
Bonjour ,

Pourriez vous me dire comment , en VBA, colorier les cellules J8 à X8 en fonction du resultat dans la cellule I8 .
Par exemple j ai le code AA en I8 , donc les cellules de J8 à X8 se colorient en bleu
et ainsi de suite a chaque ligne ...

merci pour votre aide
 

Pièces jointes

  • test.zip
    1.7 KB · Affichages: 21
  • test.zip
    1.7 KB · Affichages: 24
  • test.zip
    1.7 KB · Affichages: 20

ROGER2327

XLDnaute Barbatruc
Re : Coloration cellule en fonction du résultat

Bonjour amocco
Essayez la procédure évènementielle (à placer dans la feuille Feuil1 de votre classeur) que voici :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim codCol As Range, oCel As Range, oDat As Range
   If Not Intersect(Target, Columns(9)) Is Nothing Then
      Set codCol = Range("Z3:Z13")
      With Intersect(Target, Columns(9))
         For Each oDat In .Cells
            For Each oCel In codCol.Cells
               If oDat.Value = oCel.Value Then
                  oDat.Offset(0, 1).Resize(1, 15).Interior.ColorIndex = oCel.Interior.ColorIndex
                  Exit For
               End If
            Next oCel
         Next oDat
      End With
   End If
End Sub[/B][/COLOR]
ROGER2327
#3518


Vendredi 6 Merdre 137 (Saint Cucufat, mécène, SQ)
4 Prairial An CCXVIII
2010-W20-7T08:17:48Z
 

amocco

XLDnaute Occasionnel
Re : Coloration cellule en fonction du résultat

Bonjour ROGER2327
Par contre la cellule I8 change lorsque je rentre des paramètres dans d'autres cellules . Donc j obtiens d'autres codes.et la cela ne marche plus car les couleurs ne se re-actualise pas .

merci
 

ROGER2327

XLDnaute Barbatruc
Re : Coloration cellule en fonction du résultat

Re...
S'il y a une formule dans les cellules de la colonne I, il est normal que la procédure ne fonctionne pas correctement.
Dans ce cas, essayez ce code :
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
Dim codCol As Range, oCel As Range, oDat As Range, antCel As Range
   Set antCel = Range("A2:A5, A11, C1:E1") [COLOR="SeaGreen"]'Plage des cellules qui provoquent une mise à jour dans la colonne 9. À adapter...[/COLOR]
   If Not Intersect(Target, antCel) Is Nothing Then
      With Range(Cells(1, 9), Cells(Rows.Count, 9).End(xlUp))
         .Copy Destination:=.Cells
      End With
   ElseIf Not Intersect(Target, Columns(9)) Is Nothing Then
      Set codCol = Range("Z3:Z13")
      With Intersect(Target, Columns(9))
         For Each oDat In .Cells
            For Each oCel In codCol.Cells
               If oDat.Value = oCel.Value Then
                  oDat.Offset(0, 1).Resize(1, 15).Interior.ColorIndex = oCel.Interior.ColorIndex
                  Exit For
               End If
            Next oCel
         Next oDat
      End With
   End If
End Sub[/B][/COLOR]
Il faut adapter la définition de antCel à vos besoins.
Je joins un classeur de démonstration dans lequel les cellules qui provoquent les modifications dans la colonne I sont A2:A5, A11, C1:E1.​
ROGER2327
#3628


Mardi 17 Merdre 137 (Saint Saint Woland, professeur, SQ)
15 Prairial An CCXVIII
2010-W22-4T12:30:41Z
 

Pièces jointes

  • Test_3628.xls
    20 KB · Affichages: 54

Discussions similaires

Réponses
2
Affichages
196
Réponses
1
Affichages
213

Statistiques des forums

Discussions
312 371
Messages
2 087 700
Membres
103 645
dernier inscrit
rafh57