Code pour transformer des chiffres en texte

Bonjour

Je cherche un code qui permet de transformer des chiffres en texte. Par exemple transformer 200 en deux cent, 180 en cent quatre vingt, 21 en Vingt et un etc...

Option Explicit

Public Numbers As Variant, Tens As Variant

Sub SetNums()

Numbers = 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", "septante", "quatre-vingt", "nonante")

End Sub

Function WordNumFr(MyNumber As Double) As String

Dim DecimalPosition As Integer, ValNo As Variant, StrNo As String

Dim NumStr As String, n As Integer, Temp1 As String, Temp2 As String

If Abs(MyNumber) > 999999999 Then

WordNumFr = "Value too large"

Exit Function

End If

SetNums

' String representation of amount (excl decimals)

NumStr = Right("000000000" & Trim(Str(Int(Abs(MyNumber)))), 9)

ValNo = Array(0, Val(Mid(NumStr, 1, 3)), Val(Mid(NumStr, 4, 3)), Val(Mid(NumStr, 7, 3)))

For n = 3 To 1 Step -1 'analyse the absolute number as 3 sets of 3 digits

StrNo = Format(ValNo(n), "000")

If ValNo(n) > 0 Then

Temp1 = GetTens(Val(Right(StrNo, 2)))

If Left(StrNo, 1) <> "0" Then

Temp2 = Numbers(Val(Left(StrNo, 1))) & " cent"

If Temp1 <> "" Then Temp2 = Temp2 & ""

Else

Temp2 = ""

End If

If n = 3 Then

If Temp2 = "" And ValNo(1) + ValNo(2) > 0 Then Temp2 = ""

WordNumFr = Trim(Temp2 & Temp1)

End If

If n = 2 Then WordNumFr = Trim(Temp2 & Temp1 & " mille " & WordNumFr)

If n = 1 Then WordNumFr = Trim(Temp2 & Temp1 & " million " & WordNumFr)

End If

Next n

NumStr = Trim(Str(Abs(MyNumber)))

' Values after the decimal place

DecimalPosition = InStr(NumStr, ",")

Numbers(0) = "zéro"

If DecimalPosition > 0 And DecimalPosition < Len(NumStr) Then

Temp1 = " virgule"

For n = DecimalPosition + 1 To Len(NumStr)

Temp1 = Temp1 & " " & Numbers(Val(Mid(NumStr, n, 1)))

Next n

WordNumFr = WordNumFr & Temp1

End If

If Len(WordNumFr) = 0 Or Left(WordNumFr, 2) = " p" Then

WordNumFr = "zéro" & WordNumFr

End If

End Function

Function GetTens(TensNum As Integer) As String

' Converts a number from 0 to 99 into text.

If TensNum <= 19 Then

GetTens = Numbers(TensNum)

Else

Dim MyNo As String

MyNo = Format(TensNum, "00")

GetTens = Tens(Val(Left(MyNo, 1))) & " " & Numbers(Val(Right(MyNo, 1)))

End If

End Function

Le code que j'ai trouvé et en anglais et ne fonctionne pas super bien.

Bonjour,

Ça existe déjà, c'est pas très compliqué à faire, mais tout de même plutôt fastidieux...

Bon courage

Bonjour,

Tu trouveras sans doute ton bonheur ici :

https://forum.excel-pratique.com/excel/convertir-somme-en-toute-lettre-t34677.html

Bouben

Rechercher des sujets similaires à "code transformer chiffres texte"