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