test logique couleur cellule

F

frederic masek

Guest
bonjour à tous,
voilà, je voudrais utiliser la formule "si", avec pout test logique la couleur d'une cellule, exemple:
si "cellule est verte", faire somme
ou alors plus exactement, je voudrais faire une somme si les cellules sont vertes (une somme de la valeur des cellule, et pas du nombre de cellule verte)
j'espère que je me suis fais comprendre.
merci d'avance
 
R

Rai

Guest
Bonjour,

A priori, il n'est pas possible de faire la somme ainsi que tu le proposes.

Je vois 2 solutions principales.
1. tes cellules coloriées le sont certainnement selon une certainne logique : genre si >0 alors fond vert (par le biais d'une MEFC par ex.) dans ce cas, une formule avec un Somme.Si ou un SommeProd devrait pouvoir te sortir d'affaire.

2. utiliser le VBA pour créer une fonction personnalisée. Dans le genre de celle qui suit (à insérer daéns un module du VBE)

Function SommeCouleur(Plage As Range, Optional couleur As Integer)
Application.Volatile
If couleur = 0 Then couleur = xlColorIndexNone
For Each c In Plage
If c.Interior.ColorIndex = couleur Then SommeCouleur = SommeCouleur + c.Value
Next c
End Function

Maintenant il te suffit d'écrire
=SOMMECOULEUR(A1:B72;4)
pour obtenir la somme des cellules qui ont un fond vert contenues dans la plage A1:B72
Pour les n° de couleur :
1=noir, 2=blanc (et non absence de couleur), 3=rouge, 4=vert, 5=bleu, 6=jaune, 7=rose, 8=bleu clair
L'argument N° de couleur est optionnel.
si tu écris
=SOMMECOULEUR(A1:B72)
tu obtiendras la somme des cellules pourlesquelles aucune couleur de fond n'a été définie (ne pas confondre avec le blanc)

Bonne continuation

Rai
 
J

Jean-Marie

Guest
Bonjour tout le monde

Non Frédéric, tu as la solution de Rai en utilisant le code VBA.

Voici un autre code, la couleur n'est pas donnée par un numéro, mais par la couleur dans une cellule.
Public Function NbColor(Plage As Range, vCellcolor As Range) As Byte
Dim vColorTest As Long
Dim Compteur As Long
Dim vColorCell As Range

Compteur = 0
vColorTest = vCellcolor.Interior.Color
For Each vColorCell In Plage
If vColorCell.Interior.Color = vColorTest Then
Compteur = Compteur + 1
End If
Next vColorCell

NbColor = Compteur
End Function

Par exemple :
A1:A20 est la plage de cellule susceptible d'avoir les couleurs
A21 est la référence de la cellue qui contient la couleur à tester.
Et de saisir dans une cellule =NbColor(A1:A20;A21)

@+Jean-Marie
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz