Bonjour, je cherchais un moyen d’automatiser le processus de transformation de chiffres en toutes lettres dans google spreadsheet et je suis tombée sur un javascript… Malheureusement pour moi je ne m’y connais pas en javascript. Je voudrais savoir si le code dessous est utilisable en tant que macro de google et comment l’utiliser sans passer par la publication sur Google Apps Market… Merci par avance de votre aide.
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 | <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Nouvelle page 1</title> <script type="text/javascript"> 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"]; window.onload=calcule function calcule(){ document.getElementById("t").onkeyup=function(){ document.getElementById("lettres").firstChild.data=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 "L'expression entrée n'est pas un nombre." } // 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" : "s 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> </head> <body> <input type='texte' id='t' /> <div id='lettres' style='font-family:verdana; font-size:11px;'> </div> </body> </html> |
+0
-0