Applications

Comment convertir des nombres en lettres dans Excel : la meilleure formule

En bref :

  • Excel n’a aucune fonction intégrée pour écrire un nombre en toutes lettres en français (la fonction BAHTTEXT ne fonctionne qu’en thaï).
  • La solution la plus fiable est une fonction personnalisée VBA à coller une fois dans le classeur : ensuite, =EnLettres(A2) renvoie « mille deux cent trente-quatre ».
  • Pour un montant, =EnEuros(A2) donne « cent vingt euros et cinquante centimes ».
  • Enregistrez le classeur au format .xlsm pour conserver la fonction.

Écrire un montant en toutes lettres est indispensable sur un chèque, un devis, une facture ou une reconnaissance de dette : c’est la mention en lettres qui fait foi en cas de doute. Dans Excel, aucun format de cellule ni aucune fonction native ne fait cette conversion en français. Il faut donc ajouter une petite fonction. Voici une version prête à l’emploi, qui respecte l’orthographe française (accords de « cent » et « vingt », « et un », traits d’union).

Pourquoi convertir des nombres en lettres dans Excel ?

  • Pour faciliter la lecture des chiffres : un grand nombre écrit en lettres évite les confusions de zéros et de séparateurs.
  • Pour les sommes d’argent : factures, quittances de loyer, reçus et chèques mentionnent le montant en lettres.
  • Pour automatiser : avec une formule, la mention se met à jour dès que le montant change, sans risque de faute de frappe.

Les solutions possibles

Méthode Avantages Limites
Fonction VBA personnalisée Gratuite, hors ligne, résultat exact en français Fichier .xlsm, macros à autoriser ; Excel pour Windows et Mac
Complément tiers téléchargé Installation en un clic Source à vérifier, macros d’origine inconnue
Formule géante sans VBA Pas de macro Illisible, difficile à corriger
LibreOffice Calc Format [NatNum12] qui écrit les nombres en lettres Autre logiciel
Excel pour le web Accessible partout N’exécute pas le VBA

Étape 1 : ajouter la fonction VBA

  1. Ouvrez votre classeur et appuyez sur Alt + F11 pour lancer l’éditeur Visual Basic.
  2. Menu Insertion > Module.
  3. Collez le code ci-dessous dans la fenêtre blanche.
  4. Fermez l’éditeur, puis Fichier > Enregistrer sous et choisissez Classeur Excel (prenant en charge les macros) (*.xlsm).
Function Moins100(ByVal n As Long, ByVal fin As Boolean) As String
  Dim u, d, t As Long, r As Long
  u = Array("zéro","un","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf")
  d = Array("","dix","vingt","trente","quarante","cinquante","soixante","soixante","quatre-vingt","quatre-vingt")
  If n < 20 Then Moins100 = u(n): Exit Function
  t = n  10: r = n Mod 10
  If t = 7 Or t = 9 Then
    If t = 7 And r = 1 Then Moins100 = "soixante et onze" Else Moins100 = d(t) & "-" & u(10 + r)
  ElseIf r = 0 Then
    Moins100 = d(t): If t = 8 And fin Then Moins100 = "quatre-vingts"
  ElseIf r = 1 And t < 8 Then
    Moins100 = d(t) & " et un"
  Else
    Moins100 = d(t) & "-" & u(r)
  End If
End Function

Function Moins1000(ByVal n As Long, ByVal fin As Boolean) As String
  Dim c As Long, r As Long, s As String
  c = n  100: r = n Mod 100
  If c = 1 Then s = "cent"
  If c > 1 Then s = Moins100(c, False) & " cent"
  If c > 1 And r = 0 And fin Then s = s & "s"
  If r > 0 Then s = Trim(s & " " & Moins100(r, fin))
  Moins1000 = s
End Function

Function EnLettres(ByVal x As Double) As String
  Dim n As Long, m As Long, k As Long, r As Long, s As String
  n = Fix(x): If n = 0 Then EnLettres = "zéro": Exit Function
  m = n  1000000: k = (n Mod 1000000)  1000: r = n Mod 1000
  If m > 0 Then s = Moins1000(m, True) & IIf(m > 1, " millions", " million")
  If k = 1 Then s = s & " mille"
  If k > 1 Then s = s & " " & Moins1000(k, False) & " mille"
  If r > 0 Then s = s & " " & Moins1000(r, True)
  EnLettres = Trim(s)
End Function

Function EnEuros(ByVal x As Double) As String
  Dim e As Long, c As Long
  e = Fix(x): c = Round((x - e) * 100, 0)
  EnEuros = EnLettres(e) & IIf(e > 1, " euros", " euro")
  If c > 0 Then EnEuros = EnEuros & " et " & EnLettres(c) & IIf(c > 1, " centimes", " centime")
End Function

Étape 2 : utiliser la formule

Dans n’importe quelle cellule, tapez =EnLettres(A2) pour un nombre entier ou =EnEuros(A2) pour un montant. Quelques résultats :

Valeur en A2 Formule Résultat
71 =EnLettres(A2) soixante et onze
80 000 =EnLettres(A2) quatre-vingt mille
200 =EnLettres(A2) deux cents
1 234 =EnLettres(A2) mille deux cent trente-quatre
120,50 =EnEuros(A2) cent vingt euros et cinquante centimes

Pour mettre une majuscule au début, entourez la formule : =MAJUSCULE(GAUCHE(EnEuros(A2);1))&STXT(EnEuros(A2);2;300). La fonction accepte les nombres jusqu’à 2 147 483 647.

Erreurs fréquentes

  • #NOM? : le code n’est pas dans un module du classeur, ou les macros sont désactivées. Cliquez sur Activer le contenu dans le bandeau jaune ; si le fichier vient d’Internet, faites un clic droit sur le fichier > Propriétés > cochez Débloquer.
  • La fonction disparaît à la réouverture : le fichier a été enregistré en .xlsx au lieu de .xlsm.
  • Message d’erreur VBA à l’exécution : voyez l’erreur « L’exécution du code a été interrompue ».
  • Orthographe réformée : la réforme de 1990 autorise les traits d’union partout (« deux-cent-trente-quatre »). Remplacez les espaces par des tirets dans le code si vous préférez cette graphie.

Cas pratique : une facture qui écrit son total en lettres

Claire, artisane, prépare ses factures dans Excel. Son total TTC est en F30. Elle colle le code VBA une seule fois dans son modèle, l’enregistre en .xlsm et ajoute sous le total : ="Arrêtée la présente facture à la somme de "&EnEuros(F30). Pour 1 480,20 €, la cellule affiche « mille quatre cent quatre-vingts euros et vingt centimes ». Combinée à la numérotation automatique des factures, chaque nouvelle facture se remplit sans retouche.

À lire aussi : créer un formulaire de saisie dans Excel, gérer le mot de passe des macros VBA, les fonctions logiques d’Excel et convertir un fichier de macros Excel pour OpenOffice.

Questions fréquentes

Existe-t-il une fonction Excel pour écrire un nombre en lettres ?

Non, pas en français. La seule fonction native de ce type, BAHTTEXT, écrit les nombres en thaï. Il faut une fonction VBA ou un complément.

Comment convertir un montant en lettres pour un chèque ?

Utilisez =EnEuros(A2) : la fonction ajoute « euros » et les centimes. Vérifiez toujours le résultat avant de recopier la mention sur le chèque.

La formule fonctionne-t-elle sur Mac ?

Oui, Excel pour Mac exécute le VBA ; l’éditeur s’ouvre avec Option + F11 ou par l’onglet Développeur.

Peut-on convertir des nombres en lettres sans macro ?

Avec Excel, seulement au prix d’une formule énorme. LibreOffice Calc le fait nativement avec le format de nombre [NatNum12].

Comment utiliser la fonction dans tous mes classeurs ?

Collez le code dans le classeur de macros personnelles (PERSONAL.XLSB) et appelez =PERSONAL.XLSB!EnLettres(A2), ou enregistrez le classeur comme complément (.xlam).

Faut-il écrire « quatre-vingt » ou « quatre-vingts » ?

« Quatre-vingts » prend un s quand il termine le nombre, mais pas devant « mille » ni suivi d’un autre nombre : la fonction applique cette règle, comme pour « cent ».

Articles Similaires

Bouton retour en haut de la page