Compléments pour Microsoft Access

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

Convertir nombre en lettre (allemand) (Nombre)

Description 

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

 
Synthaxe 

Expression = ConvertNbLettresAllemand(nb, devise)

La synthaxe de la fonction ConvertNbLettresAllemand 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 ConvertNbLettresAllemand(Nb, Devise As String) As String

Dim varnum, varnumD, varnumU, resultat, varlet

Static Chiffre(1 To 19)
    Chiffre(1) = "ein"
    Chiffre(2) = "zwei"
    Chiffre(3) = "drei"
    Chiffre(4) = "vier"
    Chiffre(5) = "fünf"
    Chiffre(6) = "sechs"
    Chiffre(7) = "sieben"
    Chiffre(8) = "acht"
    Chiffre(9) = "neun"
    Chiffre(10) = "zehn"
    Chiffre(11) = "elf"
    Chiffre(12) = "zwölf"
    Chiffre(13) = "dreizehn"
    Chiffre(14) = "vierzehn"
    Chiffre(15) = "fünfzehn"
    Chiffre(16) = "sechszehn"
    Chiffre(17) = "siebzehn"
    Chiffre(18) = "achtzehn"
    Chiffre(19) = "neunzehn"

Static dizaine(1 To 9)
    dizaine(1) = "zehn"
    dizaine(2) = "zwanzig"
    dizaine(3) = "dreissig"
    dizaine(4) = "vierzig"
    dizaine(5) = "fünfzig"
    dizaine(6) = "sechzig"
    dizaine(7) = "siebzig"
    dizaine(8) = "achtzig"
    dizaine(9) = "neunzig"

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

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

'traitement des milliers
varnum = Int(Nb) Mod 1000000
varnum = Int(varnum / 1000)
If varnum > 0 Then
    GoSub centaine_dizaine
    If varlet <> "ein" Then: resultat = resultat + " " + varlet
    resultat = resultat + " tausend"
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)

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 + " " + varlet + " CENT"
    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
ConvertNbLettresAllemand = 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 = "ein" Then
        varlet = "hundert "
    Else
        varlet = varlet + " hundert "
    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
    If varnumU <> 0 Then
        varlet = varlet + Chiffre(varnumU) + " und " + dizaine(varnumD)
    Else
        varlet = varlet + dizaine(varnumD)
    End If
End If

varlet = RTrim(varlet)
Return

End Function