# Fonctions Excel exécutées par BERKIOS

Source : https://docs.berkios.online/reference/fonctions-excel/ · Section : Référence · Documentation officielle BERKIOS (https://docs.berkios.online)


> Fichier généré par `node scripts/functions-doc.mjs --write` depuis `src/function-registry.mjs`. Ne pas modifier à la main : un test vérifie qu'il est à jour.

Le traducteur, le moteur de calcul et le Studio partagent ce registre : **98 fonctions**, toutes traduites ET exécutées. Une fonction absente d'ici n'est jamais présentée comme exécutable.

## Mathématiques et statistiques (29)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `ABS` | `absolu` | 1 | Valeur absolue. |
| `AVERAGE` | `moyenne` | 1–n | Moyenne arithmétique. |
| `CEILING` | `plafond` | 2 | Arrondit au multiple supérieur. |
| `COUNT` | `compter` | 1–n | Nombre de cellules numériques. |
| `COUNTA` | `compter_non_vides` | 1–n | Nombre de cellules non vides. |
| `COUNTBLANK` | `compter_vide` | 1 | Nombre de cellules vides. |
| `EXP` | `exp` | 1 | e à la puissance x. |
| `FLOOR` | `plancher` | 2 | Arrondit au multiple inférieur. |
| `INT` | `partie_entiere` | 1 | Arrondit à l’entier inférieur. |
| `LARGE` | `grande_valeur` | 2 | k-ième plus grande valeur. |
| `LN` | `ln` | 1 | Logarithme népérien. |
| `LOG` | `log` | 1–2 | Logarithme en base donnée (10 par défaut). |
| `LOG10` | `log10` | 1 | Logarithme décimal. |
| `MAX` | `maximum` | 1–n | Plus grand nombre. |
| `MEDIAN` | `mediane` | 1–n | Médiane. |
| `MIN` | `minimum` | 1–n | Plus petit nombre. |
| `MOD` | `reste` | 2 | Reste de la division (signe du diviseur). |
| `PI` | `pi` | 0 | Valeur de π. |
| `POWER` | `puissance` | 2 | Puissance. |
| `PRODUCT` | `produit` | 1–n | Produit des nombres. |
| `ROUND` | `arrondir` | 2 | Arrondit au nombre de décimales donné. |
| `ROUNDDOWN` | `arrondir_inf` | 2 | Arrondit en se rapprochant de zéro. |
| `ROUNDUP` | `arrondir_sup` | 2 | Arrondit en s’éloignant de zéro. |
| `SIGN` | `signe` | 1 | Signe d’un nombre. |
| `SMALL` | `petite_valeur` | 2 | k-ième plus petite valeur. |
| `SQRT` | `racine` | 1 | Racine carrée. |
| `SUM` | `somme` | 1–n | Somme des nombres. |
| `SUMPRODUCT` | `somme_produit` | 1–n | Somme des produits de matrices de même taille. |
| `TRUNC` | `tronquer` | 1–2 | Tronque un nombre. |

## Agrégats conditionnels (9)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `AVERAGEIF` | `moyenne_si` | 2–3 | Moyenne des cellules qui répondent à un critère. |
| `AVERAGEIFS` | `moyenne_si_ens` | 3–n | Moyenne avec plusieurs critères. |
| `COUNTIF` | `compter_si` | 2 | Nombre de cellules qui répondent à un critère. |
| `COUNTIFS` | `compter_si_ens` | 2–n | Nombre de cellules avec plusieurs critères. |
| `MAXIFS` | `maximum_si_ens` | 3–n | Maximum avec critères. |
| `MINIFS` | `minimum_si_ens` | 3–n | Minimum avec critères. |
| `SUBTOTAL` | `sous_total` | 2–n | Sous-total (1-11 ou 101-111) ; ignore les autres SOUS.TOTAL imbriqués. |
| `SUMIF` | `somme_si` | 2–3 | Somme des cellules qui répondent à un critère. |
| `SUMIFS` | `somme_si_ens` | 3–n | Somme avec plusieurs critères. |

## Logique et information (18)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `AND` | `et` | 1–n | Vrai si tous les arguments sont vrais. |
| `CHOOSE` | `choisir` | 2–n | Choisit une valeur par son rang. |
| `IF` | `si` | 2–3 | Test conditionnel. |
| `IFERROR` | `si_erreur` | 2 | Valeur de remplacement en cas d’erreur. |
| `IFNA` | `si_nd` | 2 | Valeur de remplacement si #N/A. |
| `IFS` | `si_ens` | 2–n | Premier test vrai parmi plusieurs. |
| `ISBLANK` | `est_vide` | 1 | Cellule vide ? |
| `ISERR` | `est_err` | 1 | Erreur autre que #N/A ? |
| `ISERROR` | `est_erreur` | 1 | Valeur d’erreur ? |
| `ISLOGICAL` | `est_logique` | 1 | Valeur booléenne ? |
| `ISNA` | `est_nd` | 1 | Valeur #N/A ? |
| `ISNUMBER` | `est_nombre` | 1 | Valeur numérique ? |
| `ISTEXT` | `est_texte` | 1 | Valeur textuelle ? |
| `NA` | `nd` | 0 | Retourne #N/A. |
| `NOT` | `non` | 1 | Inverse un booléen. |
| `OR` | `ou` | 1–n | Vrai si au moins un argument est vrai. |
| `SWITCH` | `selon_valeur` | 3–n | Compare une valeur à une liste. |
| `XOR` | `ou_exclusif` | 1–n | OU exclusif. |

## Texte (20)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `CHAR` | `car` | 1 | Caractère du jeu ANSI Windows-1252 (1-255). |
| `CONCAT` | `concat` | 1–n | Assemble des textes et des plages. |
| `CONCATENATE` | `concatener` | 1–n | Assemble des textes. |
| `EXACT` | `identique` | 2 | Compare deux textes (sensible à la casse). |
| `FIND` | `trouver` | 2–3 | Position d’un texte (sensible à la casse). |
| `LEFT` | `gauche` | 1–2 | Premiers caractères. |
| `LEN` | `longueur` | 1 | Nombre de caractères. |
| `LOWER` | `minuscule` | 1 | Met en minuscules. |
| `MID` | `milieu` | 3 | Caractères à partir d’une position. |
| `PROPER` | `nom_propre` | 1 | Majuscule initiale de chaque mot. |
| `REPLACE` | `remplacer` | 4 | Remplace des caractères par position. |
| `REPT` | `repeter_texte` | 2 | Répète un texte. |
| `RIGHT` | `droite` | 1–2 | Derniers caractères. |
| `SEARCH` | `chercher` | 2–3 | Position d’un texte (insensible à la casse, jokers). |
| `SUBSTITUTE` | `substituer` | 3–4 | Remplace un texte (sensible à la casse). |
| `TEXT` | `texte` | 2 | Formate un nombre ou une date (sous-ensemble : 0, #, séparateurs, %, dates numériques). |
| `TEXTJOIN` | `joindre_texte` | 3–n | Assemble avec séparateur. |
| `TRIM` | `supprimer_espaces` | 1 | Supprime les espaces superflus. |
| `UPPER` | `majuscule` | 1 | Met en majuscules. |
| `VALUE` | `valeur` | 1 | Convertit un texte en nombre. |

## Recherche et référence (7)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `COLUMNS` | `colonnes` | 1 | Nombre de colonnes. |
| `HLOOKUP` | `recherche_horizontale` | 3–4 | Recherche horizontale dans la première ligne. |
| `INDEX` | `index` | 2–3 | Valeur à l’intersection d’une ligne et d’une colonne. |
| `MATCH` | `equivalent` | 2–3 | Position d’une valeur dans une plage. |
| `ROWS` | `lignes` | 1 | Nombre de lignes. |
| `VLOOKUP` | `recherche_verticale` | 3–4 | Recherche verticale dans la première colonne. |
| `XLOOKUP` | `recherche_x` | 3–6 | Recherche moderne (mode exact, approché, jokers ; sens de recherche). |

## Dates et heures (15)

| Excel | BERKIOS | Arguments | Description |
|---|---|---|---|
| `DATE` | `date` | 3 | Construit une date. |
| `DATEVALUE` | `valeur_date` | 1 | Convertit un texte ISO (AAAA-MM-JJ) en date. |
| `DAY` | `jour` | 1 | DAY d’une date. |
| `DAYS` | `jours` | 2 | Nombre de jours entre deux dates. |
| `EDATE` | `date_decalee` | 2 | Date décalée de n mois. |
| `EOMONTH` | `fin_mois` | 2 | Dernier jour du mois, décalé de n mois. |
| `HOUR` | `heure` | 1 | Heure d’une valeur de temps. |
| `MINUTE` | `minute` | 1 | Minute d’une valeur de temps. |
| `MONTH` | `mois` | 1 | MONTH d’une date. |
| `NOW` | `maintenant` | 0 | Date et heure actuelles. *(volatile)* |
| `SECOND` | `seconde` | 1 | Seconde d’une valeur de temps. |
| `TIME` | `temps` | 3 | Construit une heure. |
| `TODAY` | `aujourdhui` | 0 | Date du jour. *(volatile)* |
| `WEEKDAY` | `jour_semaine` | 1–2 | Jour de la semaine. |
| `YEAR` | `annee` | 1 | YEAR d’une date. |

## Fonctions Excel reconnues mais NON exécutables

Elles sont traduites telles quelles, la cellule passe en `needs_review` avec un diagnostic ; aucune valeur n'est inventée (la valeur calculée par Excel à l'import est conservée).

| Fonction | Raison |
|---|---|
| `CELL` | dépend du contexte Excel |
| `COLUMN` | dépend de la position de la cellule |
| `DATEDIF` | non encore implémentée |
| `FILTER` | tableaux dynamiques (déversement) |
| `HYPERLINK` | effet de bord |
| `INDIRECT` | référence construite dynamiquement (dépendances non analysables) |
| `LAMBDA` | fonctions anonymes |
| `LET` | noms locaux de formule |
| `LOOKUP` | non encore implémentée |
| `MAP` | fonctions anonymes |
| `OFFSET` | référence construite dynamiquement (dépendances non analysables) |
| `RAND` | résultat non déterministe |
| `RANDBETWEEN` | résultat non déterministe |
| `REDUCE` | fonctions anonymes |
| `ROW` | dépend de la position de la cellule |
| `SEQUENCE` | tableaux dynamiques (déversement) |
| `SORT` | tableaux dynamiques (déversement) |
| `SORTBY` | tableaux dynamiques (déversement) |
| `TEXTSPLIT` | tableaux dynamiques (déversement) |
| `UNIQUE` | tableaux dynamiques (déversement) |
| `WEBSERVICE` | accès réseau |
| `XMATCH` | non encore implémentée |

Toute autre fonction inconnue reçoit le diagnostic `FORMULA_FUNCTION_UNSUPPORTED` (`reason: unknown-function`).

## Syntaxe et sémantique

- Opérateurs : `+` `-` `*` `/` `^` `&` `=` `<>` `<` `>` `<=` `>=` `%` `unaire +/-` (priorités d'Excel : `-2^2` vaut 4).
- Références : `A1`, `$A$1`, `A1:B2`, `A:A`, `1:1`, `Feuille!A1`, `'Nom feuille'!A1:B2`, `noms définis`, `constantes matricielles {1,2;3,4}`, `[1]Feuille!A1 (classeur lié)`, `'[Livre.xlsx]Feuille'!A1:B2 (classeur lié)`.
- Valeurs d'erreur : `#NULL!` `#DIV/0!` `#VALUE!` `#REF!` `#NAME?` `#NUM!` `#N/A` — stockées dans `calculatedValue` (texte) et `calculationError`.
- Références circulaires : `FORMULA_CIRCULAR_REFERENCE` (jamais résolues par itération).
- Dépendance vers une cellule dont la fonction n'est pas exécutable : la valeur Excel importée est utilisée ; vers une cellule circulaire ou invalide : la formule dépendante est aussi `needs_review`.

## Limites connues

- pas de déversement matriciel dans une cellule
- classeurs liés : lecture seule des valeurs embarquées, sans noms définis ni références 3D externes
- système de dates 1900
- noms de mois et de jours de TEXT non pris en charge
- `TEXT` : formats numériques (`0`, `#`, `,`, `.`, `%`) et dates numériques ; séparateurs de format américains (`,` milliers, `.` décimales).
- Compatibilité vérifiée par des résultats attendus d'Excel écrits à la main (tests de conformité) et, pour les fonctions de la v0.7.168 initiale, par comparaison LibreOffice ; **pas de comparaison automatisée avec Microsoft Excel lui-même**.
