Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic
FunctionMontantEnLettre(Montant) As
String</li><li><samp>' Objectif: convertir des montants en lettre selon les règles orthographiques en vigueur</samp></li><li><samp>' au maroc . Par exemple pour un chèque bancaire</samp></li><li><samp>' Version valable pour un maximum de 999'999'999.99</samp></li><li>
Dimvarnum, varnumD, varnumD1, varnumU, varlet, résultat, bytcent As Byte
Staticchiffre(1 To 19) <samp>'*** tableau contenant le nom des 19 premiers</samp></li><li><samp>'nombres en lettres</samp></li><li>chiffre(1) <var>"un"</var></li><li>chiffre(2) <var>"deux"</var></li><li>chiffre(3) = <var>"trois"</var></li><li>chiffre(4) = <var>"quatre"</var></li><li>chiffre(5) = <var>"cinq"</var></li><li>chiffre(6) = <var>"six"</var></li><li>chiffre(7) = <var>"sept"</var></li><li>chiffre(8) = <var>"huit"</var></li><li>chiffre(9) = <var>"neuf"</var></li><li>chiffre(10) = <var>"dix"</var></li><li>chiffre(11) = <var>"onze"</var></li><li>chiffre(12) = <var>"douze"</var></li><li>chiffre(13) = <var>"treize"</var></li><li>chiffre(14) = <var>"quatorze"</var></li><li>chiffre(15) = <var>"quinze"</var></li><li>chiffre(16) = <var>"seize"</var></li><li>chiffre(17) = <var>"dix-sept"</var></li><li>chiffre(18) = <var>"dix-huit"</var></li><li>chiffre(19) = <var>"dix-neuf"</var></li><li>
Staticdizaine(1 To 9) <samp>'*** tableau contenant les noms des dizaines</samp></li><li>dizaine(1) = <var>"dix"</var></li><li>dizaine(2) = <var>"vingt"</var></li><li>dizaine(3) = <var>"trente"</var></li><li>dizaine(4) = <var>"quarante"</var></li><li>dizaine(5) = <var>"cinquante"</var></li><li>dizaine(6) = <var>"soixante"</var></li><li>dizaine(7) = <var>"soixante"</var></li><li>dizaine(8) = <var>"quatre-vingt"</var></li><li>dizaine(9) = <var>"quatre-vingt"</var></li><li><samp>'*** Le traitement des milliards n'est pas pris en compte</samp></li><li>
IfMontant > 999999999.99
Then</li><li>
MsgBox<var>"Les milliards ne sont pas traités par ce programme @ @"</var>, vbCritical, <var>"Conversion Montant en Lettres"</var></li><li>
Exit
Function</li><li>
End
If</li><li><samp>'*** Traitement du cas zéro</samp></li><li>
IfMontant >= 1
Then</li><li> résultat = <var>""</var></li><li>
Else</li><li> résultat = <var>"zéro"</var></li><li>
GoToFinTraitement
End
If</li><li><samp>'*** Traitement des millions</samp></li><li>varnum =
Int(Montant / 1000000)
Ifvarnum > 0
Then</li><li>
GoSubCentaineDizaine
Ifvarlet <> <var>"un"</var>
Thenrésultat résultat + <var>"s"</var></li><li>
End
If</li><li><samp>'*** Traitement des milliers</samp></li><li>varnum =
Int(Montant) Mod 1000000
Int(varnum / 1000)
Ifvarnum > 0
Then</li><li>
GoSubCentaineDizaine
Ifvarlet <> <var>"un"</var>
Then</li><li> résultat = résultat + <var>" "</var> + varlet
Else</li><li> résultat <var>"mille"</var></li><li>
End
If</li><li>
End
If</li><li><samp>'*** Traitement des centaines et dizaines</samp></li><li>varnum =
Int(Montant) Mod 1000
Ifvarnum > 0
Then</li><li>
GoSubCentaineDizaine
End
If</li><li>résultat =
LTrim(résultat)
Right$(résultat, 4)
Select
Casevarlet
Case<var>"ille"</var></li><li>
IfMontant <> 1000
Thenrésultat résultat + <var>"s"</var></li><li>
Case<var>"cent"</var></li><li>
Ifbytcent <> 1
Thenrésultat résultat + <var>"s"</var></li><li>
Case<var>"lion"</var>, <var>"ions"</var></li><li> résultat = résultat + <var>" de"</var></li><li>
End
Select</li><li></li><li>FinTraitement:
IfMontant >= 2
Thenrésultat = résultat + <var>"s"</var></li><li><samp>'*** Traitement des centimes</samp></li><li> varnum =
Int((Montant -
Int(Montant)) * 100 + 0.5) <samp>'*** On additionne 0,5 afin de compenser</samp></li><li> <samp>'*** les erreurs de calcul dues aux arrondis</samp></li><li>
Ifvarnum > 0
Then</li><li>
GoSubCentaineDizaine
Ifvarnum > 1
Thenrésultat résultat + <var>"s"</var></li><li>
End
If</li><li><samp>'*** Conversion 1ère lettre en majuscule</samp></li><li> résultat =
UCase(
Left(résultat, 1)) +
Right(résultat,
Len(résultat) - 1)
Exit
Function</li><li>CentaineDizaine:
Ifvarnum >= 100
Then</li><li> varlet = chiffre(
Int(varnum / 100))
Ifvarlet <var>"un"</var>
Then</li><li> varlet <var>"cent "</var></li><li> bytcent = 1
Else</li><li> varlet = varlet + <var>" cent "</var></li><li>
End
If</li><li>
End
If</li><li><samp>'*** Traitement des dizaines</samp></li><li>
Ifvarnum <= 19
Then<samp>'*** Cas où la dizaine est <20</samp></li><li>
Ifvarnum > 0
Then</li><li> varlet = varlet + chiffre(varnum)
End
If</li><li>
Else</li><li> varnumD
Int(varnum / 10) <samp>'*** chiffre des dizaines</samp></li><li> varnumU varnum Mod 10 <samp>'*** chiffre des unités</samp></li><li><samp>'*** génération des dizaines en lettres</samp></li><li> varlet = varlet + dizaine(varnumD)
IfvarnumD 7 Or varnumD 9
Then</li><li> varnumD1 = varnum - (varnumD - 1) * 10
End
If</li><li><samp>'*** traitement du séparateur des dizaines et unités</samp></li><li>
IfvarnumU 1
Then</li><li> varlet varlet + <var>" et "</var></li><li>
End
If</li><li>
End
If</li><li>
IfvarnumU <> 0
Then</li><li>
IfvarnumD 7 Or varnumD 9
Then</li><li> varlet = varlet
Else</li><li> varlet = varlet + chiffre(varnumU)
End
If</li><li>
End
If</li><li><samp>'*** Suppression des espaces à gauche et retour</samp></li><li> varlet =
RTrim(varlet)
Return</li><li>
End
Function</li></ol>Merci à WAHIDAbdelilah pour le code.