Excel n’a pas de fonction par défaut qui affiche des nombres sous forme de mots Français dans une feuille de calcul, mais vous pouvez ajouter cette fonctionnalité en collant le code de fonction SpellNumber suivant dans un module VBA (Visual Basic for Applications). Cette fonction vous permet de convertir des montants en euro et en cent en mots avec une formule, de sorte que 22,50 serait lu comme vingt-deux euros et cinq cents. Cela peut être très utile si vous utilisez Excel comme modèle pour imprimer des vérifications.
Si vous souhaitez convertir des valeurs numériques au format texte sans les afficher sous forme de mots, utilisez plutôt la Fonction TEXTE.
Remarque : Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie exprimée ou implicite. Cela inclut, sans s’y limiter, les garanties implicites de qualité commerciale ou d’adéquation à un usage particulier. Cet article part du principe que vous connaissez bien le langage de programmation VBA et les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous aider à expliquer les fonctionnalités d’une procédure particulière. Toutefois, ils ne modifient pas ces exemples pour fournir des fonctionnalités ajoutées, ou créer des procédures pour répondre à vos besoins spécifiques.
Créer la fonction SpellNumber pour convertir des nombres en mots
-
Utilisez le raccourci clavier Alt + F11 pour ouvrir le Visual Basic Editor (VBE).
Remarque : Vous pouvez également accéder au Visual Basic Editor en affichant l’onglet Développeur dans votre ruban.
-
Cliquez sur l’onglet Insertion, puis sur Module.
-
Copiez les lignes de code suivantes.
Remarque : Appelé Fonction définie par l’utilisateur ( UDF), ce code automatise la tâche de conversion de nombres en texte dans votre feuille de calcul.
Option Explicit 'Main Function Function SpellNumber(ByVal MyNumber) Dim Dollars, Cents, Temp Dim DecimalPlace, Count ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " ' String representation of amount. MyNumber = Trim(Str(MyNumber)) ' Position of decimal place 0 if none. DecimalPlace = InStr(MyNumber, ".") ' Convert cents and set MyNumber to dollar amount. If DecimalPlace > 0 Then Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2)) MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop Select Case Dollars Case "" Dollars = "No Dollars" Case "One" Dollars = "One Dollar" Case Else Dollars = Dollars & " Dollars" End Select Select Case Cents Case "" Cents = " and No Cents" Case "One" Cents = " and One Cent" Case Else Cents = " and " & Cents & " Cents" End Select SpellNumber = Dollars & Cents End Function ' Converts a number from 100-999 into text Function GetHundreds(ByVal MyNumber) Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) ' Convert the hundreds place. If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If ' Convert the tens and ones place. If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function ' Converts a number from 10 to 99 into text. Function GetTens(TensText) Dim Result As String Result = "" ' Null out the temporary function value. If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19... Select Case Val(TensText) Case 10: Result = "Ten" Case 11: Result = "Eleven" Case 12: Result = "Twelve" Case 13: Result = "Thirteen" Case 14: Result = "Fourteen" Case 15: Result = "Fifteen" Case 16: Result = "Sixteen" Case 17: Result = "Seventeen" Case 18: Result = "Eighteen" Case 19: Result = "Nineteen" Case Else End Select Else ' If value between 20-99... Select Case Val(Left(TensText, 1)) Case 2: Result = "Twenty " Case 3: Result = "Thirty " Case 4: Result = "Forty " Case 5: Result = "Fifty " Case 6: Result = "Sixty " Case 7: Result = "Seventy " Case 8: Result = "Eighty " Case 9: Result = "Ninety " Case Else End Select Result = Result & GetDigit _ (Right(TensText, 1)) ' Retrieve ones place. End If GetTens = Result End Function ' Converts a number from 1 to 9 into text. Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = "One" Case 2: GetDigit = "Two" Case 3: GetDigit = "Three" Case 4: GetDigit = "Four" Case 5: GetDigit = "Five" Case 6: GetDigit = "Six" Case 7: GetDigit = "Seven" Case 8: GetDigit = "Eight" Case 9: GetDigit = "Nine" Case Else: GetDigit = "" End Select End Function
-
Collez les lignes de code dans la zone Module1 (Code).
-
Appuyez sur Alt + Q pour revenir à Excel. La fonction SpellNumber est maintenant prête à être utilisée.
Remarque : Cette fonction fonctionne uniquement pour le classeur actuel. Pour utiliser cette fonction dans un autre classeur, vous devez répéter les étapes de copie et de collage du code dans ce classeur.
Utiliser la fonction SpellNumber dans des cellules individuelles
-
Tapez la formule =SpellNumber(A1) dans la cellule où vous souhaitez afficher un nombre écrit, où la notation A1 est la cellule contenant le nombre à convertir. Vous pouvez également taper manuellement la valeur comme =SpellNumber(22.50).
-
Appuyez sur Entrée pour confirmer la formule.
Enregistrer votre classeur de fonction SpellNumber
Excel ne peut pas enregistrer un classeur avec des fonctions macro au format de classeur sans macro standard (.xlsx). Si vous cliquez sur Fichier > Enregistrer. Une boîte de dialogue de Projet VB s’ouvre. cliquer sur Non.
Vous pouvez enregistrer votre fichier sous la forme d’un Classeur Excel prenant en charge les macros (.xlsm) pour conserver votre fichier dans son format actuel.
-
Cliquez sur Fichier > Enregistrer sous.
-
Cliquez sur le menu déroulant Type de fichier, puis sélectionnez Classeur Excel prenant en charge les macros.
-
Cliquez sur Enregistrer.