Compter les cellules d’une couleur dans Excel
Compte les cellules surlignées d’une même couleur, avec ou sans macro, par un filtre, par la recherche d’Excel ou par une fonction gratuite à coller une fois dans ton classeur.
Comment compter les cellules d’une couleur dans Excel, alors que NB.SI ne lit que leurs valeurs ? Pour un compte ponctuel, tu peux filtrer ta colonne par couleur puis écrire SOUS.TOTAL(103), ou lancer Rechercher tout, qui affiche le nombre de cellules trouvées. Si ce besoin revient souvent, nous te conseillons de copier-coller notre fonction NB_SI_COULEUR.
Pourquoi NB.SI ne peut pas compter une couleur dans Excel
NB.SI et NB.SI.ENS ne peuvent pas compter une couleur dans Excel, parce qu’elles comparent la valeur de chaque cellule à un critère, qu’il s’agisse d’un nombre, d’un texte ou d’une date. Or la couleur de fond que tu as posée sur tes cellules est une mise en forme, et non une valeur, si bien qu’aucun critère ne sait la lire. Leurs noms anglais n’y changent rien, puisque COUNTIF et COUNTIFS ont exactement la même limite.
Excel n’a pas non plus de fonction NB.SI.COULEUR, et la formule =NB.SI.COULEUR(B2:B7;B4), tapée dans Excel pour Microsoft 365, renvoie l’erreur #NOM?, la marque d’une fonction qu’il ne connaît pas. Deux autres réponses circulent sur les forums, et elles ne marchent pas davantage, parce qu’aucune des deux ne lit le fond de la cellule.
La première, =NB.SI(B2:B7;"orange"), cherche le mot « orange » écrit dans les cellules, et renvoie 0 puisqu’aucune quantité ne le contient. La seconde, =CELLULE("couleur";B4), dit seulement si le format de nombre de B4 affiche les nombres négatifs en couleur, ce qui n’a rien à voir avec son remplissage. Pour compter tes cellules orange, il te reste donc une fonction VBA comme NB_SI_COULEUR, le filtre par couleur suivi de SOUS.TOTAL, ou la recherche par format.
Faire un NB.SI par couleur avec la fonction VBA NB_SI_COULEUR
NB_SI_COULEUR est une fonction personnalisée, écrite en VBA, qui fait pour la couleur ce que NB.SI fait pour une valeur. Elle compte les cellules d’une plage dont le fond a exactement la couleur d’une cellule modèle. Une fois son code collé dans ton classeur, tu l’écris dans une cellule comme n’importe quelle formule.
Prends l’onglet Stock de l’exemple, où les trois quantités inférieures à 50, celles des articles à commander, sont surlignées en orange, et les deux stocks élevés en vert. Écrite en B8, la formule =NB_SI_COULEUR(B2:B7;B4) renvoie 3, le nombre de cellules qui portent l’orange de B4, et te dit donc combien d’articles sont à commander.
| A | B | |
|---|---|---|
| 1 | Article | Quantité |
| 2 | Vis | 120 |
| 3 | Écrous | 80 |
| 4 | Rondelles | 45 |
| 5 | Chevilles | 200 |
| 6 | Clous | 30 |
| 7 | Boulons | 35 |
| 8 | À commander | 3 |
Installer la fonction qui compte les cellules de couleur
Ouvre l’éditeur VBA (Alt+F11 sous Windows), insère un module neuf et colles-y tout le code de la fonction. Écris ensuite la formule dans une cellule, puis enregistre le classeur au format « Classeur Excel (prenant en charge les macros) ».
Écrire la formule avec une plage et une cellule modèle
=NB_SI_COULEUR(B2:B7;B4)Compte les cellules de B2:B7 qui ont le même fond que B4, soit 3.
| Argument | Ce qu’il contient |
|---|---|
| plage | Les cellules dont la fonction lit la couleur. Elle peut réunir plusieurs blocs entre parenthèses, comme (B2:B4;B6:B7). |
| cellule_modele | Une cellule qui porte la couleur cherchée, dans la plage ou à côté, dans une case de légende par exemple. C’est une cellule, jamais un code couleur. |
La couleur est comparée à l’identique, si bien que l’orange standard et un orange à peine différent, choisi dans Autres couleurs, ne se confondent pas.
Une cellule sans remplissage ne compte pas comme une cellule remplie de blanc, même si les deux se ressemblent à l’écran.
La fonction regarde le fond et jamais la valeur, si bien qu’une cellule vide qui porte la couleur compte, tout comme VRAI, FAUX ou une cellule en erreur.
Les lignes masquées restent dans le compte, même quand un filtre les cache.
Donne-lui une plage à la taille de tes données, comme B2:B500, plutôt qu’une colonne entière. Avec =NB_SI_COULEUR(B:B;B4), la fonction lit le fond de chacune des 1 048 576 cellules de la colonne, et recommence à chaque Ctrl+Alt+F9. Cette seule formule peut ainsi mettre plusieurs secondes à se calculer, contre quelques millisecondes sur B2:B500.
Calculer le nombre de cellules de chaque couleur dans une légende
Pour calculer le nombre de cellules de chaque couleur d’un coup, sans ajouter de colonne à ton tableau, pose à côté une petite légende, avec une case remplie de chaque couleur. Dans l’exemple, la case orange « À commander » est en D2, et la case verte « Surstock » en D3. Écris ensuite la formule en face de la première case, puis recopie-la vers le bas, pour que chaque ligne compte sa propre couleur. Les dollars figent en effet la plage, alors que la cellule modèle descend d’une ligne à chaque recopie.
=NB_SI_COULEUR($B$2:$B$7;D2)En E2, en face de la case orange « À commander », compte les cellules orange de B2:B7, soit 3. Recopiée en E3, en face de la case verte « Surstock », elle en compte 2.
Une case de légende doit porter exactement la couleur des cellules à compter, sans quoi sa ligne affiche 0. Comme toute formule NB_SI_COULEUR, la légende ne se met pas à jour quand tu changes une couleur dans le tableau, et c’est Ctrl+Alt+F9 qui recalcule chaque ligne.
Compter les cellules de couleur sans VBA
Pour compter les cellules de couleur sans VBA, deux méthodes suffisent, le filtre par couleur suivi de SOUS.TOTAL et la recherche par format, dont la fenêtre affiche elle-même le nombre de cellules trouvées. Elles t’évitent de coller du code et d’activer les macros, mais le compte qu’elles donnent est à refaire dès que les couleurs changent. Ce sont donc elles qu’il te faut pour un nombre à lire une fois, ou dans un classeur qui doit rester sans macro.
Beaucoup de tutoriels en proposent une troisième, LIRE.CELLULE, qui repose pourtant sur les anciennes macros Excel 4.0, que Microsoft 365 désactive par défaut. Elle vient donc en dernier, puisqu’Excel peut refuser le nom défini dont elle a besoin.
Filtrer par couleur, puis compter avec SOUS.TOTAL
Une fois ta colonne filtrée par couleur, seules les lignes de cette couleur restent affichées. SOUS.TOTAL(103), écrit sous le tableau, ne compte alors que les cellules non vides restées visibles. Le compte reste ainsi dans la feuille tant que le filtre est posé, ce que la recherche par format ne permet pas.
- 01
Sous le tableau, écris la formule du compte ci-dessous.
- 02
Clique dans le tableau, puis sur le bouton Filtrer de l’onglet Données (Ctrl+Maj+L).
- 03
Ouvre la flèche de la colonne Quantité, choisis Filtrer par couleur, puis clique sur l’orange sous Filtrer par couleur de cellule.
- 04
Pour revoir tout le tableau une fois le compte lu, rouvre la flèche et efface le filtre.
=SOUS.TOTAL(103;A2:A7)Compte les articles restés visibles de A2:A7, soit 3 une fois le tableau filtré sur l’orange.
Le code 103 compte les cellules non vides, textes compris, alors que le code 102, dans =SOUS.TOTAL(102;B2:B7), ne compte que les nombres, et donne ici le même 3. Après un filtre, les codes 3 et 2 font de même, et 103 et 102 écartent en plus les lignes masquées à la main, comme le détaille la fiche de SOUS.TOTAL.
Le filtre est aussi précis que NB_SI_COULEUR, puisqu’il compare la couleur exacte et distingue une cellule remplie de blanc d’une cellule sans remplissage. Il ne suit pas pour autant tes couleurs, et si tu passes une quantité du vert à l’orange, les lignes restent affichées ou masquées comme avant. Clique alors sur Réappliquer, dans l’onglet Données, pour remettre le filtre et le compte à jour.
Rechercher les cellules d’une couleur et lire leur nombre
La recherche par format trouve d’un coup toutes les cellules d’une couleur, et la fenêtre Rechercher et remplacer en affiche elle-même le nombre. Tu lis ainsi le compte sans filtrer le tableau ni écrire de formule. C’est donc la méthode la plus rapide quand tu veux seulement savoir combien de cellules sont orange.
- 01
Sélectionne la colonne des quantités, appuie sur Ctrl+F, puis clique sur le bouton « Options >> » pour déplier la fenêtre Rechercher et remplacer.

Les options dépliées de la recherche. Le bouton Format et sa flèche sont en haut à droite, et la case qui les précède affiche Sans mise en forme tant qu’aucun format n’est choisi. - 02
Ouvre la flèche placée à droite du bouton « Format… », choisis « Choisir le format à partir de la cellule… », puis clique sur une cellule orange. La case à gauche du bouton, qui annonçait Sans mise en forme, montre alors un aperçu du format retenu.
- 03
Clique sur le bouton Rechercher tout. La liste qui se déplie nomme chaque cellule trouvée, et la ligne sous elle en donne le nombre, « 3 cellule(s) trouvée(s) » dans l’exemple.
Sélectionne bien la colonne avant de chercher, car une recherche lancée depuis une seule cellule porte sur toute la feuille, et compterait aussi la case orange de la légende. Le modèle demande le même soin, puisqu’Excel relève sa mise en forme dans son ensemble, et pas seulement sa couleur. Si tu prends le format sur une cellule orange et en gras, la recherche ne trouve que les cellules à la fois orange et grasses. Le nombre affiché est alors trop petit, sans qu’aucun message ne te prévienne.
Comme le filtre, la recherche distingue deux oranges voisins, mais elle confond une cellule remplie de blanc et une cellule sans remplissage. Elle trouve aussi une cellule vide qui porte la couleur, que SOUS.TOTAL(103) laisse de côté. Et comme elle ne laisse rien dans la feuille, son nombre est à relire après chaque changement.
Donner à NB.SI un critère de couleur avec LIRE.CELLULE
LIRE.CELLULE donne à NB.SI le critère de couleur qui lui manque, en remplissant une colonne d’aide avec le numéro de palette du fond de chaque cellule. C’est une fonction des anciennes macros d’Excel 4.0, qu’on ne peut pas écrire dans une cellule. La méthode des tutoriels la place donc dans un nom défini, CouleurFond par exemple, créé pendant que la cellule C2 est sélectionnée. Écrit ensuite en face de chaque quantité, de C2 à C7, =CouleurFond renvoie le numéro de palette de la cellule d’à côté.
Le piège, c’est que Microsoft 365 désactive ces macros par défaut. D’après l’aide de Microsoft, elles ne s’exécutent que si l’option qui les active avec les macros VBA est cochée, dans les paramètres des macros du Centre de gestion de la confidentialité. Tant qu’elle reste décochée, Excel pour Microsoft 365 peut refuser le nom dès que LIRE.CELLULE désigne une cellule. Si ton Excel accepte le nom, la colonne d’aide se remplit, et les formules ci-dessous prennent le relais.
=LIRE.CELLULE(63;Stock!B2)À écrire dans la zone Fait référence à d’un nom défini, jamais dans une cellule, pendant que C2 est sélectionnée. D’après la référence des fonctions de macro Excel 4.0 de Microsoft, le code 63 renvoie la couleur de remplissage de la cellule, sous la forme de son numéro de palette, de 1 à 56, soit 44 pour l’orange de l’exemple et 0 pour une cellule sans remplissage.
Écrite sans dollar, Stock!B2 est une référence relative, qu’Excel lit depuis la cellule active au moment où tu crées le nom, d’après l’aide de Microsoft sur le gestionnaire de noms. Créé depuis C2, le nom vise donc toujours la cellule de gauche, si bien que =CouleurFond lit B3 quand tu l’écris en C3, et B7 quand tu l’écris en C7.
=NB.SI(C2:C7;44)Avec une colonne d’aide qui vaut 44 en face des quantités orange, compte ces cellules, soit 3.
=NB.SI.ENS(C2:C7;44;B2:B7;"<40")Ne compte que les quantités orange inférieures à 40, soit 2, celles des clous et des boulons.
Ce numéro ne distingue pourtant que les 56 couleurs de la palette. L’orange standard et un jaune orangé un peu plus clair, de code FFCC00, reçoivent ainsi tous deux le numéro 44. Leurs cellules se mélangent alors dans le compte, sans que rien ne t’en avertisse. Si ce mélange te fait renoncer à la méthode, le gestionnaire de noms (Ctrl+F3) te permet de retrouver le nom et de le supprimer.
Quelle méthode choisir pour compter par couleur
| Méthode | Compte dans la feuille | Sans code VBA | Couleur du texte | Couleur d’une mise en forme conditionnelle |
|---|---|---|---|---|
| Filtre et SOUS.TOTAL | Oui, tant que le filtre est posé | Oui | Oui | Oui |
| Rechercher par format | Non, lu dans la fenêtre de recherche | Oui | Oui | Non |
| NB_SI_COULEUR | Oui, à jour après Ctrl+Alt+F9 | Non | Non, voir la variante plus bas | Non |
Le choix dépend avant tout de ce que tu veux faire du nombre obtenu. Pour le lire une fois, la recherche par format est la plus directe, puisque sa fenêtre l’affiche. Si tes couleurs viennent d’une mise en forme conditionnelle, le filtre est la seule des trois méthodes à les voir. Et pour un compte qui reste dans le classeur, NB_SI_COULEUR est la seule qui tienne en une formule, à condition de la recalculer par Ctrl+Alt+F9 quand une couleur change.
Obtenir le nombre de cellules selon la couleur du texte
Quand tu as écrit certaines quantités en rouge plutôt que de colorer leur fond, les deux méthodes sans macro donnent aussi le nombre de cellules selon la couleur du texte. Dans Filtrer par couleur, choisis la couleur de police voulue, et =SOUS.TOTAL(103;A2:A7) compte les lignes restantes. La recherche par format trouve de la même façon les cellules écrites dans une couleur de police.
NB_SI_COULEUR, en revanche, ne lit que le fond, si bien qu’un compte sur la couleur du texte demande une variante de la fonction. Colle cette variante courte dans un module neuf, puis écris =NB_SI_COULEUR_POLICE(B2:B7;B6), dont le modèle est une quantité écrite en rouge.
Function NB_SI_COULEUR_POLICE(plage As Range, cellule_modele As Range) As Long' Compte les cellules non vides de « plage » écrites dans la même couleur que « cellule_modele ».Dim cellule As RangeFor Each cellule In plage.CellsIf Not IsEmpty(cellule.Value2) ThenIf cellule.Font.Color = cellule_modele.Font.Color ThenNB_SI_COULEUR_POLICE = NB_SI_COULEUR_POLICE + 1End IfEnd IfNext celluleEnd Function
La variante laisse de côté les cellules vides, qui n’ont pas de texte à colorer, alors que NB_SI_COULEUR les compte dès que leur fond porte la couleur. Elle confond en revanche un texte en couleur automatique et un texte noir, si bien qu’un modèle noir compte aussi les cellules restées en couleur automatique.
Compter les cellules colorées par une mise en forme conditionnelle
Pour compter les cellules colorées par une mise en forme conditionnelle, le plus sûr est de reprendre dans NB.SI la condition de la règle, puisque c’est elle qui décide de la couleur. Une couleur posée par une règle n’est en effet pas le fond de la cellule, et NB_SI_COULEUR, qui ne lit que ce fond, ne la voit pas. Dans un tableau où c’est une règle, et non un remplissage, qui colore en orange les quantités inférieures à 50, =NB_SI_COULEUR(B2:B7;B4) renvoie même 6. B4 n’a alors aucun remplissage propre, si bien que la fonction compte toutes les cellules sans remplissage de la plage.
Le filtre par couleur, lui, voit ces couleurs, et une fois le même tableau filtré sur l’orange de la règle, =SOUS.TOTAL(103;A2:A7) affiche bien 3. La recherche par format, en revanche, ne voit pas la règle et ne trouve aucune cellule. La formule ci-dessous, qui reprend la condition de la règle, donne ce même 3 sans filtre ni macro.
=NB.SI(B2:B7;"<50")Pour une règle qui colore les quantités inférieures à 50, soit 3.
Avec des nuances de couleurs, la teinte change avec chaque valeur, si bien qu’un compte par couleur perd son sens. Mieux vaut alors compter les cellules au-dessus ou au-dessous d’un seuil, avec NB.SI ou NB.SI.ENS.
Pourquoi NB SI couleur ne fonctionne pas ou ne se met pas à jour
NB_SI_COULEUR ne fonctionne pas quand Excel ne trouve pas son code, ou quand la formule lui donne un code couleur au lieu d’une cellule. Si elle ne se met pas à jour, c’est qu’un changement de couleur ne relance aucun calcul. Un compte faux, enfin, tient à la cellule modèle ou à ce que la fonction compte vraiment. La liste ci-dessous part de ce qu’affiche ta cellule pour te mener à la cause.
#NOM? s’affiche quand Excel ne trouve pas la fonction, parce que les macros sont peut-être désactivées (activer les macros sur Excel explique comment les autoriser). Le classeur a pu aussi être enregistré en « Classeur Excel », le format sans macros, qui supprime le code. Quant à Excel pour le web, il n’exécute pas les macros.
Un #NOM? qui persiste alors que les macros sont actives vient sans doute d’un code collé dans le module d’une feuille ou dans ThisWorkbook, où Excel ne trouve pas la fonction. Recolle alors le code dans un module neuf, par le menu Insertion puis Module.
Le compte ne bouge pas après un changement de couleur, parce que changer une couleur ne modifie aucune valeur et qu’Excel ne relance alors aucun calcul, pas même avec F9. Ctrl+Alt+F9 recalcule toutes les formules des classeurs ouverts, et le compte se met aussi à jour dès qu’une valeur de la plage change.
Le compte vaut 0 ou oublie des cellules quand la cellule modèle n’a pas exactement la couleur des cellules à compter. Un orange choisi dans Autres couleurs n’est pas l’orange standard, et une cellule sans remplissage ne vaut pas, pour la fonction, une cellule remplie de blanc.
Un compte trop grand peut venir des cellules vides qui portent la couleur, que NB_SI_COULEUR compte aussi, tout comme VRAI, FAUX et les erreurs. Si la cellule modèle n’a pas de remplissage, elle compte même toutes les cellules sans remplissage de la plage, soit plus d’un million sur une colonne entière comme B:B.
#VALEUR! apparaît sans doute parce que le second argument est un code couleur, comme 49407, alors que NB_SI_COULEUR attend une cellule qui porte la couleur. Si ta formule vient d’une autre fonction du même nom, qui attendait un code, remplace ce code par une cellule modèle.
Des cellules colorées sont ignorées, peut-être parce que leur couleur vient d’une mise en forme conditionnelle, que la fonction ne lit pas.
Le compte inclut des lignes filtrées, parce que NB_SI_COULEUR compte aussi les lignes masquées, alors que SOUS.TOTAL(103) les écarte.
D’autres fonctions et macros utiles
Faire une somme en fonction de la couleur
Additionne les cellules surlignées d’une même couleur, avec ou sans macro, par un filtre ou par une fonction gratuite à coller une fois dans ton classeur.
Lire le code couleur du fond d’une cellule
Retrouve la couleur exacte d’une cellule pour la reprendre ailleurs, ou pour comprendre pourquoi deux jaunes presque identiques ne se comptent pas ensemble.
Tu as peut-être encore une question
Pour compter les cellules d’une couleur, filtre la colonne par couleur (Données, Filtrer, puis Filtrer par couleur) et lis le compte d’une formule =SOUS.TOTAL(103;A2:A7), ou colle la fonction gratuite NB_SI_COULEUR pour écrire =NB_SI_COULEUR(B2:B7;B4), qui compte les cellules ayant le même fond que B4. La fonction reste dans le classeur et se recalcule avec Ctrl+Alt+F9.
Pour additionner les cellules d’une couleur, filtre la colonne par couleur puis écris =SOUS.TOTAL(109;B2:B7), qui n’additionne que les lignes restées visibles et rend 110 pour les trois quantités orange de l’exemple, ou colle la fonction gratuite SOMME_SI_COULEUR, qui fait pour la somme ce que NB_SI_COULEUR fait pour le compte. Une autre page de cette bibliothèque de macros, consacrée à la somme par couleur, la présente en entier.
Excel donne à la couleur de fond d’une cellule un code couleur exact et un numéro de palette, de 1 à 56, que la fenêtre Exécution de l’éditeur VBA (Alt+F11, puis Ctrl+G) affiche pour la cellule sélectionnée, par ?ActiveCell.Interior.Color pour le code, 49407 pour l’orange de l’exemple, et par ?ActiveCell.Interior.ColorIndex pour le numéro, 44. NB_SI_COULEUR n’a besoin ni de l’un ni de l’autre, puisqu’elle lit la couleur sur une cellule modèle.
NB_SI_COULEUR est écrite en VBA, le langage des macros d’Excel, alors que les macros de Google Sheets s’écrivent en Apps Script, si bien que cette fonction ne s’y colle pas telle quelle et que cette page ne couvre ni Google Sheets ni LibreOffice. Google propose un outil qui convertit le code VBA d’un fichier Excel en Apps Script, réservé aux offres Workspace Enterprise Plus et Education Plus.
Pour aller plus loin
Tout ce dont tu as besoin pour faire tourner tes macros et progresser sur Excel se trouve ici.

Télécharge notre cours Excel complet en PDF
Télécharger
Ton cours Excel gratuit
3 chapitres pour apprendre les bases et découvrir l'automatisation.
Voir le cours
Entraîne-toi sur nos 63 exercices corrigés
S’entraîner
Les macros Excel et le VBA expliqués simplement
Lire le guide
Activer les macros quand Excel les bloque
Voir comment