Bonjour
J'ai récupérer sur ce forum ce code pour transformer un chiffre en lettre.
Mais j'ai un souci : mon chiffre est 15 289 004 et lui me donne :
quinze millions deux cent quatre vingt neuf mille TROIS EUROS ET CENT
CENTIMES
Pourquoi pas 4 EUROS ? merci pour votre aide.
Public Function ConvertNbLettres(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 8)
dizaine(1) = "dix"
dizaine(2) = "vingt"
dizaine(3) = "trente"
dizaine(4) = "quarante"
dizaine(5) = "cinquante"
dizaine(6) = "soixante"
dizaine(8) = "quatre-vingt"
'traitement du cas 0 frs
If nb >= 1 Then
resultat = ""
Else
resultat = "zéro"
GoTo fintraitementfrancs
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
fintraitementfrancs:
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
ConvertNbLettres = 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
Select Case varnumD
Case Is <= 5
varlet = varlet + dizaine(varnumD)
Case 6, 7
varlet = varlet + dizaine(6)
Case 8, 9
varlet = varlet + dizaine(8)
End Select
If varnumU = 1 And varnumD < 8 Then
varlet = varlet + " et "
Else
If varnumU <> 0 Or varnumD = 7 Or varnumD = 9 Then: varlet = varlet
+ " "
End If
If varnumD = 7 Or varnumD = 9 Then: varnumU = varnumU + 10
If varnumU <> 0 Then: varlet = varlet + chiffre(varnumU)
End If
varlet = RTrim(varlet)
Return
End Function
Téléchargements
-
Symantec Endpoint Protection 11
Symantec Endpoint Protection 11.0 associe Symantec AntiVirus à des technologies avancées de prévention des menaces et de protection contre les ...
-
KoXo Administrator
KoXo Administrator permet de créer des comptes pour active directory et de gérer les espaces de stockage, ainsi que les services TSE et Exchange.
-
TrueCrypt
TrueCrypt est un logiciel qui permet de crypter à la volée vos données sur des partitions virtuelles.
Tous les téléchargements