begin process at 2010 02 09 18:43:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Foxpro

 > 

Divers

 > 

Aide et documentation

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

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

    Membre Club
    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

    Membre Club
    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 :'(

    Mike Gagnon

    Membre Club


    Mike Gagnon
    samedi 8 décembre 2007 à 13:25:12 | Re : Aidez moi s'il vous plaît :'(

    Mike Gagnon

    Membre Club
    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

    Sujets en rapport avec ce message

    Mettre du texte dans un rapport programmaticilement [ par jee0404 ] Bonjour,              Je voudrais faire un rapport .frx mais je voudrais le remplire au moyensde lignes de code et pouvoir après l'imprimer.    & exportation .dbf vers fichier texte délimités ! [ par rubix2 ] p'tite question, j'ai VFP6. Je voudrais exporter ma table .dbf en texte délimité par un point virgule. Mais en utilisant l'assistant d'exportation de Fonction exécutée qui s'affiche dans un formulaire [ par SiCK_Boy ] J'ai un formulaire. Il contient un label, et une zone de texte de type EditBox. (D'autres trucs aussi, mais pour expliquer mon problème, ça suffit).Da ajouter une fonction dans foxpro [ par ouadie_karouite ] Bonjour a tous les spécialistes de Foxpro ,On sait que visuel foxpro contient des fonctions prédefinies comme between() val() str() chaque fonction re


    Nos sponsors


    Sondage...

    Comparez les prix

    CalendriCode

    Février 2010
    LMMJVSD
    1234567
    891011121314
    15161718192021
    22232425262728

    Consulter la suite du CalendriCode

     
    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,905 sec (3)

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