Qu'est-ce que la fonction BYCOL ?
BYCOL (BY COLumn en anglais) te sert dès que tu dois répéter le même calcul sur chaque colonne d'un tableau : plutôt que de copier une formule de côté en côté, tu l'écris une seule fois et elle s'applique à toutes les colonnes d'un coup.
Concrètement, c'est elle qui calcule la somme de ventes de chaque vendeur en une ligne, la moyenne de chaque matière pour un professeur, la température maximale de chaque ville sur une période, ou la volatilité de chaque actif financier. Elle s'adapte automatiquement quand on ajoute ou supprime des colonnes.

Comprendre chaque paramètre de la fonction BYCOL
BYCOL ne prend que deux choses, dans cet ordre : d'abord le tableau à découper, ensuite la LAMBDA qui dira quoi faire de chaque colonne. Les deux sont obligatoires. Le piège n'est pas l'ordre mais ce que reçoit la LAMBDA : non pas une cellule isolée, mais la colonne entière sous forme de tableau vertical, d'où l'usage de fonctions d'agrégation comme SOMME ou MOYENNE.
tableau
: le tableau ou la plage à traiter colonne par colonneÇa peut être une plage comme A1:C10 ou un tableau structuré. Excel parcourt le tableau de gauche à droite et extrait chaque colonne sous forme de tableau vertical pour la passer à la LAMBDA.
Si tu as 4 colonnes dans ton tableau, BYCOL va créer 4 tableaux verticaux (un par colonne), appliquer ta LAMBDA à chacun, puis retourner 4 résultats en une ligne horizontale.
lambda
: la fonction LAMBDA à appliquer sur chaque colonneElle reçoit une colonne entière (tableau vertical) et doit retourner une valeur unique.
Sa syntaxe est LAMBDA(nomParamètre; calcul) : nomParamètre est le nom que tu donnes à la colonne à l'intérieur du calcul (souvent col ou c), et calcul est l'opération à effectuer. Par exemple LAMBDA(col; SOMME(col)) additionne toutes les valeurs de chaque colonne.

Exemples pratiques pas à pas
Comment calculer le total de chaque colonne avec les fonctions BYCOL et LAMBDA
La réunion commerciale arrive et on te demande ce que chaque région a vendu sur la période, pas le détail semaine par semaine. Tes quatre régions occupent chacune une colonne, avec huit relevés empilés dessous, et tu veux le total de chaque colonne sans recopier quatre fois la même formule SOMME. La fonction BYCOL parcourt le tableau colonne par colonne et aligne les quatre totaux d'un coup, depuis une seule cellule.
- 1Dans une cellule, écris
=BYCOL(. - 2En 1er argument : sélectionne les relevés à parcourir colonne par colonne,
A2:D9. Les huit lignes de chiffres y sont, mais pas la ligne d'en-têteNordàOuest, qui porte des titres et non des ventes. Une plage limitée aux données reste juste le jour où tu remplaces la fonction SOMME par un calcul plus regardant sur le texte. - 3En 2ᵉ argument : écris le calcul à répéter sur chaque colonne et referme-le,
LAMBDA(col; SOMME(col)). Le nomcolest celui que tu donnes à la colonne en cours de lecture, et la fonction BYCOL le remplit toute seule à chaque tour avec les huit valeurs de la colonne d'un bloc. La fonction SOMME sait justement additionner ces huit valeurs en un seul chiffre, ce qu'il faut ici puisque chaque colonne ne doit rendre qu'un résultat. - 4Ferme la parenthèse de la fonction BYCOL et appuie sur Entrée. Celles des fonctions LAMBDA et SOMME ont déjà été refermées à l'étape précédente.
=BYCOL(A2:D9; LAMBDA(col; SOMME(col)))1030, 1130, 1230 et 1330) qui se déversent vers la droite depuis la cellule où tu as tapé la formule, un total par région. C'est là toute la différence avec BYROW, qui aurait rendu huit totaux empilés vers le bas, un par ligne.Comment compter le nombre de valeurs au-dessus d'un seuil dans chaque colonne avec les fonctions BYCOL et NB.SI
Les primes trimestrielles se décident cette semaine et le critère n'est pas le volume total mais la régularité : combien de mois chaque équipe a-t-elle passé la barre des 100 unités. Tes trois équipes occupent chacune une colonne, avec leurs quatre mois dessous, et un simple total masquerait justement ce que tu cherches, puisqu'un mois exceptionnel peut rattraper trois mois ratés. La fonction BYCOL applique le même comptage à chaque équipe et te rend les trois scores alignés.
- 1Dans une cellule, écris
=BYCOL(. - 2En 1er argument : sélectionne les résultats à parcourir équipe par équipe,
A2:C5. La plage couvre les quatre mois des trois équipes et s'arrête là. Les titresÉquipe AlphaàÉquipe Gammarestent en dehors, puisqu'un comptage de performance n'a rien à faire d'une ligne de noms. - 3En 2ᵉ argument : écris le comptage à répéter sur chaque colonne et referme-le,
LAMBDA(col; NB.SI(col; ">100")). Le nomcolreçoit à chaque tour les quatre mois d'une même équipe, et c'est cette colonne entière que la fonction NB.SI examine plutôt qu'une cellule isolée. Le critère">100"s'écrit entre guillemets parce qu'il colle un opérateur à un nombre, et il ne retient que les mois strictement supérieurs à100. Un mois pile à100ne serait donc pas compté, ce qu'il vaut mieux savoir avant d'annoncer les primes. - 4Ferme la parenthèse de la fonction BYCOL et appuie sur Entrée. Celles des fonctions LAMBDA et NB.SI ont déjà été refermées à l'étape précédente.
=BYCOL(A2:C5; LAMBDA(col; NB.SI(col; ">100")))100, ce qui donne 2 pour Alpha, puis 3 pour Beta et Gamma. L'intérêt se voit sur Alpha : c'est elle qui affiche le plus gros mois du tableau (125), et pourtant elle a tenu l'objectif deux fois seulement, là où Beta l'a fait trois fois sans jamais dépasser 112.Comment éviter l'erreur #DIV/0! sur une colonne vide avec les fonctions BYCOL et SIERREUR
Tu prépares le tableau de bord mensuel du réseau, et la boutique du Sud n'a pas encore ouvert : sa colonne est restée vide. Chaque boutique a son chiffre d'affaires sur trois mois dans une colonne, et tu veux la moyenne de chacune d'un seul coup, mais la fonction BYCOL doit aussi savoir quoi répondre sur cette colonne sans données plutôt que de renvoyer un code d'erreur au directeur du réseau.
- 1Dans une cellule, écris
=BYCOL(. - 2En 1er argument : sélectionne les chiffres d'affaires à parcourir boutique par boutique,
A2:C4. La colonne vide de la boutique du Sud reste dans la sélection, puisqu'une plage se prend d'un seul tenant et que la ligne d'en-tête est la seule chose à écarter. C'est justement cette colonne sans données que le calcul devra neutraliser. - 3En 2ᵉ argument : écris le calcul à répéter sur chaque colonne et referme-le,
LAMBDA(col; SIERREUR(MOYENNE(col); "Non ouverte")). Le nomcolreçoit à chaque tour les trois mois d'une même boutique, y compris quand ces trois cellules sont vides. La fonction MOYENNE n'a alors rien à diviser et renvoie#DIV/0!, que la fonction SIERREUR remplace par son texte de repli"Non ouverte". Les guillemets sont obligatoires pour qu'Excel affiche ce texte tel quel. - 4Ferme la parenthèse de la fonction BYCOL et appuie sur Entrée. Celles des fonctions LAMBDA, SIERREUR et MOYENNE ont déjà été refermées à l'étape précédente.
=BYCOL(A2:C4; LAMBDA(col; SIERREUR(MOYENNE(col); "Non ouverte")))#DIV/0!, et une seule colonne fautive suffirait à salir toute la ligne de résultats. Comme la fonction SIERREUR est imbriquée dans la fonction LAMBDA, elle intercepte l'erreur au moment précis où cette colonne est traitée et pose Non ouverte à sa place, sans toucher aux deux moyennes valides.
Les erreurs fréquentes avec la fonction BYCOL
Avec BYCOL, les ennuis viennent presque toujours de deux fronts : ce que tu mets dans la LAMBDA, et la place que le résultat réclame autour de lui. Le #CALC! et le #VALEUR! signalent une LAMBDA qui trébuche (calcul impossible sur une colonne, ou syntaxe bancale), tandis qu'une erreur de débordement veut juste dire que les cellules à droite sont occupées. Reste un classique conceptuel : croire que ta LAMBDA reçoit une valeur quand elle reçoit toute la colonne.
#CALC! : erreur dans la fonction LAMBDA
Cette erreur se produit quand la LAMBDA contient une erreur logique ou essaie d'effectuer une opération impossible sur une colonne, par exemple appliquer MOYENNE à une colonne contenant du texte.
Solution : Vérifie que ta LAMBDA peut traiter tous les types de données dans tes colonnes. Encadre avec SIERREUR si nécessaire : =BYCOL(A1:C10; LAMBDA(col; SIERREUR(MOYENNE(col); 0))).
#VALEUR! : tableau invalide ou syntaxe LAMBDA incorrecte
Se produit quand le premier argument n'est pas un tableau valide ou quand la syntaxe LAMBDA est incorrecte. La LAMBDA doit avoir exactement un paramètre (la colonne) et un calcul.
Solution : Assure-toi que ton premier argument est bien une plage rectangulaire comme A1:C10 et que ta LAMBDA suit la syntaxe LAMBDA(paramètre; calcul). Exemple correct : =BYCOL(A1:C4; LAMBDA(col; SOMME(col))).
Erreur de débordement : le résultat empiète sur des cellules occupées
BYCOL retourne un tableau horizontal. Si les cellules à droite de ta formule contiennent déjà des données, Excel affiche une erreur de débordement.
Solution : Assure-toi que les cellules à droite de ta formule sont vides. Si ton tableau source a 5 colonnes, BYCOL a besoin de 5 cellules horizontales pour afficher le résultat.
La LAMBDA reçoit une colonne entière, pas une valeur unique
Erreur conceptuelle fréquente : penser que la LAMBDA reçoit une seule valeur alors qu'elle reçoit toute la colonne comme tableau vertical. Une opération scalaire comme col*2 renverrait un tableau, pas une valeur unique.
Solution : Utilise exclusivement des fonctions d'agrégation dans ta LAMBDA : SOMME, MOYENNE, MAX, MIN, NB.SI, ECARTYPE, etc. Ces fonctions savent transformer un tableau en valeur unique.
Tableau source avec colonnes de hauteurs différentes
BYCOL nécessite un tableau rectangulaire parfait. Si tes colonnes ont des hauteurs différentes (plages non alignées), la fonction échoue.
Solution : Définis ta plage pour qu'elle couvre exactement le tableau rectangulaire, ou remplis les cellules manquantes avec des valeurs neutres (0 ou texte vide selon le contexte) avant d'appliquer BYCOL.

BYCOL vs BYROW vs MAP vs REDUCE
Le bon choix dépend du sens dans lequel tu veux résumer tes données. BYCOL replie chaque colonne en un résultat (un total par vendeur), BYROW fait pareil mais ligne par ligne. Si au contraire tu veux transformer chaque cellule sans rien agréger, c'est MAP ; et si tu veux tout faire fondre en une seule valeur finale (un produit cumulé, par exemple), c'est REDUCE. Les quatre demandent Excel 365.
| Critère | BYCOL | BYROW | MAP | REDUCE |
|---|---|---|---|---|
| Direction de traitement | Par colonne (vertical) | Par ligne (horizontal) | Cellule par cellule | Accumulation vers 1 valeur |
| Nombre de résultats | 1 par colonne | 1 par ligne | 1 par cellule (même taille) | 1 seul résultat |
| Cas d'usage typique | Total ventes par vendeur | Calcul par ligne de tableau | Transformer chaque valeur | Produit cumulé, running total |
| Disponibilité | Excel 365 uniquement | Excel 365 uniquement | Excel 365 uniquement | Excel 365 uniquement |
Questions fréquentes
BYCOL applique une fonction LAMBDA à chaque colonne d'un tableau et retourne un résultat par colonne sous forme de ligne horizontale. BYROW fait la même chose mais par ligne, retournant une colonne verticale de résultats. Si tu as un tableau de 5 colonnes et 10 lignes, BYCOL retournera 5 résultats (un par colonne) et BYROW retournera 10 résultats (un par ligne).
Utilise =BYCOL(A1:C10; LAMBDA(col; MOYENNE(col))). Cette formule applique MOYENNE à chaque colonne individuellement et retourne les moyennes en une seule ligne horizontale.
Tu peux remplacer MOYENNE par n'importe quelle fonction d'agrégation : MAX, MIN, SOMME, ECARTYPE, NB.SI, etc. La LAMBDA reçoit chaque colonne comme un tableau vertical.
Non, BYCOL nécessite un tableau rectangulaire où toutes les colonnes ont exactement la même hauteur. Pour des colonnes de tailles différentes, tu devras utiliser des formules séparées ou remplir les cellules manquantes avec des valeurs neutres. Utilise un tableau structuré (Ctrl+T) si tes données grandissent dynamiquement : BYCOL s'adapte alors automatiquement à la taille du tableau.
Oui, ta LAMBDA peut contenir n'importe quelle logique complexe. Par exemple, =BYCOL(A1:D10; LAMBDA(col; SI(MAX(col)>100; SOMME(col); MOYENNE(col)))) applique une condition différente selon le maximum de chaque colonne.
Tu peux aussi imbriquer d'autres fonctions comme SIERREUR pour gérer les erreurs, ou FILTRE pour n'agréger que certaines valeurs de la colonne.
Oui, et c'est même recommandé pour les données dynamiques. Avec un tableau structuré (Ctrl+T), tu peux référencer les colonnes par leur nom : =BYCOL(Tableau1[#Données]; LAMBDA(col; SOMME(col))). La formule s'adapte automatiquement quand le tableau s'agrandit.
Cette approche est plus robuste que les plages fixes car elle suit les insertions et suppressions de lignes sans que tu aies à modifier la formule.
Pour aller plus loin
Continue sur ta lancée après la fonction BYCOL : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



