🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel DSUM et DCOUNT — additionner et compter les lignes qui correspondent à une table de critères

|

Excel DSUM et DCOUNT — additionner et compter les lignes qui correspondent à une table de critères

L'essentielDSUM(database, field, criteria) totalise une colonne, mais seulement les lignes qui correspondent à une plage de critères — un petit bloc de cellules dont la ligne supérieure reprend vos en-têtes de colonnes et dont les lignes en dessous énoncent les conditions. =DSUM(A1:E200, "Amount", H1:H2) additionne Amount pour chaque ligne qui correspond à ce que vous placez dans H1:H2. DCOUNT a la même forme, mais compte les cellules numériques du champ (utilisez DCOUNTA pour compter aussi le texte). Deux règles portent toute la famille : l'argument database doit inclure la ligne d'en-têtes, et dans le bloc de critères même ligne = ET, lignes empilées = OU. Le bug n° 1 : un en-tête de critère qui ne correspond pas exactement à un en-tête de la base de données ne correspond à rien et renvoie discrètement 0. Fonctionne dans toutes les versions d'Excel.

=DSUM(A1:E200, "Amount", H1:H2)      ' total de Amount pour les lignes correspondant aux critères en H1:H2
=DCOUNT(A1:E200, "Amount", H1:H2)    ' combien de lignes correspondantes ont un NOMBRE dans Amount
=DCOUNTA(A1:E200, "Rep", H1:H2)      ' compte les lignes correspondantes dont Rep est renseigné (texte accepté)

L'essentiel du travail de « somme avec une condition » dans Excel se fait désormais avec SUMIFS — les conditions tapées directement dans la formule. Les fonctions de base de données répondent à la même question autrement, et c'est toute la différence : vous écrivez les conditions sous forme de table visible sur la feuille et vous y pointez la formule. Cela paraît lourd jusqu'au jour où vous tombez sur une question à trois branches OU et un seuil calculé — là, un bloc de cellules qu'un relecteur peut lire l'emporte sur une formule qu'il doit décrypter.

Remarque : dans une interface Excel en français, ces fonctions s'appellent BDSOMME (DSUM), BDNB (DCOUNT) et BDNBVAL (DCOUNTA). Équivalents : SUMIFS = SOMME.SI.ENS, SUM = SOMME, AVERAGE = MOYENNE. Les formules ci-dessous utilisent les noms anglais ; le comportement est identique.

Ce que vous allez apprendre

  • Le modèle mental : la plage de critères est votre requête, écrite sur la grille
  • Les trois arguments — et pourquoi database doit inclure la ligne d'en-têtes
  • Comment le bloc de critères encode le ET (même ligne) et le OU (lignes empilées)
  • Pourquoi DCOUNT renvoie 0 sur une colonne de texte, et quand recourir à DCOUNTA
  • L'astuce — et le piège — de la « ligne de critère vide qui correspond à tout »
  • Le choix de jugement : quand DSUM l'emporte sur SUMIFS, et quand non

Le modèle mental : votre requête vit sur la feuille

Chaque fonction de base de données lit trois choses : un tableau de données, la colonne dont vous voulez un nombre, et une plage de critères. Cette dernière est une idée que rien d'autre dans Excel n'emploie. Au lieu d'enfouir les conditions dans la formule, vous construisez une petite table — une ligne d'en-têtes qui correspondent à vos données, une ou plusieurs lignes de conditions en dessous — et vous en donnez l'adresse à la fonction.

' Les données (A1:E200) ont pour en-têtes : Region | Product | Rep | Units | Amount
' Le bloc de critères (H1:H2) :
'   H1: Region      <- un en-tête copié depuis les données, à l'identique
'   H2: West        <- la condition
=DSUM(A1:E200, "Amount", H1:H2)      ' -> total de Amount là où Region = West

Lisez-la comme une phrase : dans ce tableau, additionne la colonne Amount, pour les lignes qui satisfont la petite table en H1:H2. Toute la puissance — et chaque écueil — vient du fait que ce bloc de critères est des données, pas du code. Vous pouvez le modifier, un relecteur voit exactement ce qui a été demandé, et vous pouvez pointer dix formules différentes sur le même bloc. Mais comme la correspondance se fait sur le texte de l'en-tête, une faute de frappe échoue en silence.

Les trois arguments — et la ligne d'en-têtes est obligatoire

=DSUM(database, field, criteria). Les trois sont indispensables pour un vrai usage, et le premier piège tout le monde d'emblée :

  • database — le tableau complet y compris sa ligne d'en-têtes (A1:E200, pas A2:E200). Les en-têtes ne sont pas décoratifs : c'est par eux que field et le bloc de critères retrouvent leurs colonnes. Commencez à la ligne 2 et vous récoltez #VALUE! ou une colonne silencieusement erronée.
  • fieldquelle colonne traiter. Trois façons de la nommer, de la plus robuste à la plus fragile face aux modifications :
=DSUM(A1:E200, "Amount", H1:H2)   ' par texte d'en-tête (entre guillemets) — le plus clair, suit la colonne
=DSUM(A1:E200, E1, H1:H2)         ' par une cellule contenant l'en-tête — pratique pour des rapports paramétrés
=DSUM(A1:E200, 5, H1:H2)          ' par numéro de colonne (la 5e) — fragile ; casse si les colonnes bougent
  • criteria — la plage contenant votre bloc en-tête-plus-conditions (H1:H2). Elle vit en dehors de la base de données, généralement quelques colonnes à droite ou quelques lignes au-dessus.

Préférez l'en-tête entre guillemets ("Amount"). Il se lit comme une phrase et continue de fonctionner quand quelqu'un insère une colonne et fait passer le 5e champ en 6e position.

Le bloc de critères : le ET à l'horizontale, le OU à la verticale

C'est la compétence que partage toute la famille, autant la maîtriser exactement. La plage de critères est une mini-table. Sa ligne supérieure porte les en-têtes ; chaque ligne en dessous est un jeu de conditions. Les conditions d'une même ligne doivent toutes être vraies (ET) ; chaque ligne supplémentaire est une alternative (OU).

' ET — une seule ligne : Region West ET Amount supérieur à 1000
'   H1: Region    I1: Amount
'   H2: West      I2: >1000
=DSUM(A1:E200, "Amount", H1:I2)

' OU — lignes empilées : Region West OU Region East
'   H1: Region
'   H2: West
'   H3: East
=DSUM(A1:E200, "Amount", H1:H3)

Élargissez la plage de critères pour couvrir chaque colonne et chaque ligne que votre bloc utilise — pour l'exemple OU c'est H1:H3, pour l'exemple ET c'est H1:I2. Les opérateurs (>, <, >=, <>) se tapent directement dans la cellule sous forme de texte : >1000, <>West. Les critères de texte sont insensibles à la casse et correspondent depuis le début par défaut — un critère North correspond aussi à Northwest. Pour forcer une correspondance exacte, tapez ="=North". Les jokers fonctionnent également : Jo* correspond à Jones et Johnson.

L'échec le plus fréquent de toute cette page : l'en-tête de critère doit correspondre à un en-tête de la base de données caractère par caractère. Ammount, Region (espace en fin), ou region contre Region — Excel n'avertit pas, il ne fait simplement correspondre aucune ligne et renvoie 0. Quand une fonction de base de données renvoie 0 ou un total trop faible, vérifiez d'abord l'orthographe de l'en-tête.

DCOUNT compte les nombres ; DCOUNTA compte tout

DCOUNT et DCOUNTA sont la scission COUNT/COUNTA transposée sur une plage de critères — et la distinction mord exactement de la même façon.

=DCOUNT(A1:E200, "Amount", H1:H2)    ' compte les lignes où Amount est un NOMBRE — p. ex. 34
=DCOUNT(A1:E200, "Rep", H1:H2)       ' compte les cellules numériques de Rep -> 0 (Rep est du texte !)
=DCOUNTA(A1:E200, "Rep", H1:H2)      ' compte les lignes où Rep est non vide -> 34

DCOUNT ne compte que les cellules qui contiennent un nombre dans le champ choisi. Pointez-le sur une colonne de texte comme Rep et il renvoie consciencieusement 0 — pas une erreur, juste un zéro qui ressemble à « aucune correspondance ». Quand vous voulez combien d'enregistrements correspondants existent quel que soit leur contenu, utilisez DCOUNTA sur n'importe quelle colonne toujours renseignée, ou omettez complètement l'argument field : =DCOUNT(A1:E200, , H1:H2) compte chaque ligne correspondante. La règle empirique : compter un nombre → DCOUNT ; compter des enregistrements → DCOUNTA.

« Tout faire correspondre » : la ligne de critère vide

Donnez à un bloc de critères un en-tête et une cellule vide en dessous, et cette condition correspond à toutes les lignes. C'est ainsi que l'on totalise une colonne entière via une fonction de base de données, et c'est parfois pratique pour un bloc de critères que vous activez ou désactivez en tapant une valeur ou en l'effaçant.

'   H1: Region
'   H2:            <- vide : aucune restriction
=DSUM(A1:E200, "Amount", H1:H2)      ' -> le total général de Amount, toutes régions

Le piège, c'est le revers : une ligne vide accidentelle à l'intérieur d'un bloc OU sur plusieurs lignes élargit toute la requête à « tout », parce que cette ligne vide correspond à toutes les lignes. Si un DSUM renvoie soudain le total général alors que vous attendiez une tranche, cherchez une ligne de condition vide égarée dans la plage de critères.

Le choix de jugement : DSUM ou SUMIFS

Pour la plupart des totaux conditionnels, SUMIFS est le bon choix par défaut — compact, portable, sans bloc auxiliaire sur la feuille. Alors quand DSUM est-il le meilleur outil ? Quand la question elle-même doit être visible et modifiable :

  • Une logique OU complexe. SUMIFS n'a pas de OU natif ; vous l'empilez dans SUM({…}) ou ajoutez des formules. DSUM fait le OU en ajoutant une ligne — lisible d'un coup d'œil.
  • Une question que les utilisateurs feront évoluer. Un bloc de critères est un petit tableau de bord. Des collègues rétifs aux formules peuvent remplacer West par East, ou >1000 par >5000, sans toucher à une formule.
  • Des conditions basées sur une formule. DSUM accepte un critère comme =E2>AVERAGE(E:E) — « au-dessus de la commande moyenne » — calculé en direct. (Plus de détails dans le guide des fonctions de base de données.)
  • La traçabilité. Dans un modèle financier, une table de critères visible est de la documentation. Le relecteur lit la question, pas une formule imbriquée.

Gardez SUMIFS pour le quotidien « place ce total conditionnel dans cette cellule », et pour tout ce que vous recopierez le long d'une colonne. Tournez-vous vers DSUM quand les critères méritent de vivre sur la feuille — et quand vous avez besoin de l'extraction d'exactement un enregistrement que seul DGET fournit.

Comment ExcelMaster aide

La friction avec les fonctions de base de données n'est jamais le DSUM lui-même — c'est de construire correctement le bloc de critères : des en-têtes qui correspondent aux données, le ET sur une ligne, le OU au fil des lignes, la plage dimensionnée pour tout couvrir. Dites à ExcelMaster « totalise Amount pour les commandes West ou East supérieures à 1 000 » et il agence la table de critères, orthographie les en-têtes pour coller à vos données, et écrit le =DSUM(...) qui pointe dessus. Collez un DSUM qui s'obstine à renvoyer 0 et il vérifie le suspect habituel — une faute de frappe dans un en-tête — et le corrige.

Questions fréquentes

Quelle est la différence entre DSUM et SUMIFS ?

Les deux totalisent une colonne de façon conditionnelle. SUMIFS prend ses conditions comme arguments à l'intérieur de la formule ; DSUM les lit dans une plage de critères sur la feuille — un bloc de cellules d'en-têtes et de cellules de conditions. DSUM gère la logique OU et les critères basés sur une formule de manière plus lisible et garde la question visible pour la relecture ; SUMIFS est plus compact et plus portable. Utilisez SUMIFS par défaut, DSUM quand les critères doivent rester modifiables sur la grille.

Pourquoi mon DSUM renvoie-t-il 0 ?

Presque toujours un décalage entre l'en-tête de critère et l'en-tête de la base de données. Ils doivent être identiques — même orthographe, aucun espace en fin. Vérifiez aussi que l'argument database inclut la ligne d'en-têtes (A1:E200, pas A2:E200) et que la plage criteria couvre toutes vos cellules de conditions. Une cellule de condition vide, à l'inverse, correspond à tout plutôt qu'à rien.

Quelle est la différence entre DCOUNT et DCOUNTA ?

DCOUNT compte les cellules du champ choisi qui contiennent un nombre ; DCOUNTA compte les cellules non vides, texte compris. Pointez DCOUNT sur une colonne de texte et il renvoie 0. Pour compter combien d'enregistrements correspondent aux critères quel que soit leur contenu, utilisez DCOUNTA sur une colonne renseignée, ou omettez l'argument field.

Comment écrire une condition OU dans une fonction de base de données ?

Placez chaque alternative sur sa propre ligne de la plage de critères. Pour « Region West OU East », mettez l'en-tête Region dans une cellule, puis West et East dans les deux cellules juste en dessous, et dimensionnez la plage de critères pour inclure les trois lignes (p. ex. H1:H3). Les conditions d'une même ligne sont, elles, reliées par un ET.

DSUM et DCOUNT fonctionnent-ils dans les anciennes versions d'Excel ?

Oui. Les fonctions de base de données font partie d'Excel depuis ses premières versions et fonctionnent à l'identique dans Excel 2016, 2019, 2021 et 365 — aucun risque de #NAME? comme avec des fonctions plus récentes telles que GROUPBY. C'est l'un des coins les plus anciens et les plus stables d'Excel.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 2026-07-20.

Guides associés : Excel DGET · Fonctions de base de données Excel · Excel SUMIFS · Excel COUNTIFS · Excel FILTER