Fonction de conversion de chiffres en lettres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 241 fois - Téléchargée 33 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
-
salam
merci
cs_aumeric
Messages postés
15
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
19 décembre 2010
-
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
-
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
-
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.