BDMAX (DMAX en anglais) est la fonction de la famille des bases de données Excel qui te permet de trouver la valeur maximale dans une colonne, mais seulement pour les lignes qui respectent des critères que tu poses dans une zone séparée. Elle va plus loin que MAX : là où MAX prend tout en bloc, BDMAX filtre intelligemment avant de chercher le plus grand.
Concrètement, c'est elle qui t'identifie la meilleure vente d'une région précise, le stock le plus élevé atteint pour un produit donné, le salaire maximum d'un département ou la dépense marketing la plus grosse sur une année. Et quand les critères deviennent complexes, avec des OU logiques que MAX.SI.ENS ne sait pas gérer, BDMAX reste souveraine.
Syntaxe de la fonction BDMAX
=BDMAX(base_de_données; champ; critères)La zone de critères doit toujours comporter au moins deux lignes : la première avec les noms de colonnes (identiques aux en-têtes de ta base), la deuxième avec les valeurs recherchées. Si elle n'a pas d'en-tête, BDMAX renvoie une erreur.
Comprendre chaque paramètre de la fonction BDMAX
Les trois arguments de BDMAX sont tous obligatoires et se lisent dans l'ordre : d'abord la plage de ta base (en-têtes compris), ensuite la colonne où chercher le maximum, enfin la zone de critères qui filtre les lignes. Aucun n'est facultatif, contrairement à d'autres fonctions de base de données.
Le champ accepte deux écritures : le nom de l'en-tête entre guillemets ("Ventes") ou son numéro de position (3). Le nom résiste mieux : si tu insères une colonne, un numéro pointe soudain au mauvais endroit.
base_de_données
: la plage complète de ta base de données, en-têtes de colonnes inclus en première lignePar exemple A1:D100 si ta base couvre les colonnes A à D sur 100 lignes. Les en-têtes sont indispensables car BDMAX les utilise pour identifier les colonnes.
Excel teste chaque ligne de cette plage (sauf la ligne d'en-têtes) et ne retient que celles qui correspondent aux critères. Assure-toi que ta base est continue, sans ligne vide au milieu.
Astuce : Pour rendre ta formule plus lisible et plus facile à maintenir, nomme ta base de données : sélectionne A1:D100, puis dans la zone de nom (en haut à gauche), tape BaseDonnees et valide. Tu peux ensuite écrire =BDMAX(BaseDonnees; "Ventes"; E1:E2).
champ
: le nom ou le numéro de la colonne dans laquelle BDMAX cherche le maximumTu peux écrire "Ventes" entre guillemets (le nom exact de l'en-tête, insensible à la casse) ou utiliser un numéro comme 3 pour désigner la 3e colonne de ta base.
Le nom en texte est plus lisible et plus robuste : si tu insères une colonne, le numéro devient faux mais le nom reste juste.
critères
: une zone séparée de ton tableau qui contient les conditions de filtrageElle doit avoir au minimum deux lignes : la première avec les noms des colonnes concernées (identiques aux en-têtes de ta base), la seconde avec les valeurs recherchées. Par exemple F1:F2 où F1 contient "Région" et F2 contient "Nord".
Tu peux avoir plusieurs colonnes dans cette zone pour des critères ET (sur la même ligne) ou plusieurs lignes pour des critères OU (lignes différentes). C'est toute la puissance de BDMAX par rapport aux autres fonctions de maximum.
Astuce : Pour un critère ET (les deux conditions doivent être vraies simultanément), place-les sur la même ligne dans ta zone de critères. Pour un critère OU (l'une ou l'autre suffit), place-les sur des lignes différentes. Cette flexibilité est ce qui distingue BDMAX de MAX.SI.ENS, qui ne gère que le ET.
Pas envie d'écrire la formule BDMAX à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Commercial : identifier la meilleure vente d'une région
Tu es commercial et tu gères plusieurs régions. Pour ta réunion d'équipe, tu veux mettre en avant la meilleure performance de la région Nord. Plutôt que de filtrer manuellement le tableau, tu poses une zone de critères et laisses BDMAX faire le tri.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Vendeur | Région | Ventes | Région | |
| 2 | Alice | Nord | 15 000 € | Nord | |
| 3 | Bob | Nord | 18 500 € | ||
| 4 | Claire | Sud | 20 000 € | MAX NORD : | |
| 5 | David | Est | 12 000 € | 18 500 € | |
| 6 | Emma | Nord | 16 200 € |
=BDMAX(A1:C6;"Ventes";E1:E2)La zone de critères E1:E2 contient l'en-tête Région en E1 et la valeur Nord en E2. La fonction scanne toutes les ventes de la région Nord (Alice 15 000 €, Bob 18 500 €, Emma 16 200 €) et retourne le maximum : 18 500 €, réalisé par Bob. Pour vérifier une autre région, il te suffit de changer la valeur en E2.
Gestionnaire de stock : trouver le pic de stock d'un produit
Tu gères un entrepôt et tu dois connaître le niveau de stock le plus élevé jamais atteint pour le "Laptop Pro", afin d'optimiser tes commandes futures et éviter le surstockage.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Date | Produit | Stock | Produit | |
| 2 | 01/01/2025 | Laptop Pro | 45 | Laptop Pro | |
| 3 | 08/01/2025 | Laptop Pro | 67 | ||
| 4 | 15/01/2025 | Souris USB | 120 | Stock max : | |
| 5 | 22/01/2025 | Laptop Pro | 52 | 67 | |
| 6 | 29/01/2025 | Clavier | 88 |
=BDMAX(A1:C6;"Stock";E1:E2)La fonction filtre uniquement les lignes dont la colonne Produit contient "Laptop Pro" (lignes 2, 3 et 5) et retourne 67, le stock maximum. Tu sais maintenant que ton stock a déjà atteint 67 unités : si c'est trop, tu peux abaisser tes seuils de commande pour éviter l'immobilisation de capital.
RH : détecter le salaire le plus élevé d'un département
Tu travailles aux ressources humaines et tu prépares une étude de rémunération comparative pour le département IT. Tu veux identifier le salaire plafond du département pour calibrer tes futures négociations.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Employé | Département | Salaire | Département | |
| 2 | Marie | IT | 3 500 € | IT | |
| 3 | Pierre | RH | 3 200 € | ||
| 4 | Sophie | IT | 4 200 € | Salaire max : | |
| 5 | Lucas | IT | 3 800 € | 4 200 € | |
| 6 | Emma | Ventes | 3 600 € |
=BDMAX(A1:C6;"Salaire";E1:E2)La fonction filtre les trois lignes du département IT (via la zone de critères E1:E2) et retourne 4 200 €, le salaire de Sophie. Cette information te permet de cadrer la fourchette haute et de préparer des grilles cohérentes pour les nouvelles embauches.
Contrôleur de gestion : maximum avec deux critères simultanés
Tu es contrôleur de gestion et tu identifies les postes budgétaires les plus importants. Tu veux la dépense Marketing la plus élevée pour l'année 2025 : deux critères simultanés sur deux colonnes différentes.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Catégorie | Année | Montant | Catégorie | Année | |
| 2 | Marketing | 2025 | 15 000 € | Marketing | 2025 | |
| 3 | IT | 2025 | 22 000 € | |||
| 4 | Marketing | 2025 | 28 500 € | Max : | ||
| 5 | Marketing | 2024 | 18 000 € | 28 500 € | ||
| 6 | RH | 2025 | 12 000 € |
=BDMAX(A1:C6;"Montant";E1:F2)Dans la zone de critères E1:F2, E1 contient Catégorie, F1 contient Année, E2 contient Marketing et F2 contient 2025. Ces deux critères sur la même ligne s'appliquent en ET (la ligne doit correspondre aux deux). La formule retourne 28 500 €, en ignorant Marketing 2024 (18 000 €) et IT 2025 (22 000 €). C'est là que BDMAX surpasse MAX.SI.ENS, avec des zones de critères réutilisables dans plusieurs formules.
Astuce de pro : Pour un critère OU sur deux régions, par exemple Nord OU Sud, ajoute une troisième ligne dans ta zone de critères : E1 = Région, E2 = Nord, E3 = Sud. BDMAX retournera le maximum toutes régions confondues.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction BDMAX
Avec BDMAX, le souci vient presque toujours du dialogue entre ta zone de critères et tes en-têtes. Un 0 qui s'affiche signifie qu'aucune ligne n'a matché : c'est souvent un espace invisible ou une casse qui sépare le nom dans tes critères de l'en-tête de la base.
Les deux autres pièges sont plus mécaniques : un nom de champ tapé sans guillemets te renvoie #VALEUR! ou #NOM?, et une base trouée de lignes vides fausse silencieusement le résultat.
BDMAX retourne 0 au lieu de la valeur attendue
Zéro signifie qu'aucune ligne de ta base ne correspond aux critères. La cause la plus fréquente : une différence invisible entre le nom dans ta zone de critères et l'en-tête de colonne (espace en fin de chaîne, casse différente, accent manquant).
Solution : Compare les en-têtes caractère par caractère en mode zoom. Utilise =BDNB(base;champ;critères) avec les mêmes critères : si le résultat est 0, ton problème vient des critères, pas de BDMAX. Nettoie les espaces parasites avec SUPPRESPACE.
Erreur #VALEUR! ou #NOM? au lancement de la formule
L'erreur #VALEUR! survient si le nom du champ est saisi sans guillemets. L'erreur #NOM? apparaît si Excel ne reconnaît pas le nom de colonne que tu as fourni (faute de frappe, guillemets absents).
Solution : Mets toujours le nom du champ entre guillemets : "Ventes" et non Ventes. Vérifie aussi que ta zone de critères comporte bien une ligne d'en-tête en première ligne.
Résultat inattendu malgré des critères corrects
Si ta base de données contient des lignes vides ou des en-têtes répétés au milieu du tableau, BDMAX peut s'arrêter prématurément ou prendre des lignes non souhaitées dans le calcul.
Solution : Assure-toi que ta base est continue de la première à la dernière ligne, sans interruption. La ligne d'en-tête doit être unique, en toute première ligne de la plage base_de_données.
BDMAX vs MAX vs MAX.SI.ENS vs BDMIN
Garde MAX tant que tu veux le plus grand sans filtrer, et MAX.SI.ENS pour des critères ET simples écrits directement dans la formule. Le moment où BDMAX prend l'avantage, c'est quand tu as besoin d'un OU logique (Nord OU Sud) ou d'une zone de critères que tu réutilises dans plusieurs formules : MAX.SI.ENS ne sait pas faire le OU.
BDMIN est sa jumelle exacte, mêmes règles de zone de critères et de joker, mais elle renvoie le minimum au lieu du maximum.
| Critère | BDMAX | MAX | MAX.SI.ENS | BDMIN |
|---|---|---|---|---|
| Critères complexes (OU logique) | ✅ Oui (lignes multiples) | ❌ Non | ⚠️ Uniquement ET | ✅ Oui (lignes multiples) |
| Zone de critères séparée | ✅ Oui | ❌ Non | ❌ Non | ✅ Oui |
| Caractères joker (* ?) | ✅ Oui | ❌ Non | ✅ Oui | ✅ Oui |
| Facilité de saisie | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| Résultat | Maximum | Maximum | Maximum | Minimum |
| Cas d'usage typique | Critères OU ou zone réutilisée | Maximum sans critère | Critères ET multiples | Minimum filtré |
Astuces avancées avec BDMAX
Critère OU : additionne les lignes dans ta zone
Pour trouver le maximum de deux régions combinées, par exemple Nord et Sud, ajoute une troisième ligne dans ta zone de critères : E1 = Région, E2 = Nord, E3 = Sud. La formule =BDMAX(A1:C100;"Ventes";E1:E3) retournera alors le maximum sur les deux régions réunies.
C'est l'avantage décisif de BDMAX : MAX.SI.ENS ne peut pas gérer ce cas en une seule formule.
Critères calculés dynamiques dans ta zone
Tu peux placer des formules dans ta zone de critères, pas seulement des valeurs fixes. Par exemple, mets =AUJOURDHUI()-30 en E2 (sous l'en-tête Date) pour filtrer les 30 derniers jours. La formule =BDMAX(A1:C100;"Montant";E1:E2) se recalculera automatiquement chaque jour sans que tu touches à rien.
Ce principe s'étend à tout calcul : seuils basés sur une moyenne, conditions sur l'année en cours, etc.
Sécurise avec BDNB avant BDMAX
Quand aucune ligne ne correspond aux critères, BDMAX retourne 0, ce qui est indistinguable d'un vrai zéro dans tes données. Pour éviter ce piège, entoure BDMAX d'un SI : =SI(BDNB(A1:C100;"Montant";E1:E2)>0;BDMAX(A1:C100;"Montant";E1:E2);"Aucun résultat") affiche un message clair quand les critères ne matchent rien.
Utilise cette approche dans tout rapport partagé où un 0 trompeur peut induire une décision erronée.
Questions fréquentes sur la fonction BDMAX
Quelle est la différence entre BDMAX et MAX.SI.ENS ?
BDMAX utilise une zone de critères séparée (un mini-tableau à côté de tes données) tandis que MAX.SI.ENS intègre les critères directement dans la formule. La différence clé : BDMAX gère les critères OU (plusieurs valeurs possibles pour une même colonne) en ajoutant des lignes dans la zone. MAX.SI.ENS ne fait que le ET.
Pour des critères simples ET, MAX.SI.ENS est plus direct. Pour des combinaisons OU ou une zone de critères réutilisée dans plusieurs formules, BDMAX est plus adaptée.
BDMAX peut-elle chercher le maximum dans plusieurs colonnes ?
Non, BDMAX retourne le maximum d'une seule colonne (le champ que tu spécifies). Si tu dois comparer des valeurs issues de plusieurs colonnes, utilise une colonne calculée dans ton tableau ou combine plusieurs BDMAX dans une formule MAX(BDMAX(...); BDMAX(...)).
Chaque appel de BDMAX cible une colonne précise : c'est sa logique de conception.
Comment combiner plusieurs critères avec un OU logique ?
Place les critères sur des lignes différentes dans ta zone de critères. Pour chercher le maximum des régions Nord OU Sud, ta zone doit avoir trois lignes : Région en E1 (en-tête), Nord en E2, Sud en E3. La formule =BDMAX(base;"Ventes";E1:E3) couvre les deux régions.
Sur la même ligne = ET (les deux conditions doivent être vraies). Sur des lignes différentes = OU (l'une ou l'autre suffit).
BDMAX fonctionne-t-elle avec des dates ?
Oui. Les dates sont des nombres dans Excel, donc BDMAX retourne la date la plus récente parmi celles qui correspondent aux critères. Formate simplement la cellule de résultat en format date pour afficher une date lisible plutôt qu'un numéro de série.
C'est pratique pour trouver la dernière commande d'un client, la date de fin de projet la plus éloignée ou la livraison la plus récente pour un fournisseur donné.
Puis-je utiliser des caractères joker dans les critères ?
Oui. Le * remplace n'importe quel nombre de caractères et le ? remplace un seul caractère. En E2, Par* correspondra à Paris, Pardieu, Parmentier, etc.
C'est utile pour rechercher des catégories qui partagent un préfixe ou pour cibler des références produit partielles, sans avoir à lister toutes les valeurs exactes.
Pour aller plus loin
Les fonctions similaires : MAX.SI.ENS, BDMIN, BDSOMME, BDNB, BDMOYENNE
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

