Excel RH & atelier
Des données propres et les formules essentielles

Module 1 / 3  · Sommaire complet

Module 1 : Données et formules 25 min de lecture

1.2 Compter et additionner selon des critères : NB.SI.ENS, SOMME.SI.ENS, SI

Combien d'absences pour maladie au montage ce mois-ci ? Combien de jours de formation pour l'équipe de nuit ? Combien d'opérateurs affectés au poste de soudure lundi ? Ces questions de tous les jours se résolvent avec deux fonctions conditionnelles, disponibles dans toutes les versions actuelles d'Excel, et avec la fonction SI pour transformer un chiffre en alerte.

Anatomie d'une formule NB.SI.ENS

fx=NB.SI.ENS(tAbsences[Service];"Montage";tAbsences[Type];"Maladie")
Paire 1

plage_critères1 = colonne Service
critères1 = "Montage"

Paire 2

plage_critères2 = colonne Type
critères2 = "Maladie"

Résultat

Nombre de lignes où toutes les conditions sont vraies à la fois (ET logique)

1

NB.SI et NB.SI.ENS : compter les lignes qui répondent à des conditions

NB.SI compte les cellules d'une plage qui satisfont un critère : NB.SI(plage; critères). NB.SI.ENS fait la même chose avec plusieurs conditions, chacune portant sur sa propre plage. Sa syntaxe, telle que documentée par l'éditeur :

NB.SI.ENS(plage_critères1; critères1; [plage_critères2; critères2]; …)
  • Les conditions s'additionnent comme un ET : une ligne n'est comptée que si toutes ses cellules respectent leur critère.
  • Jusqu'à 127 paires plage / critère sont admises.
  • Chaque plage doit avoir le même nombre de lignes et de colonnes que la première. Avec des colonnes de tableau (tAbsences[Service], tAbsences[Type]), c'est garanti.
  • NB.SI.ENS fonctionne aussi avec une seule paire : on peut l'utiliser partout à la place de NB.SI et garder une seule syntaxe en tête.

Avec l'exemple ci-dessus, la formule renvoie le nombre de lignes du tableau des absences qui concernent à la fois le service Montage et le type Maladie. Si la liste des types a été verrouillée par une liste déroulante (chapitre 1.1), le comptage est fiable : aucune variante « maladie » / « Mal. » / « arrêt » ne lui échappe.

Pour NB.SI, la documentation précise que les critères ne respectent pas la casse : « montage » et « Montage » sont comptés de la même façon. Les espaces parasites, en revanche, comptent : « Montage » suivi d'une espace finale n'est pas « Montage ».
2

Écrire les critères : texte, nombre, date, génériques

Le critère est l'argument qui pose le plus de questions. Il peut être un nombre, une expression, une référence de cellule ou du texte. Les règles d'écriture sont toujours les mêmes :

BesoinCritère à écrireRemarque
Égal à un texte"Maladie"Texte entre guillemets
Supérieur ou égal à un nombre">=10"L'opérateur et la valeur forment un seul texte
Comparé à une cellule">="&$I$1L'opérateur entre guillemets, concaténé par & à la référence
Postérieur ou égal à une date">="&DATE(2026;7;1)Ne jamais écrire la date comme un texte « 01/07/2026 » dans le critère
Contient un mot"*soud*"* remplace une suite de caractères
Un seul caractère variable"M0?12"? remplace un caractère
Différent de"<>Congé payé"Exclut une valeur

Pour chercher un vrai point d'interrogation ou un vrai astérisque, on le fait précéder d'un tilde (~). Et un piège à connaître : selon la documentation, si un critère fait référence à une cellule vide, NB.SI.ENS traite cette cellule comme la valeur 0. Un tableau de bord dont la cellule « service » n'est pas encore remplie affiche donc un résultat trompeur plutôt qu'une erreur.

La bonne pratique consiste à placer les critères variables dans des cellules (le service, le mois étudié, le seuil) et à les référencer en absolu. Un même tableau de bord sert alors tous les services : on change la cellule, pas la formule.

3

SOMME.SI.ENS : additionner seulement ce qui compte

NB.SI.ENS compte des lignes ; SOMME.SI.ENS additionne une colonne de nombres pour les seules lignes qui respectent les conditions. C'est la fonction des totaux par service, par équipe, par mois.

SOMME.SI.ENS(somme_plage; plage_critères1; critère1; [plage_critères2; critère2]; …)

Exemple : total des jours ouvrés d'absence du service dont le nom est en H1, pour le mois dont le premier jour est en I1 :

fx=SOMME.SI.ENS(tAbsences[Jours ouvrés];tAbsences[Service];$H$1;tAbsences[Début];">="&$I$1;tAbsences[Début];"<="&FIN.MOIS($I$1;0))

FIN.MOIS($I$1;0) renvoie le dernier jour du mois de la date en I1 (la fonction est détaillée au chapitre 2.1). La même colonne Début sert deux fois, avec deux bornes : c'est la façon d'exprimer « entre deux dates ».

L'erreur n° 1 : dans SOMME.SI.ENS, la plage à additionner vient en premier. Dans SOMME.SI (SOMME.SI(plage; critère; [somme_plage])), elle vient en dernier. La documentation de l'éditeur le signale expressément. Recopier une formule SOMME.SI en ajoutant « .ENS » sans réordonner les arguments donne un résultat faux, ou l'erreur #VALEUR! si les plages n'ont pas la même taille.

Limite à connaître : une absence à cheval sur deux mois est comptée entière dans le mois de son début. Pour une ventilation exacte jour par jour, on découpe l'absence à la saisie (une ligne par mois) ou on calcule les jours ouvrés de la période avec les fonctions du chapitre 2.1.

— Publicité —
4

Un tableau de synthèse en une seule formule recopiée

Les références mixtes du chapitre 1.1 prennent ici tout leur sens. On pose les services en colonne A, les types d'absence en ligne 1, et on écrit une seule formule en B2, recopiée vers la droite et vers le bas :

fx=NB.SI.ENS(tAbsences[Service];$A2;tAbsences[Type];B$1)
ABCD
1ServiceCongé payéMaladieFormation
2Usinage101
3Montage010
4Expédition100

$A2 fige la colonne A (le service) mais laisse la ligne varier ; B$1 fige la ligne 1 (le type) mais laisse la colonne varier. Recopiée en D4, la formule devient =NB.SI.ENS(tAbsences[Service];$A4;tAbsences[Type];D$1) : exactement ce qu'il faut.

Ce tableau se construit aussi, sans formule, avec un tableau croisé dynamique (chapitre 2.1). La version « formules » garde un intérêt : elle se met à jour sans actualisation, et sa mise en page reste stable pour un document diffusé chaque mois.

5

SI et SIERREUR : transformer un chiffre en signal

Un tableau de bord ne doit pas obliger le lecteur à comparer chaque valeur à un seuil. La fonction SI le fait pour lui :

SI(test_logique; valeur_si_vrai; [valeur_si_faux])
fx=SI(NB.SI.ENS(tAffect[Date];$A2;tAffect[Poste];"Soudure")<2;"Poste sous-couvert";"OK")

Ici, la formule affiche une alerte quand moins de deux personnes sont affectées au poste de soudure à la date de la ligne. Le seuil de 2 est un choix d'organisation de l'atelier, pas une règle : il gagne à être placé dans une cellule de paramètres.

La documentation de l'éditeur admet l'imbrication de plusieurs SI mais la déconseille au-delà de quelques niveaux : la formule devient illisible et fragile. Pour attribuer une catégorie selon des tranches (par exemple un niveau d'alerte selon un nombre de jours), une petite table de correspondance et une fonction de recherche (chapitre 1.3) sont plus sûres.

SIERREUR : un filet, pas une correction

SIERREUR(valeur; valeur_si_erreur) renvoie le résultat de la formule, ou une valeur de remplacement si elle produit une erreur : #N/A, #VALEUR!, #REF!, #DIV/0!, #NOMBRE!, #NOM? ou #NUL!.

fx=SIERREUR(C2/B2;"")

C'est utile pour une division dont le dénominateur peut être nul en début de mois. Mais l'éditeur le rappelle : SIERREUR masque toutes les erreurs, y compris celles qui signalent une vraie faute (une colonne supprimée qui donne #REF!, un nom de fonction mal tapé qui donne #NOM?). On ne l'ajoute qu'une fois la formule vérifiée, jamais pour « faire disparaître » un message gênant.

— Publicité —
6

Trois formules prêtes à adapter

Les exemples suivants supposent un tableau des absences tAbsences (Matricule, Service, Type, Début, Fin, Jours ouvrés) et un tableau des affectations tAffect (Date, Équipe, Poste, Matricule). Les cellules de paramètres sont sur la feuille d'analyse.

Nombre d'absences d'une personne sur l'année

=NB.SI.ENS(tAbsences[Matricule];$B$1;tAbsences[Début];">="&DATE(2026;1;1);tAbsences[Début];"<="&DATE(2026;12;31))

Jours de formation d'une équipe sur une période

=SOMME.SI.ENS(tAbsences[Jours ouvrés];tAbsences[Type];"Formation";tAbsences[Service];$B$2;tAbsences[Début];">="&$B$3;tAbsences[Début];"<="&$B$4)

Personnes affectées à un poste, un jour, dans une équipe

=NB.SI.ENS(tAffect[Date];$A2;tAffect[Équipe];$B$1;tAffect[Poste];C$1)

Le calcul d'un taux d'absentéisme (heures d'absence rapportées aux heures théoriques) se fait avec ces mêmes briques ; plutôt que de redéfinir une formule ici, l'outil de calcul du taux d'absentéisme du site détaille la méthode et fait le calcul pour un mois donné.

SOMME.SI contre SOMME.SI.ENS : l'ordre des arguments

SOMME.SI (un seul critère)

1 plage testée 2 critère 3 plage à additionner (facultative)

=SOMME.SI(B2:B50;"Montage";F2:F50)

SOMME.SI.ENS (un ou plusieurs critères)

1 plage à additionner 2 plage testée 3 critère, puis paires suivantes

=SOMME.SI.ENS(F2:F50;B2:B50;"Montage")

Les deux formules donnent le même total. Pour ne garder qu'une syntaxe en tête : utiliser SOMME.SI.ENS et NB.SI.ENS partout.

Sources

  • Documentation de l'éditeur : fonctions NB.SI, NB.SI.ENS, SOMME.SI, SOMME.SI.ENS, SI, SIERREUR, FIN.MOIS — support.microsoft.com
  • Formation indépendante, non affiliée à Microsoft. Excel est une marque déposée de son éditeur. Syntaxe française (séparateur « ; », virgule décimale).

À retenir

  • NB.SI.ENS compte les lignes où toutes les conditions sont vraies ; jusqu'à 127 paires, plages de même taille.
  • Critère avec opérateur : ">="&$I$1 ; génériques * et ? ; critère sur cellule vide = 0.
  • SOMME.SI.ENS place la plage à additionner en premier, à l'inverse de SOMME.SI.
  • Références mixtes $A2 / B$1 : un tableau de synthèse entier avec une seule formule.
  • SI transforme une valeur en alerte ; les seuils vont dans des cellules de paramètres.
  • SIERREUR masque toutes les erreurs : à poser seulement sur une formule déjà vérifiée.