Aidez moi s'il vous plaît :'(

isanonyme Messages postés 4 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007 - 1 déc. 2007 à 14:54
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 - 8 déc. 2007 à 13:25
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 :


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

8 réponses

Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
2 déc. 2007 à 15:18
<li>function convlettre(chiffre,monai) </li>
 


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
0
isanonyme Messages postés 4 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
3 déc. 2007 à 11:28
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
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
3 déc. 2007 à 12:18
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
0
isanonyme Messages postés 4 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
4 déc. 2007 à 17:23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
6 déc. 2007 à 12:10
Isabelle,

Donc vous avez compris comment faire ou non?

Mike Gagnon
0
isanonyme Messages postés 4 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 7 décembre 2007
7 déc. 2007 à 23:31
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
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
8 déc. 2007 à 13:23
Mike Gagnon
0
Mike Gagnon Messages postés 381 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 24 octobre 2013 2
8 déc. 2007 à 13:25
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
0
Rejoignez-nous