Classe qui permet de convertir un nombre en lettres

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 / 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

Codes Sources

A voir également

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.