begin process at 2012 05 22 12:28:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Prog. Objet

 > FONCTION DE CONVERSION DE CHIFFRES EN LETTRES

FONCTION DE CONVERSION DE CHIFFRES EN LETTRES


 Description

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

  • 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
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





 Sources du même auteur

Source avec Zip Source avec une capture ETAT DYNAMIQUE
UN AUTRE CALENDRIER
CALCUL DE CLE IBAN
FTP AVEC THERMOMETRE
CREER UNE TABLE CONTENANT LA LITES COMPLÈTE DES OBJETS CONTE...

 Sources de la même categorie

UN AUTRE CALENDRIER par aumeric
CALCUL DE CLE IBAN par aumeric
CALCULER LE NOMBRE D'HEURES DE NUITS D'UN CRÉNEAU HORAIRE par aumeric
RECHERCHE D'UNE VALEUR DE CLEF DANS LE REGISTRE par johnmary
Source avec Zip EXPÉDIER UN EMAIL : VFPWINSOCK / VFPSENDMAIL : EXPÉDITION DE... par FrancisFaure

 Sources en rapport avec celle ci

AUTOMATION DE WORD AVEC VFP par AbaqueInside

Commentaires et avis

Commentaire de Driss35 le 22/01/2006 15:11:26

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

Commentaire de sami1yousef le 29/04/2012 00:59:08

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

Commentaire de aumeric le 29/04/2012 19:51:45

Bonjour
il fonctionne sous vb 2008 et 2010 J'ai mis la source sur www.strataframe.fr
Cordialement

Aumeric

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

problème d'arrondisement de chiffre [ par jee0404 ] bonjour,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Je suis entraint de migr&#233; un programme en foxpro 2.6 vers la version8. conversion date [ par ducker88 ] Bonjour,Existe t'il une fonction foxpro qui permette de transformer une date du format JJ/MM/AAAA vers le format AAAA-MM-JJ ?duck88 formation d'une feuille excel [ par jee0404 ] Bonjour,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Il faut que je programme un module qui g&#233;n&#233;re une feu Besoin d'aide pour une recherche [ par zxr_stinger ] Bonjour à tousJ'ai besoin de faire un "set filter to " dans mon champ "nom" uniquement sur la première lettre de l'enregistrement.Pour être plus clair


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales