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

Comptage contenu cellule par couleur

1 réponse
Avatar
Le G
Bonjour !

J'utilise une formule pour compter le nombre de cellules d'une zone, dont la
couleur de la police est égal à une référence. Je cherche à modifier cette
cellule pour compter la somme du contenu de cellules de couleur donnée. Par
exemple, la somme de toutes les cellules écrites en rouge. Voici ma cellule
de base :

Function SommeCoulTxt(Plage As Range, référence)
Application.Volatile
Dim vCellule As Object
Dim vSomme As Single
For Each vCellule In Plage
If vCellule.Font.ColorIndex = référence.Font.ColorIndex And Not
IsEmpty(vCellule) Then vSomme = vSomme + 1
Next
SommeCoulTxt = vSomme
End Function

Merci de votre aide

1 réponse

Avatar
Philippe.R
Bonjour,
Compter des cellules colorées ou dont la police est colorée n'est pas forcément une bonne idée.
Malgré l'instruction application.volatile, le décompte ne pourra pas se mettre à jour, le changement de
couleur ne déclenchant généralement pas d'évènement ni de recalcul.
La solution la plus fiable reste d'utiliser la Mise en forme Conditionnelle pour le coloriage et de
dénombrer parallèlement les cellules répondant à la condition.
En outre, si la couleur résulte d'une MEFC, VBA se révèlera incapable de compter les cellules (polices)
d'une certaine couleur.
http://www.excelabo.net/moteurs/compteclic.php?nom=av-mefc
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Le G" a écrit dans le message de news:

Bonjour !

J'utilise une formule pour compter le nombre de cellules d'une zone, dont la
couleur de la police est égal à une référence. Je cherche à modifier cette
cellule pour compter la somme du contenu de cellules de couleur donnée. Par
exemple, la somme de toutes les cellules écrites en rouge. Voici ma cellule
de base :

Function SommeCoulTxt(Plage As Range, référence)
Application.Volatile
Dim vCellule As Object
Dim vSomme As Single
For Each vCellule In Plage
If vCellule.Font.ColorIndex = référence.Font.ColorIndex And Not
IsEmpty(vCellule) Then vSomme = vSomme + 1
Next
SommeCoulTxt = vSomme
End Function

Merci de votre aide