Fonction NB.SI

Temps de lecture : 3 minutes

La fonction NB.SI vous permet de compter le nombre de fois qu'un mot, une date, une valeur est présent dans une colonne.

Présentation de la fonction NB.SI

La formule NB.SI ne nécessite que 2 paramètres pour pouvoir fonctionner :

  • Une plage de données où se trouve la donnée que vous cherchez à comptabiliser.
  • La donnée (ou encore le critère) à rechercher.

=NB.SI(Plage de cellules;Valeur cherchée)

Plusieurs colonnes de sélection

La fonction NB.SI vous permet de faire un dénombre sur une seule colonne. Depuis la version d'Excel 2007, la fonction NB.SI.ENS a été introduite pour pouvoir effectuer un dénombrement sur 255 colonnes 😍😮😃

Exemple d'utilisation

Dans le tableau suivant, vous avez une liste d'achat de matériel et vous voulez savoir combien de fois vous avez acheté des crayons.

Fonction NB.SI compte le nombre de ligne pour une valeur

Comme vous le constatez sur l'image, nous avons 4 fois le mot Crayon dans la liste. C'est cette valeur que nous souhaitons voir s'afficher en B15.

Nous allons alors écrire la formule suivante :

=NB.SI(B3:B12;"Crayon")

NB.SI Nombre elements

Utilisation d'une référence comme critère

Maintenant si au lieu de saisir le nom de la donnée à rechercher vous préférez récupérer la valeur d'une cellule, vous écrirez alors une formule comme ceci.

Formule NB.SI

Ici nous récupérons la valeur en réutilisant la référence de la cellule.

=NB.SI(B3:B12;A15) => 4

Il est impératif que la valeur recherchée dans le tableau soit identique à celle du tableau. ⚠⚠⚠

Dans l'exemple ci-contre, le premier mot "Crayon" commence par un espace et n'est donc pas comptabilisé 😣😡

Formule NB.SI avec erreur

Par contre, le dernier ne commence pas par une majuscule et pourtant, il a été compté. La fonction NB.SI ne tient pas compte de la casse (majuscule / miniscule).

Plus grand que / Plus petit que

Si vous souhaitez compter le nombre d'éléments plus grand ou plus petit par rapport à une valeur, il vous suffit d'écrire un test logique pour le deuxième paramètre ;comme >100, >=100, <50, ...

Par exemple, si vous voulez connaître le nombre de commandes d'une quantité supérieure à 80 unités, vous écrirez en cellule B15 la formule suivante :

=NB.SI(C3:C12;">=80")

NB.SI Plus grand que

Tout comme pour du texte, le test doit être mis entre guillemets.

Si vous souhaitez mettre la valeur à tester en paramètre, il faut cette fois, écrire le test avec le symbole & pour séparer le test, écrit entre guillemets, et la valeur en cellule A15.

=NB.SI(C3:C12,">="&A15)

Vidéo tutorielle pour compter les lignes

Découvrez toutes les techniques et toutes les formules qui permettent de compter les lignes dans cette vidéo.

Vous trouverez des informations complémentaires sur la fonction NB.SI sur le site de Microsoft.

32 Comments

  1. florent SAILLARD
    22/12/2021 @ 17:07

    Bonjour,

    Je souhaiterai utiliser un NB.SI avec multi critères ( : OK, OK en cours ok Validé. ) sur la même plage de sélection. Comment faire ? NB.SI.ensemble ne fonctionne que lorsque la plage est différente.

    Merci pour votre retour.

    Reply

    • Frédéric LE GUEN
      22/12/2021 @ 20:16

      C'est la fonction NB.SI.ENS qu'il faut utiliser pour les multicritères

      Reply

  2. Elias
    05/12/2021 @ 16:56

    Bonjour,
    J'ai trouvé vos explications super claires. cependant, connaissant bien la fonction nb.si et nb.si.ens, je recherchais une une utilisation de nb.si dans une autre configuration.
    si on reprend votre exemple, imaginons cette fois, que nous voulons compter le nombre de crayons utilisé dans le mois en retournant juste le nombre dans une cellule a coté... ça pourrait être simple, si on avait que des dates dans le même mois... mais imaginons un listing d'achat avec plusieurs date sur plusieurs mois??? comment une fonction nb.si ou nb.si.ens peut faire la différence en ne comptant et en ne retournant dans la cellule adjacente que le nombre de crayons acheté le même mois?
    je réfléchie je réfléchie mais sans solution encore!
    merci pour votre aide si vous avez la solution ...
    bonne fin de w-e à tous!

    Reply

  3. Jess1
    25/03/2021 @ 11:20

    Bonjour, je dois faire une tableau de suivi de facturation. Mon problème est le suivant, dans l'historique j y mais tout le détail des factures et je souhaiterais dans le suivie avoir regrouper les mêmes numéro de facture et avoir dans mon suivi qu'un seul numéro de facture sur une ligne. Après je voudrais calculer le montant de ces factures et y mettre le montant total dans mon suivi
    Merci pour votre aide.

    Reply

    • GHITA LARHRIB
      09/09/2021 @ 23:41

      J'ai le meme soucis, je veux calculer le montant total des cellules qui le meme nom par exemple
      CCI 1000
      CCI 1000
      CED 2000

      quelle formule pourrai utiliser pour faire cette somme sans devoir les compter manuellement ?

      Reply

      • Frédéric LE GUEN
        10/09/2021 @ 06:44

        C'est la fonction SOMME.SI ou SOMME.SI.ENS qu'il faut utiliser

  4. Yassine
    27/10/2020 @ 11:38

    Bonjour,

    Simplement je dois compter le nombre de ligne répondant à des conditions sans compter de doublons. Pour cela j'utilise la fonction FILTRE qui renvoie tous les éléments répondant à mes conditions ensuite j'utilise la formule "Sommeprod(1/nb.si(Filtre(Tableau;condition);Filtre(Tableau;condition))) "

    Une erreur apparaît car j'ai l'impression que la fonction nb.si ne prend pas comme argument une matrice mais plutôt une plage de données. J'ai essayé pour vérifier en mettant dans une cellule (disons en A1) la formule Filtre(Tableau;condition) puis j'ai recalculer ma formule en écrivant "Sommeprod(1/nb.si(A1:A100;Filtre(Tableau;condition)))" et là ça fonctionne

    Le problème c'est que je dois utiliser cette formule pour plusieurs argument cependant je ne trouve pas ça "propre" de faire plusieurs matrice sur ma feuille juste pour que la fonction nb.si fonctionne. Y a-t-il une solution pour mettre en entrée de nb.si ma fonction filtre ?

    Je ne sais pas si mon problème est résoluble mais j'y crois !

    Merci pour votre réponse

    Reply

    • Frédéric LE GUEN
      27/10/2020 @ 17:45

      Si vous avez FILTRE, vous avez nécessairement UNIQUE.
      C'est plus simple à utiliser que SOMMEPROD sous sa forme matricielle et c'est pour ça que FILTRE et UNIQUE ont été ajoutée.
      =NB(UNIQUE(FILTRE(.....)))

      Reply

      • Yassine
        27/10/2020 @ 17:53

        Rapide et efficace, merci Frédéric !!!

      • Frédéric LE GUEN
        27/10/2020 @ 18:02

        De rien,
        Je peux savoir les mots clés que vous avez utilisé pour trouver cette "vieille" solution avec SOMMEPROD ? Je vais ré-écrire un article mais avec la nouvelle technique. Les solutions d'il y a 10 ans sont complètement dépassées et il faut les réactualiser avec les nouvelles fonctions. (il faut faire très attention à la date des articles, surtout en informatique)

  5. Jacques
    19/10/2020 @ 16:25

    Bonjour,
    De beaux exemples, très clairs, mais malheureusement, je ne sais toujours pas quoi faire.
    J'ai des données sur deux colonnes. Je souhaite compter le nombre de lignes où la valeur de la colonne B est plus grande que la valeur correspondante dans la colonne A comme dans l'exemple ci-dessous qui devrait donner 2:
    A B
    44 47
    235 193
    16 39
    1 0
    0 0
    Merci!

    Reply

    • Frédéric LE GUEN
      19/10/2020 @ 16:58

      Ho c'est facile de résoudre un tel problème. Il faut faire une colonne supplémentaire dans laquelle on construit un test logique entre les 2 valeurs (A2=B2) et ensuite, on applique une fonction NB.SI.ENS sur cette colonne de tests et le critère de recherche c'est VRAI =NB.SI.ENS(C2:C5;VRAI)

      Reply

  6. TONY
    29/08/2020 @ 14:15

    Bonjour, je ne suis pas du tout un expert et j'ai besoin un peu d'aide .

    Je me suis parti un tableau dont je souhaite simplement avoir le nombre de gens qui sont des membres.
    C'est pas compliqués, chaque nom j'écris sur une colonne ''oui'' ou ''non''

    Je tente calculer le # de gens qui on répondu ''oui'

    Ma formule est la suivante: =nb.si(I12:I47;''Oui'')

    Rien ne marche, la formule reste encadrée rouge en pointillée

    Précisions:
    -Mes données non pas d'espace
    -Le fichier est sur mon Onedrive (je ne sais pas si cela change quelque chose)
    -J'ai tenté de changer le format du nombre en ''standard'' ou en ''texte'', toujours rien

    J'ai vu les vidéos sur youtube et pourtant cela semble si simple à faire! :(

    Reply

    • Frédéric LE GUEN
      31/08/2020 @ 08:46

      "Encadré rouge" ? Ce n'est pas Excel ça

      Reply

  7. LV
    30/07/2020 @ 15:08

    Comment faire si dans la colonne crayon on met 2 fois le nombre crayon pour indiquer que l'on a acheté 2 crayons.
    La formule de le compte qu'une seule fois. Comment faire pour qu'elle le compte 2 fois ?
    Merci !

    Reply

  8. Aboubacar Youssouf
    20/06/2019 @ 19:38

    Voici les conditions dont j ai besoin d aide en Excel on tient compte du sexe et la moyenne de la classe .
    Si moy>=10;"admise";"admis"
    Si moy >=8; "autorisée";"autorisé "
    Si moy <8;"refusée ";"refusé"
    On veut taper ces conditions dans cellule de du colone décision, s affiche tjrs erreur quelque soit la fonction si on besoin de votre aide merci!

    Reply

  9. Olivia
    17/06/2019 @ 16:08

    Bonjour,

    Merci pour votre retour rapide!! Ça fonctionne bien, merci beaucoup!

    Reply

  10. Olivia
    17/06/2019 @ 14:52

    Bonjour,

    J'ai une colonne avec plusieurs dates d'entrée sous forme 01/02/2008 etc ainsi qu' une colonne avec la formule aujourd'hui en B85 pour indiquer la date du jour. J'ai besoin de savoir combien de date sont supérieur à la date d'aujourd'hui. Lorsque je fais NB.SI(J3:J23;">=B85") ça ne fonctionne pas. Quelqu'un sait comment faire cela svp?
    Merci d'avance.

    Olivia

    Reply

    • Frédéric LE GUEN
      17/06/2019 @ 15:26

      Bonjour,
      NB.SI(J3:J23;">="&B85) va fonctionner

      Reply

  11. JOJO
    13/07/2017 @ 15:23

    Bonjour et merci pour ces explications car je fais ce calcul sur mon jeu de donnée mais j'ai vu dans un mémoire une personne à utiliser cette fonction : NB.SI($E218:$ET218;"<200") et moi je pense que cette cette personne veut compter le nombre de fois où il a obtenu des valeurs inférieur à 200. Est ce bien le cas? Merci d'avance de votre réponse

    Reply

    • Frédéric LE GUEN
      16/07/2017 @ 13:19

      Colonne ET, vous êtes sûre ?
      Sinon allez voir l'exemple sur la fonction NB.SI.ENS, j'explique exactement ce point

      Reply

  12. sunpicks
    06/11/2015 @ 15:30

    E n'arrive pas à faure NB.SI(B2-B11;"<"&2001/10)

    Reply

  13. didine
    03/06/2015 @ 14:05

    j'ai essayé ceci mais ça ne marche pas =NB.SI( O2:O134; SI(A134="";I134=""))

    Reply

  14. didine
    03/06/2015 @ 14:00

    bonjour, pourrai savoir quel formule utilisé pour compter le nombre de 0 sur une colonne a (qui contient ou 1 ou 0) en isolant les lignes vierges qui affiche 0 à cause d'une formule qui est en rapport avec deux autres colonnes.

    Reply

  15. Guix
    19/05/2015 @ 17:00

    Je rencontre un problème avec la formule suivante:

    =SI(NB.SI(C11;"*HAHA*");"GOOD";"BAD")

    Cette formule permet d'afficher "GOOD" ou "BAD" si le texte "HAHA" est présent dans une cellule C11.
    Par exemple: Si dans C11 on a "HAHA c'est très drôle", alors ma cellule avec ma formule sortira "GOOD".

    Le problème c'est que je suis obligé d'indiquer dans la formule le terme exacte ("HAHA") que souhaite rechercher.
    Comment modifier cette formule pour rechercher un terme présent dans une autre cellule, sans avoir besoin d'indiquer "HAHA" dans la formule ?

    Exemple: J'ai une cellule A1 qui contient me mot "HAHA".

    J'aimerais faire une formule comme ceci:

    =SI(NB.SI(C11;"*valeur dans la cellule A1*");"GOOD";"BAD")

    Cette formule ne marche pas...comment faire ?

    Reply

    • OC
      14/06/2017 @ 08:54

      Il ne faut pas utiliser la fonction NB.SI mais seulement la fonction SI !

      =SI(C11=A1;"GOOD";"BAD")

      Reply

  16. Anonyme
    27/01/2015 @ 17:33

    Bonjour
    L'exemple =NB.SI(B3:B12;A15) montre comment faire référence à la valeur d'une cellule mais la recette ne marche pas avec l'exemple suivant ou le test se fait avec l'opérateur "<" Y a-t-il une solution et laquelle ?
    Merci d'avance

    Reply

    • Frédéric LE GUEN
      29/01/2015 @ 17:46

      Bonjour,
      Je viens de compléter l'article avec un exemple qui vous explique comment faire un test en utilisant une valeur inscrite dans une cellule au lieu de la mettre en dur dans la formule.

      Reply

  17. bial excel
    09/01/2015 @ 21:56

    merci je vai les cour advance

    Reply

  18. Leader_DZ
    14/12/2014 @ 19:33

    le plus grand avec la formule max par exemple : =Max(c2:c20)
    le plus petit avec la formule Min par exemple : =Min(c2:c15)

    Reply

  19. Séb
    26/11/2014 @ 16:21

    Peut-on faire un "Plus grand que / Plus petit que" avec le nombre inscrit dans une cellule?
    Si oui comment?
    Merci

    Reply

  20. Anonyme
    22/07/2013 @ 22:39

    c'est genial merci

    Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

MICROSOFT MVP

RECHERCHE D’EMPLOI AVEC