Convertir un nombre en lettres dans Excel
Vous avez besoin d’afficher des montants en toutes lettres dans Excel, comme sur une facture ou un devis ?
Malheureusement, Excel ne propose pas de fonction intégrée pour convertir un chiffre en lettres… sauf pour le thaï avec BAHTTEXT().
Mais pas de panique 😄 !
Dans ce tutoriel, nous allons voir comment créer facilement votre propre fonction VBA pour convertir un nombre en lettres en français.
⚙️ Étape 1: Ouvrir l’éditeur VBA
- Ouvrez votre fichier Excel.
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Cliquez sur Insertion → Module.
- Une nouvelle fenêtre vide s’ouvre: c’est ici que vous allez coller le code.
💻 Étape 2: Coller le code VBA
Copiez-collez le code ci-dessous dans le module :
Option Explicit
Function NumEnLettre(ByVal MyNumber)
Dim Units As Variant, Tens As Variant
Dim Result As String
Dim NumberValue As Double
Dim DecimalPart As String
Units = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", _
"dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
Tens = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt")
NumberValue = Int(MyNumber)
If NumberValue = 0 Then
Result = "zéro"
Else
Result = ConvertNumberToWords(NumberValue)
End If
DecimalPart = Format(MyNumber - Int(MyNumber), "0.00")
DecimalPart = Right(DecimalPart, 2)
If DecimalPart <> "00" Then
Result = Result & " et " & DecimalPart & "/100"
End If
NumEnLettre = Result
End Function
Function ConvertNumberToWords(ByVal Number As Long) As String
Dim Units As Variant, Tens As Variant
Dim Result As String
Dim ten As Long, unit As Long
Dim hundreds As Long, remainder As Long
Dim thousands As Long
Units = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", _
"dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf")
Tens = Array("", "", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante", "quatre-vingt", "quatre-vingt")
If Number < 17 Then
Result = Units(Number)
ElseIf Number < 20 Then
Result = "dix-" & Units(Number - 10)
ElseIf Number < 100 Then
ten = Int(Number / 10)
unit = Number Mod 10
If ten = 7 Or ten = 9 Then
Result = Tens(ten) & "-" & Units(10 + unit)
Else
Result = Tens(ten)
If unit > 0 Then
Result = Result & "-" & Units(unit)
End If
End If
ElseIf Number < 1000 Then
hundreds = Int(Number / 100)
remainder = Number Mod 100
If hundreds = 1 Then
Result = "cent"
Else
Result = Units(hundreds) & " cent"
End If
If remainder > 0 Then
Result = Result & " " & ConvertNumberToWords(remainder)
End If
ElseIf Number < 1000000 Then
thousands = Int(Number / 1000)
remainder = Number Mod 1000
If thousands = 1 Then
Result = "mille"
Else
Result = ConvertNumberToWords(thousands) & " mille"
End If
If remainder > 0 Then
Result = Result & " " & ConvertNumberToWords(remainder)
End If
Else
Result = "Nombre trop grand"
End If
ConvertNumberToWords = Result
End Function
📊 Étape 3: Utiliser la fonction dans Excel
Revenez dans votre feuille Excel (Alt + Q pour fermer VBA). Dans une cellule, tapez:
=NombreEnLettre(A1)
Si la cellule A1 contient 123, le résultat affichera: cent vingt-trois
🚀 Conclusion
Et voilà ! En quelques lignes de VBA, vous venez d’ajouter à Excel une fonction que même Microsoft n’a jamais intégrée 😎.

