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

Fonction GROUPBY dans Excel — Grouper et synthétiser des données avec une seule formule

|

Fonction GROUPBY dans Excel — Grouper et synthétiser des données avec une seule formule

L'essentielGROUPBY(champs_lignes; valeurs; fonction) prend une colonne à grouper, une colonne de nombres et une agrégation, puis déverse un tableau récapitulatif fini : =GROUPBY(C2:C1000; D2:D1000; SUM) renvoie chaque région avec son total. La seule règle qui piège tout le monde : passez la fonction par son nomSUM, pas SUM() — car le troisième argument est une fonction, pas une valeur. Contrairement à un tableau croisé dynamique, elle se recalcule à l'instant où vos données changent, sans Actualiser. C'est le remplaçant en une formule du duo UNIQUE

  • SUMIFS. Exige Excel 365 (déployée en 2024–2025) ; absente de 2021 et des versions antérieures.
=GROUPBY(C2:C1000; D2:D1000; SUM)                 ' chaque région, avec son total de ventes
=GROUPBY(C2:C1000; D2:D1000; AVERAGE)             ' changez d'agrégation — rien que le nom
=GROUPBY(C2:C1000; D2:D1000; COUNT)               ' combien de lignes par région
=GROUPBY(B2:C1000; D2:D1000; SUM)                 ' deux colonnes de groupement -> une hiérarchie
=GROUPBY(C2:C1000; D2:D1000; SUM; 0; 0; -2)       ' aucun total, trié par le total, décroissant

Pendant trente ans, synthétiser des données dans Excel imposait de laisser vos formules de côté. Soit vous construisiez un tableau croisé dynamique — un objet manuel qui se périme dès que les données changent et réclame un clic droit Actualiser —, soit vous assembliez un récapitulatif à la main avec UNIQUE pour lister les catégories et SUMIFS pour totaliser chacune. GROUPBY (2024) met fin à ces deux corvées. Vous cessez de construire un récapitulatif pour en décrire un : nommez le champ à grouper, les valeurs à agréger et la manière — et Excel déverse le rapport vivant.

Ce que vous allez apprendre

  • Le modèle mental : vous décrivez un rapport, Excel le déverse
  • Les trois arguments obligatoires — et le piège du troisième
  • Pourquoi vous passez SUM, pas SUM() (l'erreur numéro un)
  • Grouper par deux colonnes ou plus, et totaliser plusieurs valeurs
  • Ajouter totaux généraux et sous-totaux avec profondeur_totaux
  • Trier par la valeur agrégée sans l'envelopper dans SORT
  • Pourquoi elle surpasse UNIQUE + SUMIFS et, souvent, le tableau croisé dynamique

Le modèle mental : décrire le rapport, pas le construire

Un tableau croisé dynamique est une chose que vous construisez — vous glissez des champs dans des cases, et il produit un bloc de cellules déconnecté de vos formules et figé jusqu'à ce que vous l'actualisiez. GROUPBY est une formule qui produit le même bloc mais le garde vivant. Le glissement va du nom au verbe : au lieu de bâtir un objet récapitulatif, vous écrivez une phrase qui dit « groupe ceux-ci, totalise ceux-là ».

=GROUPBY(C2:C1000; D2:D1000; SUM)
'        └ grouper par    └ additionner └ comment

Lisez de gauche à droite : grouper par la colonne Région, additionner la colonne Ventes, en utilisant SUM. Le résultat se déverse — une ligne par région distincte, chacune avec son total, plus un total général — et chacun de ces nombres se met à jour à l'instant où une valeur de D2:D1000 change. Pas d'Actualiser, pas de cache de tableau croisé périmé. Ce recalcul en direct est la raison même de choisir GROUPBY plutôt qu'un tableau croisé dynamique quand le récapitulatif alimente un tableau de bord.

Les trois arguments obligatoires

Tout le reste est facultatif. Un GROUPBY qui fonctionne réclame exactement trois choses :

=GROUPBY( champs_lignes ; valeurs ; fonction )
'          quoi            quoi       comment
'          grouper         agréger    agréger
  • champs_lignes — la colonne (ou les colonnes) dont les valeurs distinctes deviennent les lignes de votre récapitulatif : C2:C1000, la colonne Région.
  • valeurs — la colonne de données à traiter : D2:D1000, les ventes.
  • fonctioncomment la traiter : SUM, AVERAGE, COUNT, MAX, MIN, et bien d'autres.

Donnez-lui ces trois-là et vous obtenez un tableau trié, dédoublonné et totalisé. Mais c'est sur ce troisième argument que presque tout le monde trébuche la première fois.

Le piège numéro un : passez SUM, pas SUM()

L'argument fonction n'est pas une valeur — c'est une fonction en elle-même, transmise par son nom pour que GROUPBY puisse l'appliquer à chaque groupe à votre place. Vous passez l'outil, pas le résultat de son utilisation.

=GROUPBY(C2:C1000; D2:D1000; SUM)        ' CORRECT — le nom de la fonction
=GROUPBY(C2:C1000; D2:D1000; SUM())      ' FAUX — #CALC!/erreur, vous l'avez appelée sans données
=GROUPBY(C2:C1000; D2:D1000; SUM(D:D))   ' FAUX — ça, c'est un seul nombre, pas une fonction

Voyez SUM ici comme une recette que vous tendez à quelqu'un, pas comme un gâteau terminé. GROUPBY prend la recette SUM et l'exécute une fois par région, en coulisses. Écrire SUM() ou SUM(D2:D1000) réduit tout à une seule valeur avant même que GROUPBY ne voie les groupes, ce qui est précisément ce que vous ne voulez pas. La règle : le troisième argument est toujours un nom de fonction nuSUM, AVERAGE, COUNT, PERCENTOF — jamais une fonction appelée.

Grouper par plusieurs colonnes

Pointez champs_lignes sur deux colonnes adjacentes et GROUPBY bâtit une hiérarchie — la première colonne est le groupe externe, la seconde s'imbrique à l'intérieur :

=GROUPBY(B2:C1000; D2:D1000; SUM)   ' Région, puis Produit dans chaque région, chacun sous-totalisé

Vous obtenez Région au niveau supérieur et, en retrait sous chacune, ses Produits — la même forme qu'un tableau croisé dynamique vous donne à partir de deux champs de lignes, mais sous la forme d'une formule vivante. Les colonnes doivent être adjacentes (ou empilées avec HSTACK) ; elles se lisent de gauche à droite, du groupe le plus externe au plus interne.

Totaliser plusieurs valeurs à la fois

Élargissez valeurs à plusieurs colonnes et chacune est agrégée côte à côte :

=GROUPBY(C2:C1000; D2:E1000; SUM)   ' pour chaque région, total des Ventes ET total des Unités

Désormais chaque ligne de région affiche deux totaux — Ventes et Unités — dans des colonnes adjacentes. C'est le cas de reporting quotidien (chiffre d'affaires, coût, unités, marge, le tout par région) qui imposait autrefois un SUMIFS par métrique et par catégorie ; ici, c'est une seule formule qui grandit à mesure que vous élargissez la plage valeurs.

Ajouter totaux et sous-totaux avec profondeur_totaux

Le cinquième argument, profondeur_totaux, contrôle les lignes de total. Omettez-le et Excel se débrouille seul — un total général, plus des sous-totaux là où le groupement le permet. Vous pouvez aussi le fixer :

=GROUPBY(C2:C1000; D2:D1000; SUM; ; 0)    ' 0 = aucun total
=GROUPBY(C2:C1000; D2:D1000; SUM; ; 1)    ' 1 = total général uniquement
=GROUPBY(B2:C1000; D2:D1000; SUM; ; 2)    ' 2 = total général + sous-total par groupe externe
=GROUPBY(C2:C1000; D2:D1000; SUM; ; -1)   ' négatif = totaux en HAUT au lieu du bas

Les deux points-virgules sautent en_têtes_champs (le quatrième argument) pour atteindre profondeur_totaux. Une valeur négative est la petite astuce utile que la plupart des gens manquent : elle place les totaux au-dessus du détail (-1 total général seul, -2 avec les sous-totaux), ce que vous voulez quand le récapitulatif se trouve en haut d'un tableau de bord et que vous ne voulez pas voir le total général filer tout en bas.

Trier par la valeur agrégée — sans SORT

L'instinct est de tout envelopper dans SORT pour classer les groupes par taille. Inutile — ordre_tri est intégré, et il trie par les colonnes de résultat, pas seulement par l'étiquette de groupe :

=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; 2)    ' tri croissant par la colonne 2 (le total)
=GROUPBY(C2:C1000; D2:D1000; SUM; ; ; -2)   ' tri DÉCROISSANT par le total — plus grande région d'abord

ordre_tri est un numéro de colonne : 1 est la colonne de groupe, 2 la première colonne agrégée, et un nombre négatif trie cette colonne en décroissant. Ainsi -2 vous donne le classique classement « du plus grand au plus petit » en un seul argument. Envelopper un GROUPBY dans SORT signifie presque toujours que vous avez oublié l'existence de cet argument.

Pourquoi elle remplace UNIQUE + SUMIFS

Avant GROUPBY, un récapitulatif à base de formules prenait deux étapes : lister les catégories distinctes, puis totaliser chacune.

' L'ancien motif en deux étapes :
=UNIQUE(C2:C1000)                   ' étape 1 : obtenir la liste des régions (se déverse vers le bas)
=SUMIFS(D:D; C:C; F2#)              ' étape 2 : un SUMIFS par région, à côté

' Le remplacement par GROUPBY :
=GROUPBY(C2:C1000; D2:D1000; SUM)   ' les deux étapes, une formule, plus les totaux et le tri

L'ancien motif fonctionne toujours et mérite d'être connu — mais GROUPBY replie le UNIQUE, le SUMIFS, le tri et les totaux dans une seule expression qui ne peut pas se désynchroniser (dans la version en deux étapes, un UNIQUE qui se déverse plus loin que votre colonne SUMIFS supprime des catégories en silence). Quand vous avez besoin des catégories et des agrégats ensemble, GROUPBY est l'outil le plus propre ; gardez SUMIFS pour amener un seul total conditionnel dans une cellule précise.

Le jugement

Utilisez GROUPBY quand vous voulez un récapitulatif qui reste vivant et alimente d'autres formules — une tuile de tableau de bord, un chiffre qui se recalcule à mesure que les données arrivent, un tableau que vous référencerez ailleurs. Utilisez un tableau croisé dynamique quand vous voulez explorer de façon interactive : glisser des champs, ajouter des segments, double-cliquer pour descendre dans les lignes source. Gardez SUMIFS pour le cas ponctuel « mettre le total de cette région dans cette cellule précise ». Les deux règles mécaniques qui préviennent presque toutes les erreurs : le troisième argument est un nom de fonction nu (SUM, jamais SUM()), et les totaux, le tri et le filtrage sont des arguments que vous avez déjà — pensez à profondeur_totaux, ordre_tri et matrice_filtre avant d'envelopper la formule dans quoi que ce soit. Dès que « synthétise ceci » devient une formule plutôt qu'un objet, le reporting cesse d'être une corvée à refaire pour devenir quelque chose qui s'entretient tout seul.

Comment ExcelMaster aide

GROUPBY est puissant, mais ses arguments facultatifs sont positionnels — oubliez un point-virgule et vous réglez le mauvais. Dites à ExcelMaster « le total des ventes par région, trié du plus grand au plus petit, avec un total général » et il écrit =GROUPBY(C2:C1000; D2:D1000; SUM; ; 1; -2) avec les points-virgules de saut aux bons endroits. Demandez « la valeur moyenne des commandes et le nombre de commandes par client » et il élargit valeurs et choisit les agrégations. Et si vous collez un GROUPBY qui renvoie #CALC! parce qu'il indique SUM() au lieu de SUM, ou si vous entretenez encore un bloc UNIQUE + SUMIFS à la main, il repère le motif et le réécrit en une seule formule.

Questions fréquentes

Que fait GROUPBY dans Excel ?

GROUPBY(champs_lignes; valeurs; fonction) groupe les lignes selon les valeurs distinctes de champs_lignes, agrège les valeurs correspondantes avec fonction (comme SUM ou AVERAGE), et déverse un tableau récapitulatif trié et totalisé. C'est une version formule du comportement de base d'un tableau croisé dynamique, et elle se recalcule automatiquement dès que les données sous-jacentes changent.

Pourquoi passer SUM plutôt que SUM() dans GROUPBY ?

Parce que le troisième argument est une fonction, pas une valeur. GROUPBY applique lui-même cette fonction à chaque groupe : vous lui tendez donc la fonction par son nom — SUM — et le laissez faire l'appel. Écrire SUM() ou SUM(D:D) produit un seul nombre ou une erreur au lieu d'une agrégation par groupe. Il en va de même pour AVERAGE, COUNT, MAX, PERCENTOF et n'importe quelle LAMBDA.

Comment trier un GROUPBY par le total, du plus grand au plus petit ?

Utilisez l'argument ordre_tri (le sixième) : =GROUPBY(C2:C1000; D2:D1000; SUM; ; ; -2). Le nombre est un indice de colonne — 2 est la première colonne agrégée — et un signe négatif la trie en décroissant, si bien que -2 classe les groupes du plus grand total au plus petit. Pas besoin d'envelopper la formule dans SORT.

GROUPBY peut-il grouper par deux colonnes et totaliser deux valeurs ?

Oui. Pour deux niveaux de groupement, donnez à champs_lignes deux colonnes adjacentes (=GROUPBY(B2:C1000; D2:D1000; SUM)) et la première imbrique la seconde. Pour deux métriques, élargissez valeurs à deux colonnes (=GROUPBY(C2:C1000; D2:E1000; SUM)) et chacune est agrégée côte à côte. Vous pouvez faire les deux à la fois.

Quelles versions d'Excel ont GROUPBY ?

GROUPBY est une fonction Microsoft 365 déployée au fil de 2024–2025, d'abord aux Insiders puis au Canal actuel. Elle n'est pas disponible dans Excel 2021, 2019, 2016, ni dans Excel pour le web sur les versions plus anciennes. Si =GROUPBY(...) renvoie #NAME?, votre version ne l'a pas encore — le motif UNIQUE + SUMIFS est la solution de repli.

Testé dans

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

Guides connexes : Excel PIVOTBY · GROUPBY et PIVOTBY — Avancé · Excel SUMIFS · Excel UNIQUE · Excel FILTER