OVH Cloud OVH Cloud

Conertir montant Chiffres en lettres

5 réponses
Avatar
Med_405
salut les programmeurs Windev
est ce que vous pouvez m'aider pour faire une (des) fonction(s) pour
convertir un montant donn=E9 (chiffres) en montant en lettres, et merci
infiniement.
j'ai boucoup essay=E9 ...

5 réponses

Avatar
dany
"Med_405" a écrit dans le message de news:

salut les programmeurs Windev
est ce que vous pouvez m'aider pour faire une (des) fonction(s) pour
convertir un montant donné (chiffres) en montant en lettres, et merci
infiniement.
j'ai boucoup essayé ...

voir l'exemple livré avec Windev "Nombre en lettres"
Avatar
Med_405
SVP quelle version de windev, j ai la v9
Avatar
ManuPavy
Med_405 wrote:
SVP quelle version de windev, j ai la v9



Il est également présent dans la 9.
Mais effectivement, il n est pas visible par défaut (j ai installé à
partir de la pré version, du coup il faut rechercher les exemples sur le cd)

Manu
Avatar
Med_405
Merci infiniment je vais le faire maintenant, je le vois sur le cd il
n'est installé par défaut
Merci, Merci
Avatar
Romain PETIT
Med_405 a formulé ce jeudi :
SVP quelle version de windev, j ai la v9



D'après cette page, http://www.pcsoft.fr/st/nouveautes-st.html
il s'agit d'un exemple livré en standard dans la 9.
"Nombre en lettres"

Sinon, Pascal Raulet avait écrit ses propres routines (il y a 3 ans).
Cf ci-dessous un de ses posts sur la ML (retrouvé grace à WDMLIST ou
via http://windev.wdscript.com/)
Attention, c'est du WD55, donc peut être des modifs mineures à apporter

<citation>

Date : 07/08/2002 à 18:25:00
Emetteur : Pascal Raulet
Sujet : Re:[WD55] Montant en lettres
Clés : WD55; MONTANT; LETTRE;

Bonjour,

La fonction de conversion en toutes lettres existe quelque part dans le
guide, mais elle ne gère pas les centimes.

Voici la mienne, que j'ai déjà donnée ici, et qu'on m'a accusé d'avoir
pompée je ne sais où pour me faire "mousser" (çà m'est resté en travers
de
la gorge). Quoi qu'il en soit je maintiens qu'elle est de moi, et
d'ailleurs
elle est assez bourin puisque je l'avais écrite en Turbo Pascal à une
époque
héroïque et je l'ai juste adaptée. En tout cas elle fonctionne avec des
nombres positifs ou nuls inférieurs au milliard avec deux décimales de
précision, en francs ou en euros.

Ci-dessous les deux fonctions que vous pouvez mettre en procédures
globales
ou ailleurs.

Cordialement,

Pascal Raulet


-----


fOnction Lettres(p_valeur,p_monnaie) //Renvoie un montant en toutes
lettres
// p_valeur contient le montant à exprimer en lettres, c'est en général
un
réel
// p_monnaie peut valoir 1 pour un montant en francs, 2 pour un montant
en
euros

l_trio est un entier long
l_nbr,l_let est une chaine

l_nbr=verschaine(p_valeur,"12,2f")
si (p_valeur<0) ou (p_valeur>999999999.99) alors renvoyer
repete("#",12)
l_let=""
// les millions
l_trio=val(milieu(l_nbr,1,3))
si l_trio>0 alors
l_let=l_let+let3(l_trio)+" million"
si l_trio>=2 alors l_let=l_let+"s"
l_let=sansespace(l_let)+" "
fin
// les milliers
l_trio=val(milieu(l_nbr,4,3))
si l_trio>0 alors
si l_trio=1 alors
l_let=l_let+" mille"
sinon
l_let=l_let+let3(l_trio)+" mille"
fin
fin
l_let=sansespace(l_let)+" "
// les unités
l_trio=val(milieu(l_nbr,7,3))
l_let=sansespace(l_let+let3(l_trio))+" "
si partieentiere(p_valeur)=0 alors l_let="zéro "
selon p_monnaie
cas 1: l_let=l_let+"franc"
cas 2: l_let=l_let+"euro"
fin
si p_valeur>=2 alors l_let=l_let+"s"
l_let=sansespace(l_let)+" "
// les décimales
l_trio=val(milieu(l_nbr,11,2))
si l_trio>0 alors
l_let=l_let+let3(l_trio)+" "
selon p_monnaie
cas 1: l_let=l_let+"centime"
cas 2: l_let=l_let+"cent"
fin
si l_trio>=2 alors l_let=l_let+"s"
fin
renvoyer sansespace(l_let)


-----


Procedure Let3(p_trois) //Traite un groupe de 3 chiffres (sert à la
fonction
LETTRES)
ll_uni est un booleen
ll_car,ll_car2 est un caractere
ll_tmp,ll_let est une chaine

ll_let=""
ll_tmp=verschaine(p_trois,"3,0f")
ll_car=gauche(ll_tmp,1)
selon ll_car
cas "9": ll_let=ll_let+"neuf cent"
cas "8": ll_let=ll_let+"huit cent"
cas "7": ll_let=ll_let+"sept cent"
cas "6": ll_let=ll_let+"six cent"
cas "5": ll_let=ll_let+"cinq cent"
cas "4": ll_let=ll_let+"quatre cent"
cas "3": ll_let=ll_let+"trois cent"
cas "2": ll_let=ll_let+"deux cent"
cas "1": ll_let=ll_let+"cent"
fin
si (p_trois>199) et (val(droite(ll_tmp,2))=0) alors ll_let=ll_let+"s"
ll_let=sansespace(ll_let)+" "
ll_uni=vrai;
ll_car=milieu(ll_tmp,2,1)
ll_car2=milieu(ll_tmp,3)
selon ll_car
cas "8","9": ll_let=ll_let+"quatre vingt"
cas "6","7": ll_let=ll_let+"soixante"
cas "5": ll_let=ll_let+"cinquante"
cas "4": ll_let=ll_let+"quarante"
cas "3": ll_let=ll_let+"trente"
cas "2": ll_let=ll_let+"vingt"
fin
ll_let=sansespace(ll_let)+" "
si (ll_car="1") ou (ll_car="7") ou (ll_car="9") alors
selon ll_car2
cas "9": ll_let=ll_let+"dix neuf"
cas "8": ll_let=ll_let+"dix huit"
cas "7": ll_let=ll_let+"dix sept"
cas "6": ll_let=ll_let+"seize"
cas "5": ll_let=ll_let+"quinze"
cas "4": ll_let=ll_let+"quatorze"
cas "3": ll_let=ll_let+"treize"
cas "2": ll_let=ll_let+"douze"
cas "1": ll_let=ll_let+"onze"
cas "0": ll_let=ll_let+"dix"
fin
ll_let=sansespace(ll_let)+" "
ll_uniúux
FIN
si ll_uni alors
selon ll_car2
cas "9": ll_let=ll_let+"neuf"
cas "8": ll_let=ll_let+"huit"
cas "7": ll_let=ll_let+"sept"
cas "6": ll_let=ll_let+"six"
cas "5": ll_let=ll_let+"cinq"
cas "4": ll_let=ll_let+"quatre"
cas "3": ll_let=ll_let+"trois"
cas "2": ll_let=ll_let+"deux"
cas "1": si p_trois>1 alors
ll_let=ll_let+"et un"
sinon
ll_let=ll_let+"un"
fin
FIN
fin
renvoyer sansespace(ll_let)

</citation>

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)