Ce code est celui d'une classe permettant de réaliser de la convertion d'une valeur numérique en
lettres. Je l'ai créer dans le cadre d'un projet. J'espère ça pourra en aider plus d'un.
Elle découpe le nombre en partie de trois chiffres et effectue la lecture comme une personne.
Elle peut convertir de nombre dans l'intervalle suivant [0;999 999 999].
Vous pouurrez continuer si vous le souhaiez.(prise en compte de nb négatifs etc)
Pour la faire fonctionner, créez en une nouvelle instance grace à l'un de ses constructeurs
et d'appeler la métodhe convertion de votre choix.
A la fin tout le monde est content!!!
Source / Exemple :
Public Class Convertisseuse
Dim mintnum As Integer
Public Sub New(ByVal num As Integer)
mintnum = num
End Sub
Public Sub New()
mintnum = 0
End Sub
Public Function convertion(ByVal num As Integer) As String
Dim res As String = ""
Dim partie1 As String = ""
Dim partie2 As String = ""
Dim partie3 As String = ""
Dim num_length As Integer
'identification de la longueur du nombre
num_length = num.ToString.Length
If num_length < 4 Then
'nb en centaines
res = lecture_de_nb_a_3_chiffre(num)
End If
If num_length > 3 And num_length < 7 Then
partie2 = lecture_de_nb_a_3_chiffre(CType(num.ToString.Substring(num.ToString.Length - 3, 3).ToString, Integer))
partie1 = lecture_de_nb_a_3_chiffre(CType(num.ToString.Substring(0, num.ToString.Length - 3).ToString, Integer))
'si (partie1=un) ne pas écrire
If partie1.Trim = "un" Then
res = "mille(s)"
Else
res = partie1 & " mille(s)"
End If
If partie2.Trim <> "zéro" Then
res = res & " " & partie2
End If
End If
If num_length > 6 And num_length < 10 Then
'nb en milions
partie3 = lecture_de_nb_a_3_chiffre(CType(num.ToString.Substring(num.ToString.Length - 3, 3).ToString, Integer))
partie2 = lecture_de_nb_a_3_chiffre(CType(num.ToString.Substring(num.ToString.Length - 6, 3).ToString, Integer))
partie1 = lecture_de_nb_a_3_chiffre(CType(num.ToString.Substring(0, num.ToString.Length - 6).ToString, Integer))
If (partie2.Trim = "zéro") Then
res = partie1 & " million(s)"
ElseIf (partie2.Trim = "un") Then
res = partie1 & " million(s)" & " mille(s)"
Else
res = partie1 & " million(s) " & partie2 & " mille(s)"
End If
If (partie3.Trim <> "zéro") Then
res = res & " " & partie3
End If
End If
Return res
End Function
Private Function lecture_de_nb_a_1_chiffre(ByVal nb As Integer) As String
Dim de_zero_a_9() = {"zéro", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf"}
Dim res As String = ""
Dim i As Integer
For i = 0 To 9
If (CType(nb.ToString, Integer) = i) Then
res = de_zero_a_9(i)
Exit For
End If
Next
Return res
End Function
Private Function lecture_de_nb_a_2_chiffre(ByVal nb As Integer) As String
Dim de_1_a_9() = {"un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf"}
Dim de_11_a_19() = {"onze", "douze", "treize", "quatorze", "quinze", "seize", "dix-sept", "dix-huit", "dix-neuf"}
Dim dizaine_de_10_a_90() = {"dix", "vingt", "trente", "quarante", "cinquante", "soixante", "soixante-dix", "quatre-vingt", "quatre-vingt-dix"}
Dim les_chiffres() As Char
les_chiffres = nb.ToString.ToCharArray
Dim res As String = ""
Dim i As Integer
If les_chiffres(0) = "1" Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(0)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = de_11_a_19(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "2") _
Or (les_chiffres(0) = "3") _
Or (les_chiffres(0) = "4") _
Or (les_chiffres(0) = "5") _
Or (les_chiffres(0) = "6") _
Or (les_chiffres(0) = "8") Then
'If (CType(les_chiffres(1).ToString, Integer) = 0) Then
'si le deuxième chiffre est un zéro
If (les_chiffres(0) = "2") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(1)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(1)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "3") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(2)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(2)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "4") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(3)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(3)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "5") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(4)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(4)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "6") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(5)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(5)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "8") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(7)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(7)
res = res & " et " & de_1_a_9(i)
Exit For
End If
Next
End If
End If
End If
If (les_chiffres(0) = "7") Or (les_chiffres(0) = "9") Then
'si le deuxième chiffre est un zéro
If (les_chiffres(0) = "7") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(6)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(5)
res = res & " et " & de_11_a_19(i)
Exit For
End If
Next
End If
End If
If (les_chiffres(0) = "9") Then
If (CType(les_chiffres(1).ToString, Integer) = 0) Then
res = dizaine_de_10_a_90(8)
Else
For i = 0 To 8
If (CType(les_chiffres(1).ToString, Integer) = i + 1) Then
res = dizaine_de_10_a_90(7)
res = res & " et " & de_11_a_19(i)
Exit For
End If
Next
End If
End If
End If
Return res
End Function
Private Function lecture_de_nb_a_3_chiffre(ByVal nb As Integer) As String
Dim de_2_a_9() = {"deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf"}
Const str_cent As String = "cent"
Dim les_chiffres() As Char
Dim res As String = ""
Dim i As Integer
les_chiffres = nb.ToString.ToCharArray
Select Case nb.ToString.Length
Case 1
res = lecture_de_nb_a_1_chiffre(nb)
Case 2
res = lecture_de_nb_a_2_chiffre(nb)
Case 3
If les_chiffres(0) = "1" Then
res = str_cent
Else
For i = 0 To 7
If CType(les_chiffres(0).ToString, Integer) = i + 2 Then
res = de_2_a_9(i) & " " & str_cent
End If
Next
End If
If les_chiffres(1) = "0" Then
Dim partie_intermediaire As String = ""
partie_intermediaire = lecture_de_nb_a_1_chiffre(CType(nb.ToString.Substring(2), Integer))
If partie_intermediaire <> "zéro" Then
res = res & " " & partie_intermediaire
End If
Else
res = res & " " & lecture_de_nb_a_2_chiffre(CType(nb.ToString.Substring(1), Integer))
End If
Case Else
End Select
Return res
End Function
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.