[vbnet] [convert] conversion de chiffres en lettres (french) V1


/ 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


Copy this code and paste it in your HTML
  1. ' Conversion de chiffre en lettre de 0 à 1999 milliard 999 999 999
  2. Module ChLettre
  3. Dim chiffre() As String
  4. Dim dizaine() As String
  5. Dim chaine As String
  6.  
  7. Private Sub init()
  8. ReDim dizaine(7) ' *** tableau contenant les noms des dizaines
  9. dizaine(1) = "dix"
  10. dizaine(2) = "vingt"
  11. dizaine(3) = "trente"
  12. dizaine(4) = "quarante"
  13. dizaine(5) = "cinquante"
  14. dizaine(6) = "soixante"
  15.  
  16. ReDim chiffre(20) ' *** tableau contenant le nom des 19 premiers nombres en lettres
  17. chiffre(1) = "un"
  18. chiffre(2) = "deux"
  19. chiffre(3) = "trois"
  20. chiffre(4) = "quatre"
  21. chiffre(5) = "cinq"
  22. chiffre(6) = "six"
  23. chiffre(7) = "sept"
  24. chiffre(8) = "huit"
  25. chiffre(9) = "neuf"
  26. chiffre(10) = "dix"
  27. chiffre(11) = "onze"
  28. chiffre(12) = "douze"
  29. chiffre(13) = "treize"
  30. chiffre(14) = "quatorze"
  31. chiffre(15) = "quinze"
  32. chiffre(16) = "seize"
  33. chiffre(17) = "dix-sept"
  34. chiffre(18) = "dix-huit"
  35. chiffre(19) = "dix-neuf"
  36. End Sub
  37. Public Function NBLT(ByVal nb As Long) As String
  38. Call init()
  39. If nb = 0 Then
  40. NBLT = "Zéro"
  41. Exit Function
  42. End If
  43. chaine = ""
  44. Decompose(nb)
  45. chaine = Replace(chaine, " ", " ")
  46. chaine = Replace(chaine, "- ", "-")
  47. NBLT = chaine
  48. End Function
  49. Private Function Decompose(ByVal Nombre As Long) As String
  50. Dim Reste As Long
  51. If Nombre > (10 ^ 9) Then
  52.  
  53. Reste = Nombre Mod (10 ^ 9)
  54. Nombre = Nombre \ (10 ^ 9)
  55.  
  56. If Nombre > 10 Then
  57. Decompose(Nombre)
  58. Else
  59. chaine += chiffre(Convert.ToInt16(Nombre))
  60. End If
  61.  
  62. chaine += " milliard"
  63. If Nombre > 1 Then chaine += "s"
  64.  
  65. Decompose(Reste)
  66.  
  67. Else
  68.  
  69. If Nombre > (10 ^ 6) Then
  70.  
  71. Reste = Nombre Mod (10 ^ 6)
  72. Nombre = Nombre \ (10 ^ 6)
  73.  
  74. If Nombre > 10 Then
  75. Decompose(Nombre)
  76. Else
  77. chaine += " " & chiffre(Convert.ToInt16(Nombre))
  78.  
  79. End If
  80.  
  81. chaine += " million"
  82. If Nombre > 1 Then chaine += "s"
  83.  
  84. Decompose(Reste)
  85.  
  86. Else
  87. If Nombre >= (10 ^ 3) Then
  88.  
  89. Reste = Nombre Mod (10 ^ 3)
  90. Nombre = Nombre \ (10 ^ 3)
  91.  
  92. If Nombre > 10 Then
  93. Decompose(Nombre)
  94. Else
  95. If Nombre > 1 Then chaine += " " & chiffre(Convert.ToInt16(Nombre))
  96. End If
  97.  
  98. chaine += " mille"
  99.  
  100. Decompose(Reste)
  101.  
  102. Else
  103.  
  104. If Nombre >= (100) Then
  105.  
  106. Reste = Nombre Mod (100)
  107. Nombre = Nombre \ (100)
  108.  
  109. If Nombre > 10 Then
  110. Decompose(Nombre)
  111. Else
  112. If Nombre > 1 Then chaine += " " & chiffre(Convert.ToInt16(Nombre))
  113. End If
  114.  
  115. chaine += " cent"
  116. If Nombre > 1 And Reste = 0 Then chaine += "s"
  117.  
  118. Decompose(Reste)
  119.  
  120. Else
  121.  
  122. If Nombre >= 80 And Nombre < 100 Then
  123.  
  124. Reste = Nombre Mod 20
  125. Nombre = Nombre \ 20
  126.  
  127. If Nombre > 10 Then
  128. Decompose(Nombre)
  129. Else
  130. chaine += " " & chiffre(Convert.ToInt16(Nombre))
  131. End If
  132.  
  133. chaine += "-vingt"
  134.  
  135. Decompose(Reste)
  136.  
  137. Else
  138.  
  139. If Nombre < 20 And Nombre > 9 Then
  140.  
  141. chaine += " " & chiffre(Convert.ToInt16(Nombre))
  142.  
  143. Else
  144.  
  145. If Nombre > 19 And Nombre < 70 Then
  146.  
  147. Reste = Nombre Mod 10
  148. Nombre = Nombre \ 10
  149.  
  150. If Nombre > 10 Then
  151. Decompose(Nombre)
  152. Else
  153. chaine += " " & dizaine(Convert.ToInt16(Nombre))
  154. End If
  155.  
  156. If Reste = 1 Then
  157. chaine += " et" ' Cas particlier (Ving et un , trante et un , etc...)
  158. Else
  159. If Reste <> 0 Then chaine += "-"
  160. End If
  161.  
  162. Decompose(Reste)
  163.  
  164. Else
  165.  
  166. If Nombre >= 70 Then
  167.  
  168. chaine += " soixante"
  169. Reste = Nombre - 60
  170.  
  171. If Reste = 1 Or Reste = 11 Then chaine += " et"
  172.  
  173. Decompose(Reste)
  174.  
  175. Else
  176.  
  177. If Nombre < 10 Then chaine += " " & chiffre(Convert.ToInt16(Nombre))
  178.  
  179. End If
  180.  
  181. End If
  182. End If
  183. End If
  184. End If
  185. End If
  186. End If
  187. End If
  188. End Function
  189. End Module

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.