Aller au contenu principal

Qu'est-ce que la fonction BYCOL ?

Définition
La fonction BYCOL applique une fonction LAMBDA à chaque colonne d'un tableau rectangulaire et retourne un tableau horizontal contenant un résultat par colonne. Disponible dans Excel 365 uniquement.

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.

Syntaxe

=BYCOL(tableau; lambda)

Clique sur un argument pour aller à son explication.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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.

1

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.

2

lambda

: la fonction LAMBDA à appliquer sur chaque colonne

Elle 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.

Attention : Le paramètre de ta LAMBDA représente une colonne entière (tableau vertical), pas une valeur unique. Utilise des fonctions d'agrégation comme SOMME, MOYENNE, MAX, MIN, NB.SI qui savent traiter des tableaux. Passer une opération scalaire comme col*2 renverrait une erreur.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =BYCOL(.
  2. 2
    En 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ête Nord à 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.
  3. 3
    En 2ᵉ argument : écris le calcul à répéter sur chaque colonne et referme-le, LAMBDA(col; SOMME(col)). Le nom col est 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.
  4. 4
    Ferme 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.
Au final, ta formule devrait ressembler à ça :=BYCOL(A2:D9; LAMBDA(col; SOMME(col)))
Explication
La fonction BYCOL découpe la plage en quatre colonnes et passe chacune, entière, à la fonction LAMBDA qui l'additionne. Le résultat n'est donc pas un total unique mais quatre totaux (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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =BYCOL(.
  2. 2
    En 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 Gamma restent en dehors, puisqu'un comptage de performance n'a rien à faire d'une ligne de noms.
  3. 3
    En 2ᵉ argument : écris le comptage à répéter sur chaque colonne et referme-le, LAMBDA(col; NB.SI(col; ">100")). Le nom col reç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 à 100 ne serait donc pas compté, ce qu'il vaut mieux savoir avant d'annoncer les primes.
  4. 4
    Ferme 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.
Voici la formule que tu obtiens à la fin :=BYCOL(A2:C5; LAMBDA(col; NB.SI(col; ">100")))
Explication
La fonction LAMBDA ne se contente plus d'additionner : elle filtre. La fonction NB.SI reçoit la colonne entière et ne retient que les mois passés au-dessus de 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =BYCOL(.
  2. 2
    En 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.
  3. 3
    En 2ᵉ argument : écris le calcul à répéter sur chaque colonne et referme-le, LAMBDA(col; SIERREUR(MOYENNE(col); "Non ouverte")). Le nom col reç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.
  4. 4
    Ferme 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.
Une fois les morceaux assemblés, ta formule donne ça :=BYCOL(A2:C4; LAMBDA(col; SIERREUR(MOYENNE(col); "Non ouverte")))
Explication
La fonction MOYENNE bute sur la colonne vide, puisqu'elle n'a rien à diviser, d'où l'erreur #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.
Le conseil du pro
Ta LAMBDA n'est pas limitée à une seule fonction : imbrique ce que tu veux. =BYCOL(A1:D5; LAMBDA(col; ARRONDI(MOYENNE(col); 1))) arrondit chaque moyenne à la volée, et tu peux y glisser un SI ou un SIERREUR pour un calcul conditionnel colonne par colonne.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreBYCOLBYROWMAPREDUCE
Direction de traitementPar colonne (vertical)Par ligne (horizontal)Cellule par celluleAccumulation vers 1 valeur
Nombre de résultats1 par colonne1 par ligne1 par cellule (même taille)1 seul résultat
Cas d'usage typiqueTotal ventes par vendeurCalcul par ligne de tableauTransformer chaque valeurProduit cumulé, running total
DisponibilitéExcel 365 uniquementExcel 365 uniquementExcel 365 uniquementExcel 365 uniquement
Vrai ou faux ?
« Dans BYCOL, la LAMBDA reçoit chaque cellule une par une. » Faux : elle reçoit la colonne entière, sous forme de tableau vertical. D'où l'échec d'une opération scalaire comme col*2, et la nécessité d'une fonction d'agrégation comme SOMME ou MOYENNE qui sait avaler tout un tableau.
FAQ

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).

Ressources

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