Compléments pour Microsoft Access

http://access.fr.free.fr/

Convertir nombre en lettre (belge) (Nombre)

Description 

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

 
Synthaxe 

Expression = ConvertNbLettresBelge(nb, devise)

La synthaxe de la fonction ConvertNbLettresBelge comprend les éléments suivants :

ElémentsDescription

nb

Expression numérique correspondant au nombre que l'on souhaite écrire en toutes lettre.
deviseExpression de chaîne correspondant à la devise que l'on souhaite écrire après le nombre.
 
Exemple 

Aucun exemple disponible pour le moment.

 
Code de la fonction 


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