IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Conversion chiffre en lettre


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 47
    Points
    47
    Par défaut Conversion chiffre en lettre
    Bonjour

    j'ai trouver un script js sur le web qui permet de convertir les chiffre en lettre. mais ce lui la possède qq limitations:

    1- il n'affiche que 2 décimale
    2- le zéro à la fin du chiffre est ignorer

    y'a t'il un moyen de créer une fonction ou télécharger un script similaire ?

    j'aurai besoin de convertir un champ input avec le montant en chiffre vers un autre chmap input ou textarea en toute lettre afin que je puisse l'inserer dans une bdd en php.

    merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Merci pour la réponse mais malheureusement il est toujour limité a 2 décimale

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Merci pour votre aide
    j'ai trouvé la solution:

    il fallait modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	// séparation entier + décimales
    	n=n.replace(/(^0+)|(\.0+$)/g,"");
    	n=n.replace(/([.,]\d{3})\d+/,"$1");
    	n1=n.replace(/[,.]\d*/,"");
    	n2= n1!=n ? n.replace(/\d*[,.]/,"") : false;

    mais par contre
    actuellement il transmet dans un div
    moi je veux qu'il ecrit le montant dans un input ???
    comment faire svp


    merci

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    et ? tu ne peux pas le modifier ...
    vu qu'il est capable de transcrire la partie entière ....
    il peut aussi le faire pour la partie decimale sans le limiter à deux ...

    n1 = partie entière n2 partie décimale ...
    regarde le traitement infligé à n1 et fait le même pour n2 ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Février 2006
    Messages : 96
    Points : 47
    Points
    47
    Par défaut
    Bonjour

    au faite j'ai trouvé comment transformer la valeur du div en input avec la saisie a la volé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function calcule(){
    	document.getElementById("total_ch").onkeyup=function(){
    		document.getElementById("lettres").firstChild.data=trans(this.value)
    		document.getElementById("total_lt").value=document.getElementById("lettres").firstChild.data=trans(this.value)
    	}
    }
    bonne chance a tous.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour,
    Pour le teste de Milliard je fais quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function million(n){
    return n>=1 ? " Milliard";
    }
    faut il modifier un autre truc?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut Aidez moi Svp
    Bonjour,
    J'ai un autre problème c'est que j'ai plusieurs fonction "onkeyup" et lorsque je mets la fonction calcule() en "onkeyup" les autres fonctions ne marchent pas que dois je faire svp?
    Pourquoi les autre fonctions ca marchent pas?

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour
    Pourquoi les autres fonctions qui sont onkeyup ca marchent pas?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Sans voir ton code c'est un peu difficile de répondre ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour,
    Bon voila le code de mes fonctions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
     
    <script type="text/javascript">
    function format(valeur,decimal,separateur) {
    	var deci=Math.round( Math.pow(10,decimal)*(valeur-Math.floor(valeur)) );
    	var val=Math.abs(Math.floor(valeur));
    	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.abs(Math.round(valeur)); deci=0;}
    	var val_format=val+"";
    	var nb=val_format.length;
    	for (var i=1;i<4;i++) {
    		if (val>=Math.pow(10,(3*i))) {
    			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
    		}
    	}
    	if (decimal>0) {
    		if (deci>0) {
    			deci=deci.toString();
    		} else {
    			deci="";
    			for (var j=0;j<decimal;j++) deci+="0";
    		}
    		val_format=val_format+"."+deci.substring(0); 
    	}
    	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
    	return val_format;
    }
    function fun() {
    var solicite=(document.form1.mnt_solicite.value);
    var disponible=<%=rs("mnt_autorise")-utilise%>
    var utilisable=disponible-solicite
    if (disponible>solicite || disponible==solicite && solicite!=''){
    document.form1.mnt_accorde.value=format(solicite,0,' ');
    document.form1.mnt_utilisable.value=format(utilisable,0,' ');
    document.form1.mnt_accorde.style.backgroundColor="#FFFFFF";
    document.form1.mnt_utilisable.style.backgroundColor="#FFFFFF";
    }
    else if (disponible<solicite){
    document.form1.mnt_accorde.style.backgroundColor="red";
    document.form1.mnt_utilisable.style.backgroundColor="red";
    document.form1.mnt_accorde.value=format(solicite,0,' ');
    document.form1.mnt_utilisable.value=format(utilisable,0,' ');
    }
    }
    function test(mnt_solicite){
    if (document.form1.mnt_solicite.value=="") {alert("Veuillez remplir le Montant Sollicite");
    document.form1.mnt_solicite.focus();
    return false}
    return true
    }
    window.onload=lod;
    function lod(){
    var disponible=<%=rs("mnt_autorise")-utilise%>
    if (document.form1.mnt_solicite.value==''){
    document.getElementById('submit1').disabled='disabled';
    document.getElementById('submit6').disabled ='disabled';
    document.form1.mnt_solicite.focus();
    }	
    else if(disponible==0){
    document.getElementById('submit1').disabled='disabled';
    document.getElementById('submit6').disabled ='disabled';
    document.form1.mnt_solicite.focus();
    }
    else if(disponible<0){
    document.getElementById('submit1').disabled='disabled';
    document.getElementById('submit6').enabled =true;
    document.form1.mnt_solicite.focus();
    }
    else{
    document.getElementById('submit1').enabled =true;
    document.getElementById('submit6').disabled ='disabled';
    document.form1.mnt_solicite.focus();
    }
    }
    function interd(){
    var solici=(document.form1.mnt_solicite.value);
    var disponible=<%=rs("mnt_autorise")-utilise%>
    if (solici=='' || solici==0){
    document.getElementById('submit1').disabled ='disabled';
    document.getElementById('submit6').disabled ='disabled';
    }
    else if (solici>disponible){
    document.getElementById('submit1').disabled ='disabled';
    document.getElementById('submit6').disabled =false;
    getFocusField('submit6');
    }
    else if(solici<disponible || solici==disponible){
    document.getElementById('submit1').disabled =false;
    document.getElementById('submit6').disabled ='disabled';
    }
    }
    function isNumeric(mnt_solicite)
    {
    numChars = "0123456789";
    var isNum = true;
    var index = 0;
    while ((index < document.form1.mnt_solicite.value.length) && (isNum))
         {
         isNum = (numChars.indexOf(document.form1.mnt_solicite.value.charAt(index)) != -1);
         index ++;
         }
    if (!isNum)
         {
         window.alert("Erreur ! Saisissez un nombre entier");
    	 document.form1.mnt_solicite.value='';
    	 document.form1.mnt_accorde.value='';
    	 document.form1.mnt_utilisable.value='';
    	 document.getElementById('submit1').disabled ='disabled';
    document.getElementById('submit6').disabled ='disabled';
    	 document.form1.mnt_accorde.style.backgroundColor="white";
    document.form1.mnt_utilisable.style.backgroundColor="white";
    	 document.form1.mnt_solicite.focus();
    	 return false
         }
    	 return true
    }
    function vider(){
    var solicite=(document.form1.mnt_solicite.value);
    if (solicite==''){
    document.form1.mnt_accorde.style.backgroundColor="white";
    document.form1.mnt_utilisable.style.backgroundColor="white";
    document.form1.mnt_accorde.value='';
    document.form1.mnt_utilisable.value='';
    document.getElementById('submit1').disabled ='disabled';
    document.getElementById('submit6').disabled ='disabled';
    }
    }
    var res, plus, diz, s, un, mil, mil2, ent, deci, centi, pl, pl2, conj;
     
    var t=["","Un","Deux","Trois","Quatre","Cinq","Six","Sept","Huit","Neuf"];
    var t2=["Dix","Onze","Douze","Treize","Quatorze","Quinze","Seize","Dix-sept","Dix-huit","Dix-neuf"];
    var t3=["","","Vingt","Trente","Quarante","Cinquante","Soixante","Soixante","Quatre-vingt","Quatre-vingt"];
     
    function calcule(){
    	document.getElementById("mnt_solicite").onblur=function(){
    		document.getElementById("lettres").firstChild.data=trans(this.value);
    		document.getElementById("text").value=trans(this.value);
    	}
    }
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // traitement des deux parties du nombre;
    function decint(n){
     
    	switch(n.length){
    		case 1 : return dix(n);
    		case 2 : return dix(n);
    		case 3 : return cent(n.charAt(0)) + " " + decint(n.substring(1));
    		default: mil=n.substring(0,n.length-3);
    			if(mil.length<4){
    				un= (mil==1) ? "" : decint(mil);
    				return un + mille(mil)+ " " + decint(n.substring(mil.length));
    			}
    			else{	
    				mil2=mil.substring(0,mil.length-3);
    				return decint(mil2) + million(mil2) + " " + decint(n.substring(mil2.length));
    			}
    	}
    }
     
     
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // traitement des nombres entre 0 et 99, pour chaque tranche de 3 chiffres;
    function dix(n){
    	if(n<10){
    		return t[parseInt(n)]
    	}
    	else if(n>9 && n<20){
    		return t2[n.charAt(1)]
    	}
    	else {
    		plus= n.charAt(1)==0 && n.charAt(0)!=7 && n.charAt(0)!=9 ? "" : (n.charAt(1)==1 && n.charAt(0)<8) ? " et " : "-";
    		diz= n.charAt(0)==7 || n.charAt(0)==9 ? t2[n.charAt(1)] : t[n.charAt(1)];
    		s= n==80 ? "s" : "";
     
    		return t3[n.charAt(0)] + s + plus + diz;
    	}
    }
     
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // traitement des mots "cent", "mille" et "million"
    function cent(n){
    return n>1 ? t[n]+ " Cent" : (n==1) ? " Cent" : "";
    }
     
    function mille(n){
    return n>=1 ? " Mille" : "";
    }
     
    function million(n){
    return n>=1 ? " Millions" : " Million";
    }
     
     
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // conversion du nombre
    function trans(n){
     
    	// vérification de la valeur saisie
    	if(!/^\d+[.,]?\d*$/.test(n)){
    		return ""
    	}
     
    	// séparation entier + décimales
    	n=n.replace(/(^0+)|(\.0+$)/g,"");
    	n=n.replace(/([.,]\d{2})\d+/,"$1");
    	n1=n.replace(/[,.]\d*/,"");
    	n2= n1!=n ? n.replace(/\d*[,.]/,"") : false;
     
    	// variables de mise en forme
    	ent= !n1 ? "" : decint(n1);
    	deci= !n2 ? "" : decint(n2);
    	if(!n1 && !n2){
    		return  "Entrez une valeur non nulle!"
    	}
    	conj= !n2 || !n1 ? "" : "  et ";
    	euro= !n1 ? "" : !/[23456789]00$/.test(n1) ? " Euro" : " Euro";
    	centi= !n2 ? "" : " centime";
    	pl=  n1>1 ? "s" : "";
    	pl2= n2>1 ? "s" : "";
     
    	// expression complète en toutes lettres
    	return (" " + ent + euro + pl + conj + deci + centi + pl2).replace(/\s+/g," ").replace("cent s E","cents E") ;
     
    }
     </script>
    code de zone de texte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="mnt_solicite" type="text" id="mnt_solicite" style="background-color:#FFFFFF; border:0px;text-align:center; font-weight:bold; text-align:right;" onblur="fun(),vider(),interd(),isNumeric(this.mnt_solicite)" onkeypress="interd(),isNumeric(this.mnt_solicite)" onkeyup="fun(),interd(),vider(),isNumeric(this.mnt_solicite),calcule(this.mnt_solicite)" size="18" maxlength="9"/>
    Tout est ca marche avant mettre la fonction calcule(), je pense que cette ligne qui fait un problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("mnt_solicite").onkeyup=function(){
    Merci de votre aide.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour
    Bon voila j'ai posté le code et tjrs y a pas de réponse
    mais fonctions onkeyup ne marchent pas, juste celle du fonction de convertion chiffre en lettre qui marche.

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    heu ; au lieu de , pour enchainer des fonctiosn dasn les évènements ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Points : 180
    Points
    180
    Par défaut
    Bonjour
    J'ai fais ce que tu m'a dit mais ca marche toujours pas, il donne la priorité a la fonction calcule qu'elle a l'évènement directement dans le code "document.getElementById("mnt_solicite").onkeyup=function()"
    comment je peux changer cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function calcule(){
    	document.getElementById("mnt_solicite").onkeyup=function(){
    		document.getElementById("lettres").firstChild.data=trans(this.value);
    		document.getElementById("text").value=trans(this.value);
    	}
    }
    de mettre sans évènement dans la zone de texte comme ca.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="mnt_solicite" type="text" id="mnt_solicite" style="background-color:#FFFFFF; border:0px;text-align:center; font-weight:bold; text-align:right;" onblur="fun();vider();interd()" onkeypress="interd()" onkeyup="fun();interd();vider();isNumeric(this.mnt_solicite);calcule(this.mnt_solicite);" size="18" maxlength="9"/>
    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SQL Conversion chiffre en lettre
    Par laurep dans le forum Débuter
    Réponses: 11
    Dernier message: 06/10/2012, 16h40
  2. conversion chiffres en lettres
    Par djazair dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/07/2007, 18h24
  3. Réponses: 1
    Dernier message: 30/05/2007, 18h19
  4. conversion chiffre en lettre
    Par dejiein dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/06/2006, 09h50
  5. conversion chiffre en lettre
    Par arezki76 dans le forum Oracle
    Réponses: 3
    Dernier message: 17/12/2005, 12h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo