eric leissler France Membre Simple # 0000002784 enregistré le 06/03/2010 http://www.aumeric.fr 68 ans LEISSLER Eric 85290 MORTAGNE SUR SEVRE de la société AUMERIC LOGICIELS Fiche personnelle
Cette fonction permet de convertir des chiffres en lettres ex : 1250 donne mille deux cent cinquante paramètre chiffre le chiffre à convertir monai la monaie associée. Si ce paramètre est vide, la fonction va chercher dans la base de registre la monnaie déclarée pour fox pro
Pour l'histoire , cette fonction a été écrite en commun avec Michel qui nous rejoindra un jour j'espère sur atout fox.
function convlettre(chiffre,monai) local i,t local cChif local tChif local aniveau,texte,arangs,amil,aexcep,avcex ifvartype(m.monai)="L"
m.monai=liregaumeric("CurrSymbol") *!* monai="Euros" endif
for i=1 toalen(aniveau,1) aniveau[i,1]=iif(len(aniveau[i,1])<3,padl(aniveau[i,1],3,"0"),aniveau[i,1]) for m.t=1 tolen(aniveau[i,1]) ifsubstr(aniveau[i,1],t,1)<>"0" aniveau[i,2]=aniveau[i,2]+arangs[val(substr(aniveau[i,1],m.t,1)),m.t] endif next if m.i>1
aniveau[i,2]=aniveau[i,2]+amil[i]+iif(val(aniveau[i,1])>1.and.i>2,"s "," ") endif next
for i=alen(aniveau,1) to 1 step -1
m.texte=m.texte+aniveau[i,2] next * traite les exceptions for i=1 to 12
m.texte=strtran(m.texte,aexcep[i,1],aexcep[i,2]) next i
*// enlŠve un mille
m.texte=iif(left(m.texte,8)="un mille",right(m.texte,len(m.texte)-3),m.texte) *// vingt et cent for m.i=1 to 2
m.texte=strtran(left(m.texte,len(m.texte)-4),avcex[i,1],avcex[i,2])+right(m.texte,4) next
le 01/11/2009, eric leissler a écrit : Bonjour Musta copy le code dans un prg et en tête rajoute ? convlettre("1250","Euros")
la fonction te renvoie Mil deux cent cinquante euros si tu met le code de la fonction dans un prg appellé mesfonctions.prg dans ton programme maitre, tu met set procedure to mesfonctions additive
ensuite dans n'importe quel endroit du programme, le code convlettre("1250","Euros") te renverra la somme en toute lettre. C'est pratique notamment pour les éditions. Supposons que tu ai un champs totalmandat dans une édition et que ce champs ait la valeur 2536 dans l'etat, au lieu de totalmandat, tu mets convlettre(totalmandat,"euros") et lors de l'édition apercu comme edition papier, au lieu de 2536 tu auras Deux mil cinq cent trente six euros
Bonne journée
le 09/10/2012, Francis Faure a écrit : Bonjour Eric, Je cherche actuellement une conversion de chiffres en lettres : et bingo je tombe sur ta contribution ! Merci
Toutefois lors de mes tests j'ai quelques "bizarreries" (des "mille" sont en trop) exemple :
? convlettre(2, "euro") && ok ? convlettre(20, "euro") && ok ? convlettre(200, "euro") && ok ? convlettre(2000, "euro") && ok ? convlettre(20000, "euro") && ok ? convlettre(200000, "euro") && ok
? convlettre(2000000, "euro") && ko ? convlettre(20000000, "euro") && ko ? convlettre(200000000, "euro") && ko ? convlettre(200000001, "euro") && ko
Cordialement Francis
le 21/10/2012, eric leissler a écrit : Bonjour Francis, excuse moi ,je n'avais pas vu ta question, j'étais pas mal en déplacement ces temps ci. J'ai corrigé la fonction et est correcte maintenant pour 2000000 20000000 200000000 mais celle que tu as poste est nettement plus aboutie. Bravo :
Bonjour Musta
copy le code dans un prg et en tête rajoute
? convlettre("1250","Euros")
la fonction te renvoie Mil deux cent cinquante euros
si tu met le code de la fonction dans un prg appellé mesfonctions.prg
dans ton programme maitre, tu met
set procedure to mesfonctions additive
ensuite dans n'importe quel endroit du programme, le code
convlettre("1250","Euros") te renverra la somme en toute lettre.
C'est pratique notamment pour les éditions.
Supposons que tu ai un champs totalmandat dans une édition et que ce champs ait la valeur 2536
dans l'etat, au lieu de totalmandat, tu mets convlettre(totalmandat,"euros")
et lors de l'édition apercu comme edition papier, au lieu de 2536 tu auras
Deux mil cinq cent trente six euros
Bonne journée