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 ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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"
"Med_405" <HMHK405@yahoo.fr> a écrit dans le message de news:
1116496863.686709.321560@z14g2000cwz.googlegroups.com...
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"
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"
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
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)
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
Med_405
Merci infiniment je vais le faire maintenant, je le vois sur le cd il n'est installé par défaut Merci, Merci
Merci infiniment je vais le faire maintenant, je le vois sur le cd il
n'est installé par défaut
Merci, Merci
Merci infiniment je vais le faire maintenant, je le vois sur le cd il n'est installé par défaut Merci, Merci
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é)
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é)
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é)