L'essentiel —
DSUM(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 dansH1:H2.DCOUNTa la même forme, mais compte les cellules numériques du champ (utilisezDCOUNTApour compter aussi le texte). Deux règles portent toute la famille : l'argumentdatabasedoit 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
databasedoit 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
DCOUNTrenvoie 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
DSUMl'emporte surSUMIFS, 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, pasA2:E200). Les en-têtes ne sont pas décoratifs : c'est par eux quefieldet le bloc de critères retrouvent leurs colonnes. Commencez à la ligne 2 et vous récoltez#VALUE!ou une colonne silencieusement erronée.field— quelle 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.
SUMIFSn'a pas de OU natif ; vous l'empilez dansSUM({…})ou ajoutez des formules.DSUMfait 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
WestparEast, ou>1000par>5000, sans toucher à une formule. - Des conditions basées sur une formule.
DSUMaccepte 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
