Pourquoi parler de COALESCE dans un blog Excel ?

Vous vous demandez peut-être : “Mais pourquoi un article sur une fonction SQL dans un blog dédié à Excel ?” Excellente question ! En réalité, de plus en plus d’utilisateurs d’Excel se servent de requêtes SQL pour manipuler des bases de données connectées via Power Query, Power BI, ou même des connexions ODBC dans Excel.

Et justement, COALESCE est une fonction SQL hyper pratique pour gérer les fameuses valeurs nulles (aussi appelées NULL). Elle permet de sécuriser et simplifier vos requêtes. Une fois que vous l’aurez dans la poche, vous ne regarderez plus les valeurs NULL comme avant.

COALESCE : c’est quoi exactement ?

COALESCE est une fonction SQL qui renvoie la première valeur non nulle parmi une liste d’expressions. En d’autres termes, elle parcourt les valeurs une par une jusqu’à en trouver une qui n’est pas NULL, puis elle retourne celle-ci.

Sa syntaxe est la suivante :

COALESCE(valeur1, valeur2, ..., valeurN)

Imaginez ça comme une fonction SI imbriquée ou un INDEX(MATCH()) qui s’arrête dès qu’il trouve ce qu’il cherche.

Un exemple concret pour mieux comprendre

Disons que vous avez une table Clients avec les colonnes suivantes :

  • telephone_domicile
  • telephone_mobile
  • telephone_bureau

Et vous voulez obtenir le premier numéro de téléphone disponible pour chaque client (celui qu’on pourra appeler sans perdre son temps à tomber sur un champ vide).

Voici la requête SQL avec COALESCE :

SELECT nom,        COALESCE(telephone_mobile, telephone_domicile, telephone_bureau) AS numero_contactFROM Clients;

Magie ! Cette requête renvoie automatiquement le premier numéro non NULL. C’est à la fois simple et ultra efficace.

Mais en fait… pourquoi ne pas simplement utiliser CASE ?

La fonction CASE aurait pu vous sauver aussi, mais elle devient rapidement illisible dès que vous empilez plusieurs conditions. COALESCE, elle, reste élégante.

Voici l’équivalent en SQL avec CASE :

SELECT nom,       CASE            WHEN telephone_mobile IS NOT NULL THEN telephone_mobile           WHEN telephone_domicile IS NOT NULL THEN telephone_domicile           WHEN telephone_bureau IS NOT NULL THEN telephone_bureau           ELSE NULL       END AS numero_contactFROM Clients;

Décidément, COALESCE, c’est plus compact !

Petit parallèle avec Excel

Vous aimez Excel ? (Moi aussi ! 😄) Eh bien, la fonction COALESCE ressemble beaucoup à une combinaison de SI et de NON ESTVIDE, ou à une suite de SI(cellule<>"";cellule;...) imbriqués.

Un exemple d’équivalent dans Excel :

=SI(A1<>""; A1; SI(B1<>""; B1; SI(C1<>""; C1; "")))

Pas très sexy, hein ? Voilà pourquoi COALESCE est souvent préféré dans les requêtes SQL. Et maintenant que vous le connaissez, vous allez peut-être repenser vos logiques Excel différemment aussi.

Utiliser COALESCE avec d’autres fonctions SQL

COALESCE est encore plus puissant lorsqu’il est combiné avec des agrégats ou des fonctions de texte.

Par exemple, imaginez que vous avez une table de commandes où certaines colonnes contiennent des remarques clients, parfois laissées vides. Vous pouvez utiliser COALESCE pour afficher un texte par défaut :

SELECT COALESCE( commentaire, 'Aucun commentaire laissé' ) AS remarqueFROM Commandes;

Idéal pour vos rapports et tableaux de bord dans Power BI ou Excel via Power Query. Plus besoin de bricolages manuels, les valeurs par défaut sont automatiquement gérées côté base.

Et avec JOIN, ça donne quoi ?

Autre cas courant : vous réalisez un LEFT JOIN et certaines valeurs sont NULL à cause de l’absence d’une correspondance. COALESCE peut corriger ça proprement.

Exemple :

SELECT c.nom,        COALESCE(v.nom_ville, 'Ville inconnue') AS villeFROM Clients cLEFT JOIN Villes v ON c.id_ville = v.id_ville;

Sans COALESCE, vous auriez un champ NULL. Avec COALESCE, vous affichez “Ville inconnue”. Pratique pour éviter les trous gênants dans un rapport ou une exportation Excel.

Les subtilités à connaître

Avant de foncer tête baissée avec COALESCE, quelques points importants :

  • Typage : COALESCE renvoie le type de la première valeur non NULL. Assurez-vous que toutes vos expressions sont compatibles ou converties avec CAST ou CONVERT.
  • Évaluation paresseuse : Dès qu’il trouve une valeur non NULL, il arrête l’évaluation. Ce qui veut dire que les fonctions ou calculs suivants ne seront pas exécutés, ce qui peut avoir un impact en cas de logique métier dépendante de tous les champs.

Un exemple différenciant : mise en forme de données utilisateur

Supposons que vous construisez une base de contacts ou un CRM maison (oui, on connaît tous quelqu’un qui aime faire ça dans Excel ou Access !).

Vous avez plusieurs colonnes : prénom, nom, surnom… mais certains champs sont vides selon les utilisateurs. Vous souhaitez afficher un “Nom affiché” cohérent :

SELECT COALESCE(surnom, prenom, 'Utilisateur inconnu') AS nom_afficheFROM Utilisateurs;

Grâce à COALESCE, même sans prénom ni surnom, l’utilisateur obtiendra une valeur par défaut, sans NULL ou champ vide ennuyeux.

COALESCE vs ISNULL vs NVL vs autres cousins du NULL

Peut-être avez-vous croisé d’autres fonctions similaires comme ISNULL (SQL Server), IFNULL (MySQL), ou NVL (Oracle) ?

Toutes ces fonctions remplissent une mission proche : substituer une valeur à une autre si elle est NULL. La nuance est que

  • ISNULL(valeur, remplacement) ne prend que deux arguments
  • COALESCE permet de gérer une liste entière
  • COALESCE est plus portable (standard SQL), alors que les autres sont souvent propres au SGBD

Par souci de compatibilité et de clarté, COALESCE est donc souvent préféré en environnement multiplateforme ou dans les projets à long terme.

Une astuce bonus : concaténer des chaînes avec COALESCE

On l’oublie souvent, mais COALESCE peut jouer un rôle essentiel dans la mise en forme conditionnelle des chaînes de texte.

SELECT nom,       'Email : ' + COALESCE(email, 'non fourni') AS contact_emailFROM Clients;

Résultat ? Une colonne bien formatée qui affiche “Email : non fourni” au lieu de “Email : NULL”, bien plus lisible pour les exports Excel ou l’intégration dans Power BI.

Au final, COALESCE, c’est un peu votre couteau suisse anti-NULL

Que vous soyez en train de construire une requête SQL pour votre Power Query, d’automatiser un rapport Excel, ou même de préparer un tableau de bord dans Power BI, la fonction COALESCE vous simplifie la vie.

Elle vous aide à :

  • Remplacer intelligemment les valeurs NULL
  • Créer des sorties “propres” et cohérentes
  • Simplifier vos logiques conditionnelles
  • Gagner en lisibilité dans vos requêtes

Et maintenant, à vous de jouer : essayez d’intégrer COALESCE dans l’une de vos requêtes SQL dès aujourd’hui. Vous verrez, c’est addictif ! 😉