Accueil > Forum > > > > Aidez moi s'il vous plaît :'(
Aidez moi s'il vous plaît :'(
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ée dans : texte, len, arangs, aexcep, aniveau
Répondre à ce message
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|