PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → [WD7.5] Comment écrire un nombre en lettre ?
[WD7.5] Comment écrire un nombre en lettre ?
Débuté par manu, 23 juil. 2004 15:35 - 6 réponses
Posté le 23 juillet 2004 - 15:35
Bonjour
Existe-t-il une fonction permettant d'écrire un nombre en lettre ?
exemple pour 9845 la fonction renverrai la chaine :
"neuf mille huit cent quarante-cinq"
(pour info mon client veut que le montant de la facture soit écrit en chiffres
et en lettres lors des éditions)
merci de m'aider.
cordialement
manu
Posté le 23 juillet 2004 - 17:09
"manu" <enj.manu026@netcourrier.com> a écrit dans le message de
news:4100f814$1@news.pcsoft.fr...


Bonjour
Existe-t-il une fonction permettant d'écrire un nombre en lettre ?
exemple pour 9845 la fonction renverrai la chaine :
"neuf mille huit cent quarante-cinq"
(pour info mon client veut que le montant de la facture soit écrit en

chiffres
et en lettres lors des éditions)
merci de m'aider.
cordialement
manu


tu as un exemple dans windev : WD7 Nombre en lettres
Posté le 23 juillet 2004 - 17:10
Voici une procédure qui devrait vous convenir !


PROCEDURE nombre_en_lettres_FR(nel_valeur,nel_pays="BE")
// Conversion en lettres d'une valeur en euros (nel_valeur)
// si nel_pays="BE" (par défaut) alors 70=septante et 90=nonante
// sinon 70=soixante dix et 90=quatre-vingt dix
// Rem : Mille --> Toujours invariable
// Cent --> Prends "s" si rien derrière --> deux cents mille
// deux cent six mille

nel_ch1 est une chaîne="un,deux,trois,quatre,cinq,six,sept,huit,neuf,dix,onze,douze,treize,quatorze,quinze,seize,dix
sept,dix huit,dix neuf"
nel_ch2 est une chaîne="dix,vingt,trente,quarante,cinquante,soixante,septante,quatre-vingt,nonante"
nel_ch3 est une chaîne=",mille,million,milliard,trillion"

nel_wch est une chaîne=NumériqueVersChaine(nel_valeur,"021.2f")
nel_partie_entiere est une chaîne=ExtraitChaîne(nel_wch,1,".")
nel_partie_decimale est une chaîne=ExtraitChaîne(nel_wch,2,".")

nel_wch2 est une chaîne
n1 est un entier

i est un entier=1
j est un entier=6
BOUCLE
// Centaine(s)
n1=Val(nel_partie_entiere[[i]])
SI n1>0
SI n1>1 ALORS nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",")
nel_wch2+=" cent"
SI Val(nel_partie_entiere[[i+1 sur 2]])=0 ET n1>1 ALORS nel_wch2+="s"
FIN
// Dizaine(s) et unité(s)
n1=Val(nel_partie_entiere[[i+1 sur 2]])
SI n1<>0
SI n1<20
SI Val(nel_partie_entiere[[i sur 3]])>1 OU j<>2 ALORS nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",")
SINON
n1=Val(nel_partie_entiere[[i+1]])
SI nel_pays<>"BE" ET (n1=7 OU n1=9) //spécial France
nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1-1,",")+...
" "+ExtraitChaîne(nel_ch1,10+Val(nel_partie_entiere[[i+2]]),",")
SINON
nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1,",")
n1=Val(nel_partie_entiere[[i+2]])
SI n1<>0 ALORS
SI n1=1 ALORS nel_wch2+=" et"
nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",")
FIN
FIN
FIN
FIN
// Millier(s),Million(s),Milliard(s) ...
n1=Val(nel_partie_entiere[[i sur 3]])
SI n1<>0 ET j>1 ALORS
nel_wch2+=" "+ExtraitChaîne(nel_ch3,j,",")
SI n1>1 ET j>2 nel_wch2+="s"
FIN

j--
i+=3

SI i>Taille(nel_partie_entiere) SORTIR
FIN

SI Val(nel_partie_entiere)>0
nel_wch2+=" euro" //franc
SI Val(nel_partie_entiere)>1 ALORS nel_wch2+="s"
FIN

// Gestion des décimales
n1=Val(nel_partie_decimale)
SI n1<>0
SI n1<20
nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",")
SINON
n1=Val(nel_partie_decimale[[1]])
SI nel_pays<>"BE" ET (n1=7 OU n1=9) //spécial France
nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1-1,",")+...
" "+ExtraitChaîne(nel_ch1,10+Val(nel_partie_decimale[[2]]),",")
SINON
nel_wch2+=" "+ExtraitChaîne(nel_ch2,n1,",")
n1=Val(nel_partie_decimale[[2]])
SI n1<>0
SI n1=1 nel_wch2+=" et"
nel_wch2+=" "+ExtraitChaîne(nel_ch1,n1,",")
FIN
FIN
FIN
nel_wch2+=" cent" //centime
SI Val(nel_partie_decimale)>1 nel_wch2+="s"
FIN

RENVOYER nel_wch2[[2 A]]
Posté le 23 juillet 2004 - 17:10
Bonjour
Il existe un exemple WD7 Nombre en lettres
Bon développement
"manu" <enj.manu026@netcourrier.com> a écrit dans le message de news:
4100f814$1@news.pcsoft.fr...


Bonjour
Existe-t-il une fonction permettant d'écrire un nombre en lettre ?
exemple pour 9845 la fonction renverrai la chaine :
"neuf mille huit cent quarante-cinq"
(pour info mon client veut que le montant de la facture soit écrit en

chiffres
et en lettres lors des éditions)
merci de m'aider.
cordialement
manu
Posté le 23 juillet 2004 - 17:38
PC Soft propose une application exemple dans ce sens,
MAIS il me semble que officiellement ( y compris trésor publique ) depuis
longtemps les documents produits par informatique sont dispensés de cette
obligation sous réserve de complèter à gauche par des astérisques.
Robor

"manu" <enj.manu026@netcourrier.com> wrote:
Bonjour
Existe-t-il une fonction permettant d'écrire un nombre en lettre ?
exemple pour 9845 la fonction renverrai la chaine :
"neuf mille huit cent quarante-cinq"
(pour info mon client veut que le montant de la facture soit écrit en chiffres
et en lettres lors des éditions)
merci de m'aider.
cordialement
manu
Posté le 26 juillet 2004 - 11:38
merci à tous pour votre aide !
Posté le 04 août 2004 - 15:11
je devlop 1 appli qui utilise des factures en arabe
peut on modifier votre code pour qui'l puis arret le montant d'une facture
en arabe merci