|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Aidez moi s'il vous plaît :'( [ Divers / Aide et documentation ] (isanonyme)
Informations & options pour cette discussion
|
samedi 1 décembre 2007 à 14:54:06 |
Aidez moi s'il vous plaît :'(

isanonyme
|
Bonjour les pros !!! ce n'est peut être pas le bon endroit, mais depuis l'autre bout de la terre, au fond de la Guadeloupe, j'ai absolument besoin d'aide. Mon souci (récurrent à priori...) convertir des nombres (monétaires) en lettres dans word, suite à une fusion avec access. J'ai bien trouvé sur le site une super formule, mais.... je ne sais pas comment la faire fonctionner. Quelqu'un aurait il la patience de m'expliquer pas à pas comment la rendre active dans word... Je vous remercie d'avance., beaucoup beaucoup beaucoup Isabelle Voici la fonction en question :
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
*// enlSve 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
|
|
|
|
dimanche 2 décembre 2007 à 15:18:03 |
Re : Aidez moi s'il vous plaît :'(

Mike Gagnon
|
function convlettre(chiffre,monai)
La fonction prend deux parametres (ou un seul). Tu peux faire apple à cette fonction comme ceci
lcValeur = convlettre(55.67,.T.) ?lcValeur
Elle devrait te retourner les mots de la valeur passé avec en plus le type de monai
Si tu ne passe pas de deuxieme parametre elle te routourne seulement les chiffres en lettres.
Mike Gagnon
|
|
|
|
lundi 3 décembre 2007 à 11:28:58 |
Re : Aidez moi s'il vous plaît :'(

isanonyme
|
Bonjour, merci pour ta réponse, mais je suis encore plus nulle que ça... je ne sais pas vraiment comment coller la fonction dans visual (je colle dans un module, je ferme et c'est tout ???)
ensuite pour faire appel à la valeur... j'insère ce que tu m'as indiqué comme ça dans le texte ??? dans un champ ? lequel ?
merci, de me répondre, je dois achever rapidement mon modèle.
Isabelle
|
|
|
|
lundi 3 décembre 2007 à 12:18:56 |
Re : Aidez moi s'il vous plaît :'(

Mike Gagnon
|
Tu pourrais par example, te créer un programme 'main' (qui est le premier à partir lorsque ton application démarre), et dans ce programme (au bas) tu copie et colle le code de ta fonction tel quel. Et lors que tu en a besoin (par example sur une forme tu as une boite numérique et une boite texte, et dans un bouton de commande to veux la traduction de ta valeur numérique), tu peux faire (dans le click du bouton de commande): thisform.text1.value = convlettre(55.67,.T.)
Mike Gagnon
|
|
|
|
mardi 4 décembre 2007 à 17:23:08 |
Re : Aidez moi s'il vous plaît :'(

isanonyme
|
merci pour ta réponse, mais ma science est plus que limitée en dehors de l'utilisation classique des logiciels... donc là, tu me parles chinois. merci quand même  Isabelle
|
|
|
|
jeudi 6 décembre 2007 à 12:10:24 |
Re : Aidez moi s'il vous plaît :'(

Mike Gagnon
|
Isabelle,
Donc vous avez compris comment faire ou non?
Mike Gagnon
|
|
|
|
vendredi 7 décembre 2007 à 23:31:38 |
Re : Aidez moi s'il vous plaît :'(

isanonyme
|
Non  Mais je vais essayer d'inventer quelque chose pour m'en sortir... De toutes façons me faut une solution... très très urgent. Merci quand même
|
|
|
|
samedi 8 décembre 2007 à 13:23:43 |
Re : Aidez moi s'il vous plaît :'(
|
|
samedi 8 décembre 2007 à 13:25:12 |
Re : Aidez moi s'il vous plaît :'(

Mike Gagnon
|
Voici la correction de la fonction. Mettez ce qui suis dans un prg et roulez a partir de la fenetre commande;
? convlettre(12345)
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="Euro"
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
|
|
|
Cette discussion est classé dans : texte, len, arangs, aexcep, aniveau
Répondre à ce message
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|