|
Convertir Numérique En Lettres ! |
Started by leplaidn, Apr., 14 2005 5:55 PM - 8 replies |
| |
| | | |
|
| |
Posted on April, 14 2005 - 5:55 PM |
Bonjour,
je cherche a convertir un nombre (monétaire) en lettres (style Deux milles trois cent ...).
Je voulais savoir si par hasard cette fonction n existerait pas sous winDev ? (j ai bien chercher mais rien trouve, notemment numériqueverschaine qui n a pas de format "lettre")
En fait on dispose d une fonction en clipper mais il va falloir que je me plonge dedans pour faire le transfert sous WD, je prefer eviter si possible ! (je sais meme pas ce que c est clipper ! lol)
Voila merci ! Damien. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 6:26 PM |
Je crois qu'il va falloir mettre la main à la pâte... Fonction pas trop dur a développé cela dit, mais un peu longue... |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 6:36 PM |
leplaidn a utilisé son clavier pour écrire :
Bonjour,
je cherche a convertir un nombre (monétaire) en lettres (style Deux milles trois cent ...).
Je voulais savoir si par hasard cette fonction n existerait pas sous winDev ? (j ai bien chercher mais rien trouve, notemment numériqueverschaine qui n a pas de format "lettre")
En fait on dispose d une fonction en clipper mais il va falloir que je me plonge dedans pour faire le transfert sous WD, je prefer eviter si possible ! (je sais meme pas ce que c est clipper ! lol)
Voila merci ! Damien.
Fonction que j'utilise (provenant d'exemple WD5
************** Fonction NombreEnLettre **************************** FONCTION NombreEnLettre(valeur)
// Traitement uniquement d'une partie entière
szChaine,szDroite, szToken, resultat, szInter sont des chaînes nChiffre1,nChiffre2 sont des chaînes nChiffre est une chaîne i,z,j,k est un entier
resultat="" nChiffre=valeur nChiffre=SansEspace(nChiffre)
SI Taille(nChiffre)>0 ALORS // verif du signe SI nChiffre[[1]]="+" OU nChiffre[[1]]="-" ALORS resultat=nChiffre[[1]] nChiffre=Milieu(nChiffre,2) FIN
k=Position(nChiffre,",") SI k<>0 ALORS nChiffre1=Milieu(nChiffre,Max(k-12,1),k-1) nChiffre2=Milieu(nChiffre,k+1,k+12) k=2 SINON nChiffre1=Droite(nChiffre,18) nChiffre2="" k=1 FIN
POUR j=1 A k SI j=1 ALORS szChaine=nChiffre1 // traitement des zéros après la virgule TANTQUE szChaine[[1]]="0" szChaine=Milieu(szChaine,2) FIN SI szChaine="" ALORS resultat=resultat+"Z" SINON szChaine=nChiffre2 szInter="," // traitement des zéros après la virgule TANTQUE szChaine[[1]]="0" szInter=szInter+"Z" szChaine=Milieu(szChaine,2) FIN SI szChaine<>"" ALORS resultat=resultat+szInter FIN FIN SI szChaine<>"" ALORS
szDroite=SansEspace(Droite(szChaine,3)) z=Taille(szChaine)-3 SI z>0 ALORS szChaine=Gauche(szChaine,Taille(szChaine)-3) SINON szChaine="" FIN szToken="" i=0 TANTQUE szDroite<>"" Lecture(szDroite,i,szToken) i++ szDroite=SansEspace(Droite(szChaine,3)) z=Taille(szChaine)-3 SI z>0 ALORS szChaine=Gauche(szChaine,Taille(szChaine)-3) SINON szChaine="" FIN FIN SI szToken="" ALORS resultat=resultat+"Z" SINON resultat=resultat+szToken FIN FIN FIN FIN
resultat=Interprete(resultat) RENVOYER resultat
******************************************* Fonction Interprete *********************************** FONCTION Interprete(szToken)
i,j est un entier c, c0 ,c1 sont des caractères ch est une chaîne
i=Taille(szToken)
// pour avoir toujours un caractère après celui en cours szToken=szToken+" " c0=" " // Pour le traitement de 21, 31, 41, 51, 61 c1=" " POUR j=1 A i
c=szToken[[j]]
SELON c CAS "1" // gère le cas 21, 31, 41, 51, 61 (teste le caractère précédent) SI Position("GHIJK",c0)>0 ALORS ch=ch+"et " ch=ch+"un" CAS "2" : ch=ch+"deux" CAS "3" : ch=ch+"trois" CAS "4" : ch=ch+"quatre" CAS "5" : ch=ch+"cinq" CAS "6" : ch=ch+"six" CAS "7" : ch=ch+"sept" CAS "8" : ch=ch+"huit" CAS "9" : ch=ch+"neuf" CAS "0" : ch=ch+"dix" CAS "A" : ch=ch+"onze" CAS "B" : ch=ch+"douze" CAS "C" : ch=ch+"treize" CAS "D" : ch=ch+"quatorze" CAS "E" : ch=ch+"quinze" CAS "F" : ch=ch+"seize" CAS "G" : ch=ch+"vingt" CAS "H" : ch=ch+"trente" CAS "I" : ch=ch+"quarante" CAS "J" : ch=ch+"cinquante" CAS "K" : ch=ch+"soixante" CAS "L" : SI Position("MNO, ",szToken[[j+1]])=0 ALORS ch=ch+"quatre-vingt" SINON ch=ch+"quatre-vingts" FIN CAS "c" : SI Position("MNO, ",szToken[[j+1]])=0 OU Position("23456789",c0)=0 ALORS ch=ch+"cent" SINON ch=ch+"cents" FIN CAS "M" : ch=ch+"mille" CAS "N" : SI c0="1" ALORS SI Position("GHIJKLc",c1)>0 ch=ch+"millions" SINON ch=ch+"million" FIN SINON ch=ch+"millions" FIN CAS "O" : SI c0="1" ALORS SI Position("GHIJKLc",c1)>0 ch=ch+"milliards" SINON ch=ch+"milliard" FIN SINON ch=ch+"milliards" FIN CAS "Z" : ch=ch+"zéro" CAS "+" : ch=ch+"Plus" CAS "-" : ch=ch+"Moins" CAS "," : ch=ch+"virgule" FIN c1=c0 //memorise le précédent du précédent c0=c // Mémorise le précédent ch=ch+" "
FIN RENVOYER ch
*************************************************************************** Il y a sans doute possibilité d'améliorer, mais je n'ai pas eu l'ocassion de m'y repenché vu que la conversion -> WD9 ne m'a pas posé de problème.
-- Pascal N0.pascal.SPAM@efpe.biz Ne garder que le prénom pour me joindre |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 6:50 PM |
j'ai développé une classe sous vb. juste le temps de la retrouver. |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 6:52 PM |
Bonjour ! Tu peux t'inspirer de l'exemple : WD Nombre en lettres
(A partir de consulter le Guide tu fais rechercher nombre en lettre tu trouveras l'exemple !) J'espère t'avoir aidé ! |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 6:53 PM |
Bonjour ! Tu peux t'inspirer de l'exemple : WD Nombre en lettres
(A partir de consulter le Guide tu fais rechercher nombre en lettre tu trouveras l'exemple !) J'espère t'avoir aidé ! |
| |
| |
| | | |
|
| | |
| |
Posted on April, 14 2005 - 7:51 PM |
Dans les exemples didactiques de windev9, il y a un exemple qui traite de cela \windev9\exemples\exemples didactiques\WD Nombre en lettres
Cdt Mohamed Oulmouden |
| |
| |
| | | |
|
| | |
| |
Posted on April, 15 2005 - 11:26 AM |
Et bien un GRAND MERCI a tous !
Vous me depannez pas mal j avais vraiment pas le temps de m y pencher franchement !
MeaCulpa je n avais vraiment pas pense a regarder les exemple didactiques ! Je vous donnerai la chose une fois finie ...
Merci encore, Damien |
| |
| |
| | | |
|
| | |
| |
Posted on April, 15 2005 - 8:41 PM |
Salut
Attention aux nombreuses exceptions qui font le charme fou de notre belle langue :
par exemple en plus de ceux figurant déjà dans une réponse précedante
soixante et onze et non pas soixante un ni soixante onze soixante-douze et non pas soixante dix deux
idem soixante seize et non pas soixante dix et six
etc....
Bon dév courageux |
| |
| |
| | | |
|
| | | | |
| | |
|