Revision: 77134
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 23, 2019 03:33 by martinbrait
Initial Code
' Conversion de chiffre en lettre de 0 à 1999 milliard 999 999 999 Module ChLettre Dim chiffre() As String Dim dizaine() As String Dim chaine As String Private Sub init() ReDim dizaine(7) ' *** tableau contenant les noms des dizaines dizaine(1) = "dix" dizaine(2) = "vingt" dizaine(3) = "trente" dizaine(4) = "quarante" dizaine(5) = "cinquante" dizaine(6) = "soixante" ReDim chiffre(20) ' *** tableau contenant le nom des 19 premiers nombres en lettres chiffre(1) = "un" chiffre(2) = "deux" chiffre(3) = "trois" chiffre(4) = "quatre" chiffre(5) = "cinq" chiffre(6) = "six" chiffre(7) = "sept" chiffre(8) = "huit" chiffre(9) = "neuf" chiffre(10) = "dix" chiffre(11) = "onze" chiffre(12) = "douze" chiffre(13) = "treize" chiffre(14) = "quatorze" chiffre(15) = "quinze" chiffre(16) = "seize" chiffre(17) = "dix-sept" chiffre(18) = "dix-huit" chiffre(19) = "dix-neuf" End Sub Public Function NBLT(ByVal nb As Long) As String Call init() If nb = 0 Then NBLT = "Zéro" Exit Function End If chaine = "" Decompose(nb) chaine = Replace(chaine, " ", " ") chaine = Replace(chaine, "- ", "-") NBLT = chaine End Function Private Function Decompose(ByVal Nombre As Long) As String Dim Reste As Long If Nombre > (10 ^ 9) Then Reste = Nombre Mod (10 ^ 9) Nombre = Nombre \ (10 ^ 9) If Nombre > 10 Then Decompose(Nombre) Else chaine += chiffre(Convert.ToInt16(Nombre)) End If chaine += " milliard" If Nombre > 1 Then chaine += "s" Decompose(Reste) Else If Nombre > (10 ^ 6) Then Reste = Nombre Mod (10 ^ 6) Nombre = Nombre \ (10 ^ 6) If Nombre > 10 Then Decompose(Nombre) Else chaine += " " & chiffre(Convert.ToInt16(Nombre)) End If chaine += " million" If Nombre > 1 Then chaine += "s" Decompose(Reste) Else If Nombre >= (10 ^ 3) Then Reste = Nombre Mod (10 ^ 3) Nombre = Nombre \ (10 ^ 3) If Nombre > 10 Then Decompose(Nombre) Else If Nombre > 1 Then chaine += " " & chiffre(Convert.ToInt16(Nombre)) End If chaine += " mille" Decompose(Reste) Else If Nombre >= (100) Then Reste = Nombre Mod (100) Nombre = Nombre \ (100) If Nombre > 10 Then Decompose(Nombre) Else If Nombre > 1 Then chaine += " " & chiffre(Convert.ToInt16(Nombre)) End If chaine += " cent" If Nombre > 1 And Reste = 0 Then chaine += "s" Decompose(Reste) Else If Nombre >= 80 And Nombre < 100 Then Reste = Nombre Mod 20 Nombre = Nombre \ 20 If Nombre > 10 Then Decompose(Nombre) Else chaine += " " & chiffre(Convert.ToInt16(Nombre)) End If chaine += "-vingt" Decompose(Reste) Else If Nombre < 20 And Nombre > 9 Then chaine += " " & chiffre(Convert.ToInt16(Nombre)) Else If Nombre > 19 And Nombre < 70 Then Reste = Nombre Mod 10 Nombre = Nombre \ 10 If Nombre > 10 Then Decompose(Nombre) Else chaine += " " & dizaine(Convert.ToInt16(Nombre)) End If If Reste = 1 Then chaine += " et" ' Cas particlier (Ving et un , trante et un , etc...) Else If Reste <> 0 Then chaine += "-" End If Decompose(Reste) Else If Nombre >= 70 Then chaine += " soixante" Reste = Nombre - 60 If Reste = 1 Or Reste = 11 Then chaine += " et" Decompose(Reste) Else If Nombre < 10 Then chaine += " " & chiffre(Convert.ToInt16(Nombre)) End If End If End If End If End If End If End If End If End Function End Module
Initial URL
Initial Description
convert numbers to letters Ce module permet de convertir un chiffre entier de 0 à 99999999999999. La méthode utilisée est la décomposition du chiffre par récursivité. nous divisons le chiffre par les éléments suivant : 10^9 (milliard) 10^6 (million) 10^3 (millier) 100 (centaine) 10 (dizaine) enfin il reste l'unité Ex : 200905 = (2* 100 *1000) + (9 *100) + 5 soit (deux * cent * mille) + (neuf * cent) + cinq
Initial Title
[vbnet] [convert] conversion de chiffres en lettres (french) V1
Initial Tags
text, convert
Initial Language
VB.NET