ITSkillsCenter
Bureautique & Productivité

GROUPER.PAR et PIVOTER.PAR dans Excel : alternative aux tableaux croisés dynamiques

13 min de lecture

Article principal : Maîtriser Excel pour PME : le guide complet 2026
Ce tutoriel s’inscrit dans la série Excel pour PME. Pour la vue d’ensemble du sujet, lire d’abord le guide principal.

Pourquoi GROUPER.PAR change la donne face au tableau croisé dynamique

Le tableau croisé dynamique reste la fonctionnalité culte d’Excel pour agréger des données, mais il a deux limites structurelles : il vit dans une zone séparée du classeur, déconnectée des formules, et il faut le rafraîchir manuellement quand les données sources changent. Quand on glisse une ligne dans la source, le TCD ignore la nouveauté tant qu’on n’a pas cliqué sur Actualiser. Microsoft a livré en 2024 deux fonctions matricielles qui suppriment ces deux limites : GROUPER.PAR et PIVOTER.PAR. Disponibles dans Excel pour Microsoft 365, elles agrègent en formule, recalculent à chaque modification, et déversent dynamiquement le résultat dans la feuille comme n’importe quel tableau dynamique. Ce tutoriel construit pas-à-pas plusieurs analyses de ventes avec GROUPER.PAR et PIVOTER.PAR, depuis le cas le plus simple jusqu’au filtrage et au tri avancés.

L’objectif est concret. À la fin, vous saurez écrire les deux fonctions avec leurs arguments principaux, choisir entre GROUPER.PAR et PIVOTER.PAR selon le besoin, contrôler les en-têtes et les totaux via les arguments numériques, trier le résultat, filtrer dynamiquement avec un tableau de critères, et combiner ces fonctions avec LAMBDA pour des agrégations sur mesure. Le tutoriel suppose Excel pour Microsoft 365 sur le canal Current — ces fonctions n’existent pas dans Excel 2019, 2021 ou 2024 perpétuel.

Étape 1 — Vérifier la disponibilité dans votre version

GROUPER.PAR et PIVOTER.PAR ont été déployés progressivement dans le canal Current de Microsoft 365 à partir de 2024. La page officielle GROUPER.PAR indique S’applique à Excel pour Microsoft 365, ce qui exclut les versions perpétuelles. Pour vérifier rapidement, ouvrir une cellule vide et taper =GROUPER.PAR(. Si l’autocomplétion propose la fonction avec son aide contextuelle, c’est bon ; si Excel affiche #NOM?, la fonction n’est pas reconnue par cette installation.

Note importante : selon la version régionale d’Excel, les noms français sont GROUPER.PAR et PIVOTER.PAR, et les arguments sont séparés par des points-virgules (;) en paramètres régionaux français, par des virgules (,) en paramètres régionaux anglais. Tous les exemples de ce tutoriel utilisent la version française avec point-virgule.

Étape 2 — La syntaxe complète à connaître

GROUPER.PAR accepte huit arguments — trois obligatoires et cinq optionnels. PIVOTER.PAR en accepte onze — quatre obligatoires et sept optionnels. Cette richesse paraît intimidante au premier regard mais en pratique on n’utilise les arguments avancés que dans des cas précis. La signature complète, à garder sous les yeux comme antisèche, est la suivante.

=GROUPER.PAR(champs_lignes ; valeurs ; fonction ;
            [en_tetes] ; [profondeur_totaux] ; [ordre_tri] ;
            [tableau_filtre] ; [relation_champs])

=PIVOTER.PAR(champs_lignes ; champs_colonnes ; valeurs ; fonction ;
            [en_tetes] ;
            [profondeur_totaux_lignes] ; [ordre_tri_lignes] ;
            [profondeur_totaux_colonnes] ; [ordre_tri_colonnes] ;
            [tableau_filtre] ; [relatif_a])

Les trois piliers communs sont les mêmes : on indique par quoi grouper (la plage qui sert de clé), quoi agréger (les valeurs numériques), et comment agréger (la fonction d’agrégation). Pour PIVOTER.PAR, on ajoute un quatrième argument qui spécifie la dimension colonne — c’est la seule différence structurelle avec GROUPER.PAR.

Étape 3 — Premier exemple GROUPER.PAR sur des ventes

Imaginons un tableau structuré nommé tblVentes avec les colonnes Date, Boutique, Produit, Quantité et Montant. La première analyse classique est le chiffre d’affaires total par produit. La formule la plus courte tient en une ligne, dans une cellule vide à côté du tableau.

=GROUPER.PAR(tblVentes[Produit] ; tblVentes[Montant] ; SOMME)

À la validation, Excel déverse le résultat sur deux colonnes et autant de lignes qu’il y a de produits distincts. Une troisième ligne contient le grand total automatique. Aucun rafraîchissement nécessaire — si on ajoute une ligne au tableau tblVentes, la cellule GROUPER.PAR recalcule instantanément et la nouvelle ligne apparaît si le produit est nouveau, ou la ligne existante se met à jour. Cette dynamique est l’écart fondamental avec un tableau croisé dynamique classique qui exige un clic sur Actualiser.

La fonction SOMME peut être remplacée par les fonctions d’agrégation standard d’Excel — MOYENNE, NB, MAX, MIN sont explicitement citées par la documentation Microsoft. D’autres fonctions classiques comme NBVAL, PRODUIT, ECARTYPE, VAR ou JOINDRE.TEXTE fonctionnent aussi en pratique mais ne sont pas listées de manière exhaustive dans la doc officielle. La fonction POURCENTAGEDE (PERCENTOF en anglais), introduite avec GROUPER.PAR, calcule le pourcentage de chaque sous-groupe par rapport au total.

Étape 4 — Contrôler les en-têtes et les totaux

L’argument en_tetes (quatrième position) gouverne l’affichage des en-têtes de colonnes dans le résultat. Cinq valeurs possibles avec un sens précis. 0 signifie pas d’en-tête, ne pas générer. 1 signifie oui, mais ne pas afficher (les en-têtes existent dans la source mais ne sont pas répétés). 2 signifie non, mais en générer (Excel fabrique des en-têtes par défaut). 3 signifie oui, et les afficher. L’argument omis laisse Excel décider en mode automatique selon la source.

L’argument profondeur_totaux (cinquième position) gouverne les totaux. 0 retire complètement les totaux. 1 ajoute uniquement le grand total. 2 ajoute le grand total et les sous-totaux par groupe quand la donnée est hiérarchique. Les valeurs négatives placent les totaux en haut au lieu d’en bas (-1 pour grand total en haut, -2 pour grand total et sous-totaux en haut). L’argument omis applique le défaut automatique : grand total et sous-totaux quand c’est possible.

=GROUPER.PAR(tblVentes[Produit] ; tblVentes[Montant] ; SOMME ; 3 ; 0)

Ce formule force les en-têtes affichés et supprime les totaux — utile quand on veut un tableau résultat propre à insérer dans un dashboard sans la ligne de grand total qui prendrait de la place inutile. Le résultat tient sur les deux colonnes Produit et Montant, sans ligne de total parasite.

Étape 5 — Trier le résultat avec ordre_tri

L’argument ordre_tri (sixième position) permet de trier les lignes du résultat sans formule supplémentaire. La valeur est un nombre qui correspond à une colonne du résultat, signe positif pour ordre croissant, signe négatif pour ordre décroissant. La numérotation suit l’ordre champs_lignes puis valeurs — donc dans notre exemple à deux colonnes, 1 trie par produit alphabétique, 2 trie par montant croissant, -2 trie par montant décroissant.

=GROUPER.PAR(tblVentes[Produit] ; tblVentes[Montant] ; SOMME ; 3 ; 1 ; -2)

Cette formule produit les ventes par produit, en-têtes affichés, grand total en bas, triées par montant décroissant. C’est exactement le top des produits qu’on cherche dans la plupart des analyses commerciales, en une seule cellule. Pour combiner plusieurs critères de tri, on passe un tableau littéral : {1\-2} trie d’abord par produit alphabétique puis par montant décroissant en seconde clé. Le caractère \ sépare les éléments d’un tableau ligne en notation française.

Étape 6 — Filtrer dynamiquement avec tableau_filtre

L’argument tableau_filtre (septième position) est la fonctionnalité qui rend GROUPER.PAR vraiment puissant. On lui passe un vecteur booléen de la même hauteur que la source, où chaque VRAI conserve la ligne et chaque FAUX l’écarte de l’agrégation. Ce vecteur peut être construit à la volée par une expression conditionnelle.

=GROUPER.PAR(
  tblVentes[Produit] ;
  tblVentes[Montant] ;
  SOMME ; 3 ; 1 ; -2 ;
  (tblVentes[Date] >= DATE(2026;1;1)) * (tblVentes[Date] <= DATE(2026;3;31))
)

Cette formule agrège uniquement les ventes du premier trimestre 2026. La multiplication (...)*(...) entre deux conditions logiques implémente un ET booléen. Pour un OU, on utilise le + sur les conditions. Si on veut filtrer par boutique en plus du trimestre, on enchaîne : (tblVentes[Boutique] = "Plateau") * (tblVentes[Date] >= DATE(2026;1;1)). Cette syntaxe est compacte et beaucoup plus dynamique que les segments d’un tableau croisé classique.

Étape 7 — Passer à PIVOTER.PAR pour une matrice

Quand on veut un croisé classique avec lignes ET colonnes — par exemple chiffre d’affaires par produit en lignes et par mois en colonnes — on bascule sur PIVOTER.PAR. La fonction reprend la signature de GROUPER.PAR mais ajoute un argument champs_colonnes en deuxième position, et duplique les arguments profondeur_totaux et ordre_tri pour traiter lignes et colonnes séparément.

=PIVOTER.PAR(
  tblVentes[Produit] ;
  TEXTE(tblVentes[Date] ; "AAAA-MM") ;
  tblVentes[Montant] ;
  SOMME ;
  3 ; 1 ; -2 ; 1 ; 1
)

Cette formule produit une matrice produit (lignes) par mois (colonnes) avec les sommes des montants. La fonction TEXTE(tblVentes[Date] ; "AAAA-MM") reformate les dates en chaîne année-mois pour créer la dimension colonne propre. Les arguments profondeur_totaux_lignes = 1 et profondeur_totaux_colonnes = 1 ajoutent le grand total à droite et en bas. L’ordre_tri_lignes = -2 trie les produits par chiffre d’affaires décroissant. Le rendu est un tableau résultat de huit colonnes (six mois plus produit plus total) qui se déverse automatiquement.

Étape 8 — Combiner avec LAMBDA pour des agrégations sur mesure

Les fonctions d’agrégation natives (SOMME, MOYENNE, MAX, etc.) couvrent quatre-vingt-dix pour cent des cas, mais il arrive qu’on ait besoin d’une statistique custom — par exemple la somme des marges supérieures à zéro ou la médiane pondérée. L’argument fonction de GROUPER.PAR accepte une LAMBDA qui prend en entrée la liste des valeurs du sous-groupe et retourne un scalaire.

=GROUPER.PAR(
  tblVentes[Produit] ;
  tblVentes[Marge] ;
  LAMBDA(plage ; SOMMEPROD(plage * (plage > 0))) ;
  3 ; 1 ; -2
)

La LAMBDA reçoit la plage des marges du sous-groupe, calcule SOMMEPROD(plage * (plage > 0)) qui ne retient que les valeurs positives. Le résultat est le total des marges positives par produit. Cette extension via LAMBDA ouvre des analyses qu’aucun tableau croisé natif ne sait faire — elle est ce qui distingue vraiment GROUPER.PAR comme outil d’analyse moderne.

Étape 9 — Quand préférer le tableau croisé dynamique classique

GROUPER.PAR et PIVOTER.PAR ne remplacent pas tous les usages du TCD. Le tableau croisé classique reste préférable dans plusieurs cas : interface drag-and-drop pour utilisateurs non techniques, segments interactifs (slicers), drill-down par double-clic sur une cellule, configurations complexes que l’utilisateur ajuste fréquemment. Le TCD est un outil d’exploration interactive ; GROUPER.PAR est un outil de calcul reproductible et automatisable.

La règle pratique pour choisir : si le résultat doit être livré dans un classeur partagé qui se met à jour automatiquement, GROUPER.PAR ou PIVOTER.PAR. Si l’utilisateur veut explorer ses données en cliquant librement, TCD classique. Les deux peuvent coexister dans le même classeur — un dashboard avec des GROUPER.PAR pour les indicateurs clés en temps réel, et un onglet d’exploration avec un TCD classique pour les analyses ad-hoc.

Erreurs fréquentes

Erreur Cause Solution
#NOM? sur GROUPER.PAR Excel non Microsoft 365 Mettre à jour vers Microsoft 365 ; ces fonctions n’existent pas en perpétuel
#VALEUR! avec tableau_filtre Vecteur de filtre de mauvaise taille Vérifier que le filtre fait la même hauteur que la plage source
Le résultat ne se déverse pas Cellules en dessous non vides Effacer les cellules qui bloquent le déversement (#PROPAGATION!)
Tri par numéro de colonne ne fonctionne pas Numérotation incorrecte des colonnes Compter d’abord les colonnes champs_lignes, puis les valeurs
LAMBDA retourne #VALEUR! La LAMBDA renvoie une plage au lieu d’un scalaire S’assurer que la LAMBDA retourne une valeur unique
Sous-totaux absents profondeur_totaux=1 ne génère que le grand total Utiliser profondeur_totaux=2 pour grand total + sous-totaux
PIVOTER.PAR très lent sur grandes données Calcul matriciel coûteux Préfiltrer la source via tableau_filtre ou pré-agréger via GROUPER.PAR

Tutoriels associés

Pour aller plus loin

Retour au guide principal : Maîtriser Excel pour PME : le guide complet 2026.

FAQ

Pourquoi ma version d’Excel ne reconnaît pas GROUPER.PAR ?
Ces fonctions sont exclusives à Excel pour Microsoft 365 sur le canal Current et ne sont pas livrées dans les versions perpétuelles (Excel 2019, 2021, 2024). Une organisation qui dépend d’Excel perpétuel n’y aura jamais accès — la migration vers un abonnement Microsoft 365 est le seul chemin officiel.

Quelle différence concrète avec un tableau croisé dynamique ?
Le TCD est un objet posé sur la feuille avec son propre cache de données ; GROUPER.PAR est une formule qui vit dans une cellule. La conséquence pratique : le TCD a besoin d’un Actualiser manuel ou planifié, GROUPER.PAR recalcule automatiquement. Le TCD propose une UI drag-and-drop riche, GROUPER.PAR ne s’utilise qu’en formule. Le TCD garde son cache même sans connexion, GROUPER.PAR recalcule à chaque ouverture.

Peut-on agréger plusieurs colonnes en même temps ?
Oui, en passant un tableau de plages dans l’argument valeurs et un tableau de fonctions dans fonction. Par exemple HSTACK(tblVentes[Quantité]; tblVentes[Montant]) en valeurs et HSTACK(SOMME; MOYENNE) en fonctions calcule la somme des quantités et la moyenne des montants pour chaque produit. La syntaxe demande un peu de pratique mais évite plusieurs cellules GROUPER.PAR séparées.

GROUPER.PAR fonctionne-t-il sur des données dans un autre classeur ?
Oui, à condition que la plage source soit accessible — soit par référence externe à un classeur ouvert, soit par une connexion Power Query qui charge les données dans le classeur courant. La pratique recommandée pour les analyses sur sources externes est Power Query, qui charge proprement dans une table structurée locale, puis GROUPER.PAR sur la table locale.

Comment trier sur un critère qui n’apparaît pas dans le résultat ?
L’argument ordre_tri ne sait trier que sur les colonnes du résultat. Pour trier selon une mesure auxiliaire, l’astuce est d’inclure la mesure de tri dans l’argument valeurs (qui devient une colonne du résultat), trier dessus, puis la masquer ou l’ignorer en aval. Une autre voie consiste à englober la GROUPER.PAR dans une TRIER qui re-trie le résultat selon une colonne calculée externe.

POURCENTAGEDE est-elle vraiment utile ?
Oui, surtout pour les pondérations. POURCENTAGEDE(plage_partie ; plage_total) renvoie le rapport en pourcentage et accepte d’être passée comme argument fonction de GROUPER.PAR. Le résultat est directement un pourcentage par groupe par rapport au total — chose qu’on faisait jusque-là avec une formule =plage / SOUS.TOTAL(...) manuelle. Le gain est minime sur un cas simple mais significatif sur des dashboards avec dizaines de pourcentages.

Les performances tiennent-elles sur cent mille lignes ?
Oui pour GROUPER.PAR sur cent mille lignes, le calcul reste sous la seconde. Pour PIVOTER.PAR la complexité grimpe avec le nombre de combinaisons lignes × colonnes — sur cent mille lignes croisées avec cent valeurs distinctes en colonnes, le calcul peut atteindre quelques secondes. Au-delà du million de lignes, basculer sur Power Query suivi d’un GROUPER.PAR sur la table pré-agrégée donne de meilleurs résultats que PIVOTER.PAR direct.

Sponsoriser ce contenu

Cet emplacement est à vous

Position premium en fin d'article — c'est l'instant où les lecteurs sont le plus engagés. Réservez cet espace pour votre marque, votre formation ou votre offre.

Recevoir nos tarifs
Publicité