Compter nombre de cases d'1 couleur selon couleur case adjacente
Julie
-
JvDo Messages postés 1924 Date d'inscription Statut Membre Dernière intervention -
JvDo Messages postés 1924 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à créer une formule qui me permettrait de compter le nombre de cases roses pour chaque département (représentés par une couleur).
L’idée est de dire :
Pour les cases colonne A (département) de la même couleur que la case D3
COMPTABILISER les cellules roses dans la colonne B
Et écrire la somme de ces cellules (nombre de cellule) dans la case F3
J'ai essayé plusieurs combinaisons mais sans succès.
Ravie de lire vos propositions!
Lien vers le fichier:
https://www.dropbox.com/s/qquoi3aos81qhht/Table%20Example.xlsx?dl=0
Je cherche à créer une formule qui me permettrait de compter le nombre de cases roses pour chaque département (représentés par une couleur).
L’idée est de dire :
Pour les cases colonne A (département) de la même couleur que la case D3
COMPTABILISER les cellules roses dans la colonne B
Et écrire la somme de ces cellules (nombre de cellule) dans la case F3
J'ai essayé plusieurs combinaisons mais sans succès.
Ravie de lire vos propositions!
Lien vers le fichier:
https://www.dropbox.com/s/qquoi3aos81qhht/Table%20Example.xlsx?dl=0
3 réponses
-
Bonjour.
Les formules ne peuvent pas reconnaître et gérer les couleurs.
Tu as donc le choix entre :- Obtenir les couleurs à l'aide de la Mise en forme conditionnelle
- Ecrire une macro en VBA.
-
Bonjour,
Oui, il s'agit ici de créer une VBA.
J'ai précédemment créé les deux formules suivantes pour d'autres calculs, mais cela ne me permets pas de résoudre mon problème:
Function NbColor(ByRef plage As Range, Couleur As Byte) As Long
Dim c As Range
Dim nb As Long
nb = 0
For Each c In plage
If c.Interior.ColorIndex = Couleur Then
nb = nb + 1
End If
Next c
NbColor = nb
End Function
Function NbColorSameAs(ByRef plage As Range, ByRef Cellule As Range) As Long
NbColorSameAs = NbColor(plage, Cellule.Interior.ColorIndex)
End Function -
Bonjour,
Ajuste ton code :Function NbColor(ByRef plage As Range, Couleur As Byte, Rose As Byte) As Long Dim c As Range Dim nb As Long nb = 0 For Each c In plage If c.Interior.ColorIndex = Couleur And c.Offset(, 1).Interior.ColorIndex = Rose Then nb = nb + 1 End If Next c NbColor = nb End Function Function NbColorSameAs(ByRef plage As Range, ByRef Cellule As Range, ByRef PinkRef As Range) As Long NbColorSameAs = NbColor(plage, Cellule.Interior.ColorIndex, PinkRef.Interior.ColorIndex) End Function
en F3, tu écriras :=NbColorSameAs($A$1:$A$12;D3;$D$1)
cordialement
edit : en D1, j'ai mis un fond de couleur rose.