|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CLASSE QUI PERMET DE CONVERTIR UN NOMBRE EN LETTRES
Information sur la source
Description
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
- 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
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
Historique
- 19 avril 2007 14:38:12 :
- Les correction apportées concernent les mauvaises lectures que faisait la classe,
par exemples lire "un mille" pour 1000
et bien d'autres erreurs mais toujours relatives au règles de lecture.
Salut
- 15 mai 2007 13:12:51 :
- Erreur d'ortographe vignt->vingt (dans le code de la classe convertisseuse)
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
convertir un nombre en lettres [ par Don Jiro ]
Bonjour à tous,Je souhaiterai savoir comment faire pour convertir un nombre en lettrea mon bureau cela fonctionne et chez moi pas du toutau lieu
Décompte de lettres dans une textbox ! [ par THeTiTeuF ]
C'est très vite expliquéJe veux faire un programme pour envoyer des SMS, et je veux avoir une boite de texte qui met le nombre de caractères restant s
convertir un Long en String [ par HollowSpecter128 ]
Bonsoir à tous,J'ai un petit problème.Je dois convertir un Long en String pour des besoins de stockage de données.Exemple : le nombre 183038175
Convertir lettres en lettres et mots entiers en mots entiers [ par elmekki ]
Bonsoirje cherche un code qui permet de convertir les lettres en lettres selon la coresspondance suivante ('abcdefghijklmn...') par ('i
Algo pour convertir un nombre DECIMAL en HEXA [ par Rurouni ]
Bonjour, Je ne peux pas utiliser la fonction Hex car mon nombre est tres grand et ne tient pas dans une variable type double.Donc j aimerais avoir un
Convertir des nombres (100,00) et lettres (cent Euros) [ par Fred_91 ]
Bonjour, je suis débutant, je tatonne sur access, et dans le cadres d'une appication que je fais pour ma femme qui est kiné, j'aimerai pourv
Convertir une chaine de caractere en un nombre [ par cx5400 ]
Bonjour, je vais faire simple pour vous expliquer ce que je voudrais faire en vous donnant un exemple ex: je tape une chaine de caractere a l ecran pa
Convertir une chaine de caractere en un nombre [ par cx5400 ]
Bonjour, je vais faire simple pour vous expliquer ce que je voudrais faire en vous donnant un exemple ex: je tape une chaine de caractere a l ecran pa
Convertir un caractere en un nombre puis en un autre caractere [ par cx5400 ]
Bonjour, je vais faire simple pour vous expliquer ce que je voudrais faire en vous donnant un exemple ex: je tape une chaine de caractere a l ecran
Convertir un caractere en un nombre puis en un autre caractere [ par cx5400 ]
Bonjour, je vais faire simple pour vous expliquer ce que je voudrais faire en vous donnant un exemple ex: je tape une chaine de caractere a l ec
|
Téléchargements
Logiciels à télécharger sur le même thème :
|