Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

modification de couleur de cellule

5 réponses
Avatar
jcm
Bonjour,

je cherche à modifier la couleur d'une cellule A suivant 2 conditions
matérialisée par la valeur de 2 autres cellules B et C. Lorsque la
valeur d'une de ces 2 cellules B ou C change, je voudrais que la couleur
de la cellule A évolue suivant un petit algorythme.
J'ai essayé de le faire en créant une fonction mais je ne suis pas
parvenu ou mal pris. Est-ce possible de modifier la couleur d'une
cellule avec une fonction excel ? comment ?

merci d'avance pour votre aide.

JCM

5 réponses

Avatar
Leonello
Bonsoir,
A ma connaissance, il n'est pas possible de modifier la couleur d'une
cellule par une fonction.

Par contre, il existe la "mise en forme conditionnelle" ( un peu limité )
mais aussi VBA.



Un exemple à bricoler :

La macro ci-dessous, fait la chose suivante :
Si l'on saisie un chiffre dans la zone "B2:J2", alors "coloriage de la
cellule du dessous, suivant le chiffre saisie.


Private Sub Worksheet_Change(ByVal plage As Range)
Dim cell As Object ' Cellule
Dim zone As Range ' zone de travail
'
On Error Resume Next ' Reprise en cas d'erreur
Application.ScreenUpdating = False ' suppression rafraichissement de l'écran
pendant l'execution de la macro
'
Set zone = Range("B2:J2") ' Selection de la zone de travail
'
If Not (Intersect(plage, zone) Is Nothing) Then ' si la plage est dans la
zone
For Each cell In zone
Select Case cell.Value
Case "":
cell.Offset(1, 0).Interior.ColorIndex = 0
cell.Offset(1, 0).Font.ColorIndex = 1
Case 1:
cell.Offset(1, 0).Interior.ColorIndex = 3
cell.Offset(1, 0).Font.ColorIndex = 8
Case 2:
cell.Offset(1, 0).Interior.ColorIndex = 4
cell.Offset(1, 0).Font.ColorIndex = 3
Case 3:
cell.Offset(1, 0).Interior.ColorIndex = 5
cell.Offset(1, 0).Font.ColorIndex = 3
Case 4:
cell.Offset(1, 0).Interior.ColorIndex = 6
cell.Offset(1, 0).Font.ColorIndex = 3
Case 5:
cell.Offset(1, 0).Interior.ColorIndex = 7
cell.Offset(1, 0).Font.ColorIndex = 3
Case 6:
cell.Offset(1, 0).Interior.ColorIndex = 8
cell.Offset(1, 0).Font.ColorIndex = 3
Case 7:
cell.Offset(1, 0).Interior.ColorIndex = 9
cell.Offset(1, 0).Font.ColorIndex = 3
Case Else:
cell.Interior.ColorIndex = 0
cell.Font.ColorIndex = 0
End Select
Next cell
End If
End Sub



--

Amicalement,
leo

"jcm" a écrit dans le message de news:
4419c461$0$7689$
Bonjour,

je cherche à modifier la couleur d'une cellule A suivant 2 conditions
matérialisée par la valeur de 2 autres cellules B et C. Lorsque la valeur
d'une de ces 2 cellules B ou C change, je voudrais que la couleur de la
cellule A évolue suivant un petit algorythme.
J'ai essayé de le faire en créant une fonction mais je ne suis pas parvenu
ou mal pris. Est-ce possible de modifier la couleur d'une cellule avec une
fonction excel ? comment ?

merci d'avance pour votre aide.

JCM


Avatar
jcm
Pour info, le code suivant dans une sub invoqué par un bouton fonctionne
alors que le même code dans une function ne fonctionne pas :

Dim ObjRange As Range

Set ObjRange = Range("c4")
With ObjRange.Interior
.ColorIndex = 3
End With

Je ne comprends pas pourquoi il n'est pas possible de le faire à travers
une fonction.

Bonsoir,
A ma connaissance, il n'est pas possible de modifier la couleur d'une
cellule par une fonction.

Par contre, il existe la "mise en forme conditionnelle" ( un peu limité )
mais aussi VBA.



Un exemple à bricoler :

La macro ci-dessous, fait la chose suivante :
Si l'on saisie un chiffre dans la zone "B2:J2", alors "coloriage de la
cellule du dessous, suivant le chiffre saisie.


Private Sub Worksheet_Change(ByVal plage As Range)
Dim cell As Object ' Cellule
Dim zone As Range ' zone de travail
'
On Error Resume Next ' Reprise en cas d'erreur
Application.ScreenUpdating = False ' suppression rafraichissement de l'écran
pendant l'execution de la macro
'
Set zone = Range("B2:J2") ' Selection de la zone de travail
'
If Not (Intersect(plage, zone) Is Nothing) Then ' si la plage est dans la
zone
For Each cell In zone
Select Case cell.Value
Case "":
cell.Offset(1, 0).Interior.ColorIndex = 0
cell.Offset(1, 0).Font.ColorIndex = 1
Case 1:
cell.Offset(1, 0).Interior.ColorIndex = 3
cell.Offset(1, 0).Font.ColorIndex = 8
Case 2:
cell.Offset(1, 0).Interior.ColorIndex = 4
cell.Offset(1, 0).Font.ColorIndex = 3
Case 3:
cell.Offset(1, 0).Interior.ColorIndex = 5
cell.Offset(1, 0).Font.ColorIndex = 3
Case 4:
cell.Offset(1, 0).Interior.ColorIndex = 6
cell.Offset(1, 0).Font.ColorIndex = 3
Case 5:
cell.Offset(1, 0).Interior.ColorIndex = 7
cell.Offset(1, 0).Font.ColorIndex = 3
Case 6:
cell.Offset(1, 0).Interior.ColorIndex = 8
cell.Offset(1, 0).Font.ColorIndex = 3
Case 7:
cell.Offset(1, 0).Interior.ColorIndex = 9
cell.Offset(1, 0).Font.ColorIndex = 3
Case Else:
cell.Interior.ColorIndex = 0
cell.Font.ColorIndex = 0
End Select
Next cell
End If
End Sub





Avatar
Leonello
Bonsoir,

A ma connaissance, une fonction ne renvoi qu'une valeur et une seule: le
contenu de la cellule.

--

Amicalement,
leo

"jcm" a écrit dans le message de news:
4419de0b$0$29658$
Pour info, le code suivant dans une sub invoqué par un bouton fonctionne
alors que le même code dans une function ne fonctionne pas :

Dim ObjRange As Range

Set ObjRange = Range("c4")
With ObjRange.Interior
.ColorIndex = 3
End With

Je ne comprends pas pourquoi il n'est pas possible de le faire à travers
une fonction.

Bonsoir,
A ma connaissance, il n'est pas possible de modifier la couleur d'une
cellule par une fonction.

Par contre, il existe la "mise en forme conditionnelle" ( un peu limité )
mais aussi VBA.



Un exemple à bricoler :

La macro ci-dessous, fait la chose suivante :
Si l'on saisie un chiffre dans la zone "B2:J2", alors "coloriage de
la cellule du dessous, suivant le chiffre saisie.


Private Sub Worksheet_Change(ByVal plage As Range)
Dim cell As Object ' Cellule
Dim zone As Range ' zone de travail
'
On Error Resume Next ' Reprise en cas d'erreur
Application.ScreenUpdating = False ' suppression rafraichissement de
l'écran pendant l'execution de la macro
'
Set zone = Range("B2:J2") ' Selection de la zone de travail
'
If Not (Intersect(plage, zone) Is Nothing) Then ' si la plage est dans
la zone
For Each cell In zone
Select Case cell.Value
Case "":
cell.Offset(1, 0).Interior.ColorIndex = 0
cell.Offset(1, 0).Font.ColorIndex = 1
Case 1:
cell.Offset(1, 0).Interior.ColorIndex = 3
cell.Offset(1, 0).Font.ColorIndex = 8
Case 2:
cell.Offset(1, 0).Interior.ColorIndex = 4
cell.Offset(1, 0).Font.ColorIndex = 3
Case 3:
cell.Offset(1, 0).Interior.ColorIndex = 5
cell.Offset(1, 0).Font.ColorIndex = 3
Case 4:
cell.Offset(1, 0).Interior.ColorIndex = 6
cell.Offset(1, 0).Font.ColorIndex = 3
Case 5:
cell.Offset(1, 0).Interior.ColorIndex = 7
cell.Offset(1, 0).Font.ColorIndex = 3
Case 6:
cell.Offset(1, 0).Interior.ColorIndex = 8
cell.Offset(1, 0).Font.ColorIndex = 3
Case 7:
cell.Offset(1, 0).Interior.ColorIndex = 9
cell.Offset(1, 0).Font.ColorIndex = 3
Case Else:
cell.Interior.ColorIndex = 0
cell.Font.ColorIndex = 0
End Select
Next cell
End If
End Sub






Avatar
jcm
Dans ce cas, si je passe à travers une macro, comment est-il possible
d'invoquer une macro à la suite d'un changement de valeur de cellule ?

Bonsoir,

A ma connaissance, une fonction ne renvoi qu'une valeur et une seule: le
contenu de la cellule.



Avatar
Leonello
Bonsoir,
En invoquant l'événement : Private Sub Worksheet_Change

Voir l'exemple joint dans mon post précédent.

Ensuite avec Intersect..... tu sélectionne la zone

--

Amicalement,
leo

"jcm" a écrit dans le message de news:
4419e210$0$29631$
Dans ce cas, si je passe à travers une macro, comment est-il possible
d'invoquer une macro à la suite d'un changement de valeur de cellule ?

Bonsoir,

A ma connaissance, une fonction ne renvoi qu'une valeur et une seule: le
contenu de la cellule.