Convertir un nombre en toutes lettres
(version belge)


Cette fonction permet de convertir un nombre en toutes lettres dans la langue belge.

L'argument "Nb" correspond au nombre à convertir et l'argument "Devise" correspond au nom de la devise monétaire de que l'on souhaite mettre à la suite du nombre.

Public Function ConvertNbLettresBelge(Nb, Devise As String) As String

Dim varnum, varnumD, varnumU, resultat, varlet

Static Chiffre(1 To 19)
    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"

Static dizaine(1 To 9)
    dizaine(1) = "dix"
    dizaine(2) = "vingt"
    dizaine(3) = "trente"
    dizaine(4) = "quarante"
    dizaine(5) = "cinquante"
    dizaine(6) = "soixante"
    dizaine(7) = "septante"
    dizaine(8) = "quatre-vingt"
    dizaine(9) = "nonante"

'traitement du cas 0
If Nb >= 1 Then
    resultat = ""
Else
    resultat = "zéro"
    GoTo FinTraitement
End If

'traitement des millions
varnum = Int(Nb / 1000000)
If varnum > 0 Then
    GoSub centaine_dizaine
    resultat = varlet + " million"
    If varlet <> "un" Then: resultat = resultat + "s"
End If

'traitement des milliers
varnum = Int(Nb) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
    GoSub centaine_dizaine
    If varlet <> "un" Then: resultat = resultat + " " + varlet
    resultat = resultat + " mille"
End If

'traitement des centaines et dizaines
varnum = Int(Nb) Mod 1000
If varnum > 0 Then
    GoSub centaine_dizaine
    resultat = resultat + " " + varlet
End If
resultat = LTrim(resultat) varlet = Right$(resultat, 4)

'traitement du "s" final pour vingt et cent et du "de" pour million
Select Case varlet
    Case "cent", "ingt"
        resultat = resultat + "s"
    Case "lion", "ions"
        resultat = resultat + " de"
End Select

FinTraitement:
resultat = resultat + " " + Devise
If Nb > 2 Then: resultat = resultat + "s"

'traitement des centimes
varnum = Int((Nb - Int(Nb)) * 100 + 0.5)
If varnum > 0 Then
    GoSub centaine_dizaine
    resultat = resultat + " et " + varlet + " centime"
    If varnum > 1 Then: resultat = resultat + "s"
End If

'conversion 1čre lettre en majuscule
resultat = UCase(Left(resultat, 1)) + Right(resultat, Len(resultat) - 1)

'renvoi du resultat de la fonction et fin de la fonction
ConvertNbLettresBelge = resultat
Exit Function

'sous programme
centaine_dizaine:
varlet = ""

'traitement des centaines
If varnum >= 100 Then
    varlet = Chiffre(Int(varnum / 100))
    varnum = varnum Mod 100
    If varlet = "un" Then
        varlet = "cent "
    Else
        varlet = varlet + " cent "
    End If
End If

'traitement des dizaines
If varnum <= 19 Then
    If varnum > 0 Then: varlet = varlet + Chiffre(varnum)
Else
    varnumD = Int(varnum / 10)
    varnumU = varnum Mod 10
    varlet = varlet + dizaine(varnumD)
    If varnumU = 1 Then
        varlet = varlet + " et "
    Else
        If varnumU <> 0 Then: varlet = varlet + " "
    End If
    If varnumU <> 0 Then: varlet = varlet + Chiffre(varnumU)
End If
varlet = RTrim(varlet)
Return

End Function

Cette fonction retournera le nombre écrit en toutes lettres suivi du nom de la devise stipulée dans l'argument "Devise".

 

Retour haut de page

Auteur : Jessy SEMPERE