
Répondre à: Réécrire un montant en lettres
Voilà un nouveau code, après il y a un peu de bidouillage et je suis pas un pro donc je garantis pas que ça fonctionne à 100%
<pre class=”language-javascript”>
function main(workbook: ExcelScript.Workbook, nombre: number) {
return replaceResult(numberToWordsFr(nombre))
}
function numberToWordsFr(num: number): string {
const units = ['zero', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf'];
const tens = ['', 'dix', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingt', 'quatre-vingt-dix'];
const teens = ['dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf'];if (num < 10) {
return units[num];
} else if (num < 20) {
return teens[num - 10];
} else if (num < 100) {
let unit = num % 10;
let ten = Math.floor(num / 10);
return tens[ten] + (unit > 0 ? '-' + units[unit] : '');
} else if (num < 1000) {
let hundred = Math.floor(num / 100);
let remainder = num % 100;
return units[hundred] + ' cent' + (remainder > 0 ? ' ' + numberToWordsFr(remainder) : '');
} else if (num < 1000000) {
let thousand = Math.floor(num / 1000);
let remainder = num % 1000;
return numberToWordsFr(thousand) + ' mille' + (remainder > 0 ? ' ' + numberToWordsFr(remainder) : '');
} else if (num < 1000000000) {
let million = Math.floor(num / 1000000);
let remainder = num % 1000000;
return numberToWordsFr(million) + ' million' + (remainder > 0 ? ' ' + numberToWordsFr(remainder) : '');
} else if (num < 100000000000) {
let billion = Math.floor(num / 1000000000);
let remainder = num % 1000000000;
return numberToWordsFr(billion) + ' milliard' + (remainder > 0 ? ' ' + numberToWordsFr(remainder) : '');
} else {
return 'Nombre trop grand';
}
}function replaceResult(texte: string) {
let texte_clean: string;
texte_clean = texte.replace("dix-un", "onze");
texte_clean = texte_clean.replace("dix-deux", "douze");
texte_clean = texte_clean.replace("dix-trois", "treize");
texte_clean = texte_clean.replace("dix-quatre", "quatorze");
texte_clean = texte_clean.replace("dix-cinq", "quinze");
texte_clean = texte_clean.replace("dix-six", "seize");
texte_clean = texte_clean.replace("trente-un", "trente et un");
texte_clean = texte_clean.replace("vingt-un", "vingt et un");
texte_clean = texte_clean.replace("quarante-un", "quarante et un");
texte_clean = texte_clean.replace("cinquante-un", "cinquante et un");
texte_clean = texte_clean.replace("soixante-un", "soixante et un");
texte_clean = texte_clean.replace("soixante-onze", "soixante et onze");
texte_clean = texte_clean.replace("soixante-dix-deux", "soixante-douze");
texte_clean = texte_clean.replace("quatre-vingt et un", "quatre-vingt-un");
return texte_clean
}