Aller au contenu principal
Accueil AngleFormation - Experts IA et Automatisation
Automatiser Votre Croissance
Tech-Cloud

Convertir un montant en lettres sur Excel avec VBA : formule en français

2026-10-11 Par Jallal Tahiri
Illustration : Convertir un montant en lettres sur Excel avec VBA : formule en français

Convertir un montant en lettres sur Excel avec VBA : formule en français

Vous préparez des factures, devis ou reçus dans Excel et devez saisir un total en toutes lettres ? Cette opération devient vite répétitive et peut entraîner des erreurs de saisie. Excel ne propose pas de fonction standard intégrée dédiée à la conversion des montants en français, mais une fonction personnalisée VBA permet de l'automatiser.

Dans ce tutoriel AngleFormation, vous allez installer la fonction AngleFormation, puis utiliser la formule =AngleFormation(A1) pour transformer un montant en euros et centimes en texte français, sans le ressaisir manuellement.

💡 En résumé (TL;DR) — Dans Excel pour ordinateur, appuyez sur Alt + F11, insérez un module VBA, collez le code ci-dessous et retournez sur votre feuille. Si A1 contient un montant, saisissez =AngleFormation(A1) dans une autre cellule. Enregistrez le classeur au format .xlsm et autorisez les macros uniquement si vous faites confiance au fichier. Le code fourni vise les montants positifs jusqu'à 999 999,99 € ; certaines limites sont détaillées plus bas.

🎬 Le tutoriel pas à pas en vidéo

Le tutoriel vidéo AngleFormation montre comment ajouter la fonction à votre classeur et l'utiliser pour afficher un montant en toutes lettres. La démonstration annoncée dure moins de six minutes.

💻 La solution : une fonction Excel personnalisée

La fonction VBA AngleFormation reçoit un montant numérique et renvoie un texte contenant les euros et, lorsqu'ils existent, les centimes. Elle peut être utilisée dans les cellules du classeur où son code a été installé.

Par exemple, si A1 contient 125,50, la formule affiche :

Cent Vingt-Cinq Euros et Cinquante Centimes

⚙️ Comment convertir un montant en lettres dans Excel ?

1. Ouvrir l'éditeur VBA

Ouvrez votre classeur avec Excel pour ordinateur, puis utilisez le raccourci Alt + F11 pour afficher l'éditeur Visual Basic. Vous pouvez également utiliser l'onglet Développeur, puis Visual Basic, si cet onglet est disponible.

2. Ajouter un module standard

Dans l'éditeur VBA, sélectionnez le projet correspondant à votre classeur. Cliquez sur Insertion → Module. Une fenêtre de code vide s'ouvre.

3. Coller le code VBA AngleFormation

Copiez l'intégralité du code ci-dessous, depuis Option Explicit jusqu'au dernier End Function, puis collez-le dans le module. Ne le collez pas directement dans une cellule Excel.

4. Utiliser la formule et enregistrer le fichier

Revenez à votre feuille Excel. Dans une cellule vide, saisissez :

=AngleFormation(A1)

Remplacez A1 par la référence de la cellule contenant votre montant. La valeur en lettres se met à jour lorsque Excel recalcule la formule après une modification du montant.

Enregistrez le fichier au format Classeur Excel prenant en charge les macros (.xlsm) pour conserver le code VBA. Un fichier .xlsx ne conserve pas ce module.

💻 Code VBA à copier-coller — version originale non modifiée

Le script fourni pour ce tutoriel est reproduit sans modification. Les noms de fonctions, commentaires, instructions et calculs sont conservés à l'identique.

Option Explicit

' Fonction principale à appeler dans votre feuille Excel
Function AngleFormation(ByVal Montant As Currency) As String
    Dim Partie_Entiere As Long
    Dim Partie_Decimale As Long
    Dim Resultat As String
    
    ' Séparation stricte pour éviter les bugs de virgule flottante
    Partie_Entiere = Fix(Montant)
    Partie_Decimale = Round((Montant - Partie_Entiere) * 100, 0)
    
    Dim Unite As Variant
    Unite = Array("", "Un", "Deux", "Trois", "Quatre", "Cinq", "Six", "Sept", "Huit", "Neuf", _
                  "Dix", "Onze", "Douze", "Treize", "Quatorze", "Quinze", "Seize", "Dix-sept", "Dix-huit", "Dix-neuf")
    
    Dim Dizaine As Variant
    Dizaine = Array("", "", "Vingt", "Trente", "Quarante", "Cinquante", "Soixante", "Soixante", "Quatre-vingt", "Quatre-vingt")
    
    If Partie_Entiere = 0 Then
        Resultat = "Zéro Euro"
    Else
        Resultat = ConvertirNombre(Partie_Entiere, Unite, Dizaine)
        Resultat = Resultat & " Euro" & IIf(Partie_Entiere > 1, "s", "")
    End If
    
    If Partie_Decimale > 0 Then
        Resultat = Resultat & " et " & ConvertirGroupe999(Partie_Decimale, Unite, Dizaine)
        Resultat = Resultat & " Centime" & IIf(Partie_Decimale > 1, "s", "")
    End If
    
    AngleFormation = Resultat
End Function

Private Function ConvertirNombre(ByVal Nombre As Long, Unite As Variant, Dizaine As Variant) As String
    Dim Mille As Long, ResteMille As Long
    Dim Resultat As String
    
    Mille = Nombre \ 1000
    ResteMille = Nombre Mod 1000
    
    If Mille > 0 Then
        If Mille = 1 Then
            Resultat = "Mille "
        Else
            Resultat = ConvertirGroupe999(Mille, Unite, Dizaine) & " Mille "
        End If
    End If
    
    If ResteMille > 0 Then
        Resultat = Resultat & ConvertirGroupe999(ResteMille, Unite, Dizaine)
    End If
    
    ConvertirNombre = Trim(Resultat)
End Function

Private Function ConvertirGroupe999(ByVal Nombre As Long, Unite As Variant, Dizaine As Variant) As String
    Dim Resultat As String
    Dim Centaine As Long, Reste As Long
    
    Centaine = Nombre \ 100
    Reste = Nombre Mod 100
    
    If Centaine > 0 Then
        If Centaine = 1 Then
            Resultat = "Cent"
        Else
            Resultat = Unite(Centaine) & " Cent" & IIf(Reste = 0, "s", "")
        End If
        If Reste > 0 Then Resultat = Resultat & " "
    End If
    
    If Reste > 0 Then
        If Reste < 20 Then
            Resultat = Resultat & Unite(Reste)
        Else
            Dim U As Long, D As Long
            U = Reste Mod 10
            D = Reste \ 10
            
            If D = 7 Or D = 9 Then
                If U = 1 And D = 7 Then
                    Resultat = Resultat & "Soixante et Onze"
                ElseIf U = 0 Then
                    Resultat = Resultat & Dizaine(D) & "-dix"
                Else
                    Resultat = Resultat & Dizaine(D) & "-" & Unite(10 + U)
                End If
            Else
                Resultat = Resultat & Dizaine(D)
                If U > 0 Then
                    If U = 1 And D <> 8 Then
                        Resultat = Resultat & " et Un"
                    Else
                        Resultat = Resultat & "-" & Unite(U)
                    End If
                End If
                If D = 8 And U = 0 Then Resultat = Resultat & "s"
            End If
        End If
    End If
    
    ConvertirGroupe999 = Resultat
End Function

📝 Exemple pratique : afficher un total de facture en lettres

Imaginons une facture Excel avec un montant total dans B12. Dans la cellule réservée au montant en lettres, saisissez :

=AngleFormation(B12)

Pour un total de 1 250,75 €, le résultat attendu avec ce code est :

Mille Deux Cent Cinquante Euros et Soixante-Quinze Centimes

Ainsi, si le total de la facture change, la cellule calculée peut afficher sa nouvelle représentation textuelle sans ressaisie.

⚠️ Points importants à connaître

  • Compatibilité : ce tutoriel concerne Excel pour ordinateur avec prise en charge de VBA. La fonction n'est pas exécutée comme une macro VBA dans Excel pour le Web.
  • Conservation des macros : privilégiez le format .xlsm et n'activez les macros que dans des classeurs de confiance.
  • Périmètre du code : le script est conçu pour les montants non négatifs avec une partie entière allant jusqu'à 999 999. Les montants négatifs et les valeurs supérieures ne sont pas pris en charge correctement.
  • Arrondis et accords : le script utilise Round de VBA ; certains montants proches des limites de centimes peuvent produire un résultat inattendu. Certaines formes, notamment les centaines exactes avant « mille », nécessitent également une vérification grammaticale avant usage comptable.
  • Présentation : les mots sont renvoyés avec la capitalisation et les graphies prévues par le code, sans normalisation supplémentaire.

🔧 Résoudre les problèmes fréquents

La formule affiche #NOM?

Vérifiez que le code figure dans un module standard du bon classeur, que celui-ci autorise l'exécution des macros et que la fonction est écrite exactement AngleFormation.

Le code disparaît après l'enregistrement

Le classeur a peut-être été enregistré en .xlsx. Utilisez Fichier → Enregistrer sous, puis choisissez Classeur Excel prenant en charge les macros (.xlsm).

La formule ne se met pas à jour

Vérifiez que le calcul d'Excel est réglé sur Automatique et que A1 contient bien une valeur numérique, pas seulement un nombre stocké sous forme de texte.

Je vois un avertissement de sécurité sur les macros

Excel peut bloquer les macros selon les paramètres de sécurité. N'activez leur exécution que si vous connaissez et vérifiez le contenu du classeur. Dans un environnement professionnel, suivez les règles de votre organisation.

🚀 Allez plus loin avec Angle Formation

Cette formule constitue une première étape pour automatiser vos documents Excel : factures, devis et tableaux de suivi. Retrouvez d'autres tutoriels pratiques sur AngleFormation.com.

❓ FAQ : nombre en lettres avec Excel

Excel possède-t-il une formule native pour écrire les nombres en français ?

Excel ne dispose pas d'une fonction standard intégrée consacrée à cette conversion en français. Le tutoriel utilise une fonction personnalisée VBA.

Quelle formule faut-il écrire pour convertir A1 en toutes lettres ?

Après installation du module VBA, saisissez =AngleFormation(A1) dans une autre cellule.

Faut-il installer un complément Excel payant ?

Non. Le code fourni fonctionne comme une fonction définie par l'utilisateur dans un classeur compatible avec VBA, sous réserve des paramètres de sécurité des macros.

Pourquoi enregistrer le classeur au format XLSM ?

Parce que le format .xlsm conserve les modules VBA utilisés par la fonction. Le format .xlsx n'enregistre pas ces macros.

La fonction fonctionne-t-elle pour les centimes ?

Oui, pour les montants usuels dans son périmètre. Lorsque la partie décimale est positive, le code ajoute une expression en centimes. Il convient toutefois de vérifier les cas limites d'arrondi.

Peut-on convertir des montants en dollars ou en dirhams ?

Il est possible d'adapter une fonction VBA à d'autres devises, mais le code reproduit ici utilise exclusivement « Euro(s) » et « Centime(s) ». Il n'effectue pas de conversion monétaire.

Conclusion

Avec =AngleFormation(A1), vous pouvez automatiser l'écriture des montants en euros et centimes sur vos factures, devis et reçus Excel. L'installation se fait dans un module VBA et le fichier doit rester au format .xlsm. Pour les documents financiers, relisez toujours le résultat, notamment dans les situations particulières signalées plus haut.

JT
Cet article d'ingénierie a été rédigé par Jallal TAHIRI, consultant expert en architectures cloud, IA agentique et automatisation des processus B2B pour PME.