Convertir un chiffre en lettre dans Excel
Écris un nombre ou un montant en toutes lettres dans une cellule, avec les accords du français, grâce à deux fonctions gratuites à coller une fois dans ton classeur.
Ni TEXTE ni BAHTTEXT n’écrivent un nombre en toutes lettres en français, car l’une ne change que l’affichage et l’autre écrit en thaï. Dans Excel 365, une formule LET ou BAHTTEXT traduite convertit un chiffre en lettres, avec des fautes. Sur une facture, où la moindre faute se voit, notre macro VBA ajoute NOMBRE_EN_LETTRES et MONTANT_EN_LETTRES, qui écrivent juste.
Pourquoi Excel n’a aucune fonction pour écrire un chiffre en lettres
Excel n’a aucune fonction pour écrire un chiffre en lettres en français, et les deux auxquelles on pense d’abord ne donnent pas les mots attendus. TEXTE change seulement la façon dont un nombre s’affiche, sans en faire des mots, si bien que =TEXTE(B2;"0") rend « 1235 » pour 1 234,56. BAHTTEXT est bien la seule fonction qui écrive un montant en lettres, mais elle le fait en thaï et ne connaît que le baht.
Et quand bien même Excel trouverait les mots, il faudrait encore les accorder selon les règles du français. Les formules sans macro les manquent d’ailleurs en partie, comme le montre plus bas la partie qui leur est consacrée. Le tableau ci-dessous résume chacune de ces règles sur un exemple, et NOMBRE_EN_LETTRES comme MONTANT_EN_LETTRES les appliquent toutes, dans l’orthographe traditionnelle.
| Règle | Exemple |
|---|---|
| « vingt » et « cent » prennent un s quand ils sont multipliés et que rien ne les suit | 80 donne « quatre-vingts » et 200 « deux cents », mais 20 reste « vingt » et 100 « cent » |
| Ils le perdent devant un autre nombre et devant mille | 201 donne « deux cent un », et 1 080 000 « un million quatre-vingt mille » |
| « mille » ne prend jamais de s | 21 000 donne « vingt et un mille » |
| « million » et « milliard » prennent un s au pluriel, et « vingt » et « cent » gardent le leur devant eux | 80 000 000 donne « quatre-vingts millions » |
| « et » ne s’écrit que devant un et onze, de vingt et un à soixante et onze | 71 donne « soixante et onze », et 81 « quatre-vingt-un » |
| Un compte rond de millions se lie à la devise par « de » | 2 000 000 € donne « deux millions d’euros » |
Convertir un nombre en lettres avec une macro VBA
Pour convertir un nombre en lettres, notre macro VBA ajoute à Excel une fonction personnalisée, NOMBRE_EN_LETTRES. Elle renvoie le nombre d’une cellule écrit en toutes lettres, jusqu’aux milliards et décimales comprises. Le même code apporte MONTANT_EN_LETTRES, sa voisine pour les montants, si bien qu’une seule installation te donne les deux fonctions.
Dans l’exemple, la colonne B porte les montants de sept factures, numérotées de F-101 à F-107. Pour le même 1 234,56, =NOMBRE_EN_LETTRES(B2) écrit en C2 « mille deux cent trente-quatre virgule cinquante-six », alors que =MONTANT_EN_LETTRES(B2) écrit en D2 « mille deux cent trente-quatre euros et cinquante-six centimes ».
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Facture | Montant | Nombre en lettres | Montant en lettres |
| 2 | F-101 | 1234,56 | mille deux cent trente-quatre virgule cinquante-six | mille deux cent trente-quatre euros et cinquante-six centimes |
| 3 | F-102 | 80 | quatre-vingts | quatre-vingts euros |
| 4 | F-103 | 71,1 | soixante et onze virgule un | soixante et onze euros et dix centimes |
| 5 | F-104 | 200 | deux cents | deux cents euros |
| 6 | F-105 | 1080000 | un million quatre-vingt mille | un million quatre-vingt mille euros |
| 7 | F-106 | 2000000 | deux millions | deux millions d'euros |
| 8 | F-107 | 1 | un | un euro |
Installer la macro qui écrit les chiffres en lettres
Ouvre l’éditeur VBA (Alt+F11 sous Windows), insère un module neuf et colles-y tout le code, qui porte les deux fonctions et les routines qu’elles partagent. Écris ensuite la formule dans une cellule, puis enregistre le classeur au format « Classeur Excel (prenant en charge les macros) ».
Écrire un nombre en toutes lettres avec NOMBRE_EN_LETTRES
Une fois le code collé, NOMBRE_EN_LETTRES s’écrit comme n’importe quelle fonction d’Excel, avec entre parenthèses la cellule du nombre à écrire. Un second argument, facultatif, règle le nombre de décimales lues, et le tableau placé sous la formule détaille ces deux arguments.
=NOMBRE_EN_LETTRES(B2)Écrit le nombre de B2 en toutes lettres, soit « mille deux cent trente-quatre virgule cinquante-six » pour 1 234,56.
| Argument | Ce qu’il contient |
|---|---|
| nombre | Le nombre à écrire, ou la cellule qui le porte, jusqu’à 999 999 999 999. Un nombre négatif commence par « moins ». |
| decimales | Facultatif. Le nombre de chiffres à lire après la virgule, de 0 à 9, décrit dans la partie suivante. |
Après le mot « virgule », les décimales se lisent comme un nombre entier, zéros de tête compris, si bien que 12,01 donne « douze virgule zéro un » et 0,05 « zéro virgule zéro cinq ».
Sans second argument, la fonction lit les décimales du nombre, jusqu’à neuf, mais ne dit pas les zéros de fin, d’où « soixante et onze virgule un » pour 71,10.
Un nombre négatif commence par « moins », et -12,5 donne ainsi « moins douze virgule cinq ».
Un texte qui n’est pas un nombre, VRAI, FAUX ou une date donnent #VALEUR!, alors qu’un nombre saisi comme texte se lit normalement et qu’une cellule vide laisse le résultat vide.
Au-delà de 999 999 999 999, la fonction renvoie #NOMBRE!, puisqu’elle s’arrête aux milliards.
Arrondir à deux décimales ou à l’unité
Pour arrondir avant d’écrire, donne à la fonction un second argument, qui fixe combien de décimales elle lit et arrondit à ce rang comme le fait ARRONDI. Tu en as besoin dès qu’un calcul laisse une longue suite de chiffres derrière la virgule. Sans lui, =NOMBRE_EN_LETTRES(1/3) lit neuf décimales et écrit « zéro virgule trois cent trente-trois millions trois cent trente-trois mille trois cent trente-trois ». Avec un second argument de 2, =NOMBRE_EN_LETTRES(1/3;2) s’arrête bien plus tôt, à « zéro virgule trente-trois ».
=NOMBRE_EN_LETTRES(B4;2)Lit toujours deux décimales, soit « soixante et onze virgule dix » pour 71,10.
Avec 0, la fonction arrondit à l’unité avant d’écrire, si bien que =NOMBRE_EN_LETTRES(B2;0) donne « mille deux cent trente-cinq » pour 1 234,56. Un second argument négatif ou supérieur à neuf renvoie en revanche #NOMBRE!, puisque la fonction ne lit que de zéro à neuf décimales.
Comment écrire un montant en toutes lettres dans Excel
Pour écrire un montant en toutes lettres, prends MONTANT_EN_LETTRES plutôt que NOMBRE_EN_LETTRES, car un montant ne se lit pas comme un nombre. Sur la facture de 71,10, on écrit « soixante et onze euros et dix centimes », là où NOMBRE_EN_LETTRES écrit « soixante et onze virgule un ». MONTANT_EN_LETTRES écrit donc la partie entière suivie de la devise, puis les centimes, après un arrondi au centime identique à celui d’ARRONDI. Elle met aussi la devise au pluriel dès deux, et relie un compte rond de millions à la devise par « de », comme dans « deux millions d’euros ».
=MONTANT_EN_LETTRES(B2)Écrit « mille deux cent trente-quatre euros et cinquante-six centimes » pour 1 234,56.
Un euro reste au singulier, et 1,50 donne « un euro et cinquante centimes ».
Un montant inférieur à un euro s’écrit en centimes seuls, comme sur un chèque, si bien que 0,50 donne « cinquante centimes » et 0,01 « un centime ».
Les centimes s’arrondissent comme ARRONDI, si bien que 0,285 donne « vingt-neuf centimes ».
Le « d’ » de « d’euros » ne vient qu’après un compte rond de millions ou de milliards, si bien que 1 500 000 donne « un million cinq cent mille euros ».
VRAI, FAUX et un texte qui n’est pas un nombre donnent #VALEUR!, alors qu’une cellule vide laisse le résultat vide et qu’un montant nul s’écrit « zéro euro ».
Changer la devise du montant en lettres
Si tu factures en dinars, en dirhams ou en dollars, les deux arguments facultatifs de MONTANT_EN_LETTRES remplacent « euro » et « centime » par ta devise et sa sous-unité. Écris-les au singulier, puisque la fonction ajoute seule le s du pluriel. Elle choisit aussi entre « de » et « d’ » selon la première lettre de la devise, d’où « deux millions de dinars » mais « un million d’euros ».
=MONTANT_EN_LETTRES(B2;"dinar";"centime")Écrit « mille deux cent trente-quatre dinars et cinquante-six centimes ».
=MONTANT_EN_LETTRES(B2;"dollar";"cent") écrit « mille deux cent trente-quatre dollars et cinquante-six cents ».
Comme le s s’ajoute à la fin du texte, une devise de deux mots se trompe, et « franc CFA » devient « franc CFAs ».
La sous-unité vaut toujours un centième, ce qui convient au dinar algérien et au dirham, mais pas au dinar tunisien, qui se divise en mille millimes.
Rédiger la mention en lettres d’une facture ou d’un chèque
Sur une facture, le total en lettres tient souvent dans une phrase toute faite, que la formule assemble autour de MONTANT_EN_LETTRES avec l’opérateur &. MAJUSCULE met ensuite le texte en capitales, pour une facture ou un chèque qui les demande.
="Arrêtée la présente facture à la somme de "&MONTANT_EN_LETTRES(B2)&"."Écrit « Arrêtée la présente facture à la somme de mille deux cent trente-quatre euros et cinquante-six centimes. »
=MAJUSCULE(MONTANT_EN_LETTRES(B3))Écrit « QUATRE-VINGTS EUROS » pour 80.
Tu peux recopier =MONTANT_EN_LETTRES(B2) jusqu’en bas d’une colonne de factures dont certaines lignes attendent encore leur montant, sans que rien ne s’écrive sur ces lignes. La fonction laisse en effet son résultat vide tant que la cellule du montant est vide, alors qu’un montant de zéro saisi dans la colonne s’écrit « zéro euro ».
Convertir un chiffre en lettre sans macro
Pour convertir un chiffre en lettre sans macro, deux formules existent, une longue formule LET qui assemble elle-même les mots, et BAHTTEXT traduite en français par TRADUIRE. Toutes deux t’évitent de coller du code et d’activer les macros, mais aucune n’écrit juste tous les montants de l’exemple. La première se trompe de mots et d’accords, et la seconde garde la monnaie thaïe. Pour un chiffre isolé que tu relis et corriges à la main, elles dépannent donc, alors qu’une facture demande une fonction qui écrit juste.
Assembler le chiffre en lettres avec une formule LET
La formule LET publiée par le site Excel Exercice pour Excel 365 assemble elle-même le chiffre en lettres, sans macro ni service en ligne. Elle découpe le nombre en groupes de trois chiffres, puis va chercher le nom de chaque chiffre dans des listes écrites dans la formule. Longue d’une quinzaine de lignes, elle lit le nombre de la cellule A1, qu’il faut remplacer par la tienne, et ajoute d’office « Euro » et « Centimes ». Sur les montants de l’exemple, elle se calcule sans erreur, mais le texte qu’elle rend s’écarte souvent de l’orthographe.
| Montant | Formule LET | MONTANT_EN_LETTRES |
|---|---|---|
| 1 234,56 | Mille Deux Cent Trente Quatre Euro Cinquante Six Centimes | mille deux cent trente-quatre euros et cinquante-six centimes |
| 80 | Quatre-Vingt Euro | quatre-vingts euros |
| 71,10 | Soixante Onze Euro Dix Centimes | soixante et onze euros et dix centimes |
| 200 | Deux Cent Faux Euro | deux cents euros |
| 21 000 | Vingt Mille | vingt et un mille euros |
| 2 000 000 | Deux Million | deux millions d’euros |
Regarde d’abord la ligne de 200, où le mot « Faux » suit la centaine, comme il suit chaque centaine ronde, 100 000 compris. Le « un » disparaît aussi devant mille, dans 21 000 comme dans 101 319, et un compte rond de milliers ou de millions perd le mot Euro. La formule ne met de s ni à Euro, ni à vingt, ni à cent, ni à million. Elle oublie encore le « et » de soixante et onze et les traits d’union de trente-quatre, tout en mettant une majuscule à chaque mot. Enfin, elle s’arrête à neuf chiffres avant la virgule, si bien que 1 234 567 890 devient « Cent Vingt Trois Million… ».
Traduire BAHTTEXT en français avec TRADUIRE, dans Microsoft 365
La formule ci-dessous laisse d’abord BAHTTEXT écrire le montant en thaï, puis demande au service de traduction de Microsoft de le passer du thaï, « th », au français, « fr ». D’après l’aide de Microsoft, TRADUIRE s’applique à Excel pour Microsoft 365, à Excel pour Microsoft 365 pour Mac et à Excel Mobile. Elle s’appuie sur les services de traduction de Microsoft, dont, selon la même aide, « les langues prises en charge et les résultats peuvent varier ». Si tu préfères voir la méthode appliquée avant de l’écrire, nous la montrons pas à pas dans une vidéo sur Facebook.
=TRADUIRE(BAHTTEXT(B2);"th";"fr")Écrit « Mille deux cent trente-quatre bahts cinquante-six satangs » pour 1 234,56.
| Montant | Traduction de BAHTTEXT | MONTANT_EN_LETTRES |
|---|---|---|
| 1 234,56 | Mille deux cent trente-quatre bahts cinquante-six satangs | mille deux cent trente-quatre euros et cinquante-six centimes |
| 80 | Quatre-vingts bahts | quatre-vingts euros |
| 71,10 | Soixante-onze bahts et dix cents. | soixante et onze euros et dix centimes |
| 1 080 000 | Un million quatre-vingts mille bahts. | un million quatre-vingt mille euros |
| 2 000 000 | Deux millions de bahts | deux millions d’euros |
Ligne par ligne, la traduction oublie le « et » de soixante et onze, garde le s de quatre-vingts devant mille et change les satangs en cents. Elle ajoute même un point final, mais sur deux de ces cinq lignes seulement. Quant à la variante =SUBSTITUE(TRADUIRE(BAHTTEXT(B2);"th";"fr");" bat";""), qu’on trouve en ligne, elle rend exactement le même texte, puisque la traduction écrit « bahts » et jamais « bat ». Et retirer le nom de la monnaie laisserait de toute façon les fautes d’accord, que seule une relecture rattrape.
Quelle méthode choisir, avec ou sans macro
| Méthode | Où elle marche | Accords du français | Devise | Sans code VBA |
|---|---|---|---|---|
| Formule LET | Excel 365, d’après son auteur | Des fautes, comme « Deux Cent Faux Euro » | Euro, sans s | Oui |
| TRADUIRE sur BAHTTEXT | Excel pour Microsoft 365, sur Windows et Mac, et Excel Mobile | Des fautes, comme « Soixante-onze » | Bahts et satangs | Oui |
| NOMBRE_EN_LETTRES | Un classeur enregistré avec ses macros | Justes | Aucune, le nombre seul | Non |
| MONTANT_EN_LETTRES | Un classeur enregistré avec ses macros | Justes | Euro par défaut, ou celle de ton choix | Non |
Tout dépend de ce que deviendra le texte, relu et corrigé à la main ou posé sur une facture. Entre les deux formules, la formule LET ne dépend d’aucun service en ligne, alors que la traduction accorde mieux les montants de l’exemple mais garde les bahts. Pour une facture, un devis ou un chèque, où la moindre faute se voit, les deux fonctions de la page écrivent juste et se recopient sur toute une colonne. En échange, le classeur doit être enregistré avec ses macros, faute de quoi elles renvoient #NOM?.
Quand la conversion d’un chiffre en lettre ne donne pas le bon texte
#NOM? s’affiche quand Excel ne trouve pas la fonction, soit parce que les macros sont désactivées, soit parce que le classeur a été enregistré en « Classeur Excel ». Dans le premier cas, notre guide pour activer les macros sur Excel explique comment les autoriser, alors que dans le second, ce format sans macros a supprimé le code.
Si #NOM? s’affiche alors que les macros sont actives, le code a sans doute été collé dans le module d’une feuille ou dans ThisWorkbook, où Excel ne trouve pas la fonction. Colle-le plutôt dans un module neuf, que tu crées par Insertion puis Module.
#VALEUR! apparaît quand la cellule contient un texte qui n’est pas un nombre, VRAI, FAUX ou une date, ou quand la formule vise plusieurs cellules au lieu d’une.
#NOMBRE! apparaît quand le nombre dépasse 999 999 999 999, ou quand le second argument de NOMBRE_EN_LETTRES sort de l’intervalle de 0 à 9.
Les accords ne suivent pas les rectifications de 1990, puisque les deux fonctions écrivent en orthographe traditionnelle, « deux cent trente-quatre », sans les traits d’union partout que proposent les rectifications (« deux-cent-trente-quatre »).
Septante et nonante n’apparaissent jamais, car les fonctions écrivent le français de France, « soixante-dix » et « quatre-vingt-dix », sans les formes de Belgique ni celles de Suisse.
Tu as peut-être encore une question
Pour écrire automatiquement un chiffre en lettre, colle une fois le code de cette page dans un module neuf du classeur, puis écris =NOMBRE_EN_LETTRES(B2) à côté du premier nombre et recopie la formule jusqu’en bas de la colonne, pour que chaque ligne reçoive son nombre en toutes lettres. Pour un montant, =MONTANT_EN_LETTRES(B2) se recopie de la même façon, et une ligne dont le montant n’est pas encore saisi reste vide.
Pour écrire un montant en dinars ou en dirhams, donne la devise et sa sous-unité en deuxième et troisième arguments de MONTANT_EN_LETTRES, au singulier puisque la fonction ajoute seule le s du pluriel, comme dans =MONTANT_EN_LETTRES(B2;"dinar";"centime"), qui renvoie « mille deux cent trente-quatre dinars et cinquante-six centimes ». La sous-unité vaut toujours un centième, ce qui écarte le dinar tunisien et ses mille millimes.
Pour obtenir la macro sans complément à installer, le bouton « Télécharger la macro VBA » de cette page donne un fichier à importer dans l’éditeur VBA, qui porte en un seul module les deux fonctions NOMBRE_EN_LETTRES et MONTANT_EN_LETTRES ainsi que les routines qu’elles partagent. Si tu préfères coller le code, le bouton « Copier le code » donne le même contenu, à placer dans un module neuf.
ConvNumberLetter et SpellNumber ne sont pas des fonctions d’Excel, puisque la première vient du complément NbLettre et la seconde d’un code VBA publié par Microsoft dans son aide, si bien qu’elles n’existent dans un classeur que si ce complément ou ce code y est chargé, faute de quoi Excel renvoie #NOM?. SpellNumber écrit d’ailleurs en anglais, en dollars et en cents, et NOMBRE_EN_LETTRES renvoie le même #NOM? dans un classeur enregistré sans ses macros.
Pour aller plus loin
Tout ce dont tu as besoin pour faire tourner tes macros et progresser sur Excel se trouve ici.

Télécharge notre cours Excel complet en PDF
Télécharger
Ton cours Excel gratuit
3 chapitres pour apprendre les bases et découvrir l'automatisation.
Voir le cours
Entraîne-toi sur nos 63 exercices corrigés
S’entraîner
Les macros Excel et le VBA expliqués simplement
Lire le guide
Activer les macros quand Excel les bloque
Voir comment