Fonction de conversion de chiffres en lettres

0/5 (4 avis)

Snippet vu 19 696 fois - Téléchargée 35 fois

Contenu du snippet

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.

Bonne prog à tous

Eric

Source / Exemple :


function convlettre(chiffre,monai)
local i,t
local cChif
local tChif
local aniveau,texte,arangs,amil,aexcep,avcex
if vartype(m.monai)="L"
m.monai=liregaumeric("CurrSymbol")

  • !* monai="Euros"
endif m.chiffre=iif(vartype(m.chiffre)=="C",val(m.chiffre),m.chiffre) m.chiffre=iif(vartype(m.chiffre)=="N".and. m.chiffre<0,m.chiffre*-1,m.chiffre) m.cChif=ltrim(transform(round(iif(vartype(m.chiffre)=="C",val(m.chiffre),m.chiffre),2),"999999999999999.99")) m.tChif=left(m.cChif,len(m.cChif)-3) dimension aniveau[1,2],amil[5] dimension arangs[9,3],aexcep[12,2],avcex[2,2] m.texte="" arangs[1,1]="cent " arangs[1,2]="dix " arangs[1,3]="un " arangs[2,1]="deux cents " arangs[2,2]="vingt " arangs[2,3]="deux " arangs[3,1]="trois cents " arangs[3,2]="trente " arangs[3,3]="trois " arangs[4,1]="quatre cents " arangs[4,2]="quarante " arangs[4,3]="quatre " arangs[5,1]="cinq cents " arangs[5,2]="cinquante " arangs[5,3]="cinq " arangs[6,1]="six cents " arangs[6,2]="soixante " arangs[6,3]="six " arangs[7,1]="sept cents " arangs[7,2]="soixante dix " arangs[7,3]="sept " arangs[8,1]="huit cents " arangs[8,2]="quatre vingts " arangs[8,3]="huit " arangs[9,1]="neuf cents " arangs[9,2]="quatre vingt dix " arangs[9,3]="neuf " amil[1]=monai amil[2]="mille" amil[3]="million" amil[4]="milliard" amil[5]="billion" aexcep[1,1]="dix un" aexcep[1,2]="onze" aexcep[2,1]="dix deux" aexcep[2,2]="douze" aexcep[3,1]="dix trois" aexcep[3,2]="treize" aexcep[4,1]="dix quatre" aexcep[4,2]="quatorze" aexcep[5,1]="dix cinq" aexcep[5,2]="quinze" aexcep[6,1]="dix six" aexcep[6,2]="seize" aexcep[7,1]="vingt un" aexcep[7,2]="vingt et un" aexcep[8,1]="trente un" aexcep[8,2]="trente et un" aexcep[9,1]="quarante un" aexcep[9,2]="quarante et un" aexcep[10,1]="cinquante un" aexcep[10,2]="cinquante et un" aexcep[11,1]="soixante un" aexcep[11,2]="soixante et un" aexcep[12,1]="soixante onze" aexcep[12,2]="soixante et onze" avcex[1,1]="vingts" avcex[1,2]="vingt" avcex[2,1]="cents" avcex[2,2]="cent" i=1 do while.t. if i=1 aniveau[1,1]=right(m.tChif,iif(len(m.tChif)>2,3,len(m.tChif))) aniveau[1,2]="" else dimension aniveau[i,2] aniveau[i,1]=right(m.tChif,iif(len(m.tChif)>2,3,len(m.tChif))) aniveau[i,2]="" endif m.i=m.i+1 m.tChif=left(m.tchif,len(m.tchif)-3) if len(m.tchif)==0 exit endif enddo for i=1 to alen(aniveau,1) aniveau[i,1]=iif(len(aniveau[i,1])<3,padl(aniveau[i,1],3,"0"),aniveau[i,1]) for m.t=1 to len(aniveau[i,1]) if substr(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
  • aeval(avcex,{|a|texte:=strtran(left(texte,len(texte)-4),a[1],a[2])+right(texte,4)})
m.texte=m.texte+iif(len(alltrim(m.texte))>2,; amil[1]+"s ",; iif(!empty(texte),; amil[1]+" ","zéro "+amil[1]+" ")) m.texte=m.texte+iif(val(right(m.cChif,2))>0,iif(val(right(m.cChif,2))>1,right(m.cChif,2)+" centimes",right(m.cChif,2)+" centime"),"") return m.texte function liregaumeric PARAMETERS titi LOCAL oReg,regfile LOCAL cOptionValue,cOptionName,nErrNum,retour if vartype(m.titi)#"C" m.retour= "" else m.regfile = "registry.fxp" IF !FILE(m.regfile) MESSAGEBOX(C_NOREGFILE_LOC ) RETURN ENDIF oReg = NewObject("FoxReg",m.regfile) cOptionValue = "" cOptionName = titi m.nErrNum = oReg.GetFoxOption(m.cOptionName,@cOptionValue) retour=coptionvalue endif return m.retour

A voir également

Ajouter un commentaire Commentaires
benazza5 Messages postés 1 Date d'inscription vendredi 11 janvier 2008 Statut Membre Dernière intervention 26 mars 2013
26 mars 2013 à 14:58
salam
merci
cs_aumeric Messages postés 16 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 11 janvier 2018
29 avril 2012 à 19:51
Bonjour
il fonctionne sous vb 2008 et 2010 J'ai mis la source sur www.strataframe.fr
Cordialement

Aumeric
sami1yousef Messages postés 1 Date d'inscription jeudi 26 avril 2012 Statut Membre Dernière intervention 29 avril 2012
29 avril 2012 à 00:59
bonjour tout le monde
est_ce_que vous avez le programme qui convertir les chifres vers lettres en vb 2008 ?
si oui envoyez le moi slt et meeeeeeeeeeeeeeeeeerci
bouslamti_mohamed@hotmail.com
Driss35 Messages postés 18 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 22 août 2015
22 janv. 2006 à 15:11
bonjour,
Est ce que vous avez l'algorithme en francais SVP ? si oui envoyez le moi si possible et si ca vous dérange pas merci.
driss_35@yahoo.fr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.