Répondre à: Réécrire un montant en lettres

  • Charles

    Membre
    29 janvier 2024 à 16h47

    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
    }