Voici une procédure qui devrait vous convenir !
PROCEDURE nombre_en_lettres_FR(nel_valeur,nel_pays="BE") // Conversion en lettres d'une valeur en euros (nel_valeur) // si nel_pays="BE" (par défaut) alors 70=septante et 90=nonante // sinon 70=soixante dix et 90=quatre-vingt dix // Rem : Mille --> Toujours invariable // Cent --> Prends "s" si rien derrière --> deux cents mille // deux cent six mille
nel_ch1 est une chaîne="un,deux,trois,quatre,cinq,six,sept,huit,neuf,dix,onze,douze,treize,quatorze,quinze,seize,dix sept,dix huit,dix neuf" nel_ch2 est une chaîne="dix,vingt,trente,quarante,cinquante,soixante,septante,quatre-vingt,nonante" nel_ch3 est une chaîne=",mille,million,milliard,trillion"
nel_wch est une chaîne=NumériqueVersChaine(nel_valeur,"021.2f") nel_partie_entiere est une chaîne=ExtraitChaîne(nel_wch,1,".") nel_partie_decimale est une chaîne=ExtraitChaîne(nel_wch,2,".")
nel_wch2 est une chaîne n1 est un entier
i est un entier=1 j est un entier=6 BOUCLE // Centaine(s) n1=Val(nel_partie_entiere[[i]]) SI n1>0 SI n1>1 ALORS nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",") nel_wch2+=" cent" SI Val(nel_partie_entiere[[i+1 sur 2]])=0 ET n1>1 ALORS nel_wch2+="s" FIN // Dizaine(s) et unité(s) n1=Val(nel_partie_entiere[[i+1 sur 2]]) SI n1<>0 SI n1<20 SI Val(nel_partie_entiere[[i sur 3]])>1 OU j<>2 ALORS nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",") SINON n1=Val(nel_partie_entiere[[i+1]]) SI nel_pays<>"BE" ET (n1=7 OU n1=9) //spécial France nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1-1,",")+... " "+ExtraitChaîne(nel_ch1,10+Val(nel_partie_entiere[[i+2]]),",") SINON nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1,",") n1=Val(nel_partie_entiere[[i+2]]) SI n1<>0 ALORS SI n1=1 ALORS nel_wch2+=" et" nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",") FIN FIN FIN FIN // Millier(s),Million(s),Milliard(s) ... n1=Val(nel_partie_entiere[[i sur 3]]) SI n1<>0 ET j>1 ALORS nel_wch2+=" "+ExtraitChaîne(nel_ch3,j,",") SI n1>1 ET j>2 nel_wch2+="s" FIN j-- i+=3 SI i>Taille(nel_partie_entiere) SORTIR FIN
SI Val(nel_partie_entiere)>0 nel_wch2+=" euro" //franc SI Val(nel_partie_entiere)>1 ALORS nel_wch2+="s" FIN
// Gestion des décimales n1=Val(nel_partie_decimale) SI n1<>0 SI n1<20 nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",") SINON n1=Val(nel_partie_decimale[[1]]) SI nel_pays<>"BE" ET (n1=7 OU n1=9) //spécial France nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1-1,",")+... " "+ExtraitChaîne(nel_ch1,10+Val(nel_partie_decimale[[2]]),",") SINON nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1,",") n1=Val(nel_partie_decimale[[2]]) SI n1<>0 SI n1=1 nel_wch2+=" et" nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",") FIN FIN FIN nel_wch2+=" cent" //centime SI Val(nel_partie_decimale)>1 nel_wch2+="s" FIN
RENVOYER nel_wch2[[2 A]] |