/ Published in: VB.NET
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
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
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
' 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) 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