Réponses céées sur le Forum

Page 2 sur 3
  • Charles

    Membre
    29 janvier 2024 à 17h15 en réponse à: Filtre dans liste déroulante

    OK dans ce cas il faut dans OnChange de la liste 1 mettre:

    Clear(col_Projets);;

    ForAll(cb_Article.SelectedItems;Collect(col_Projets;FILTER(PROJET; REF_ARTICLE = NomDeLaColonneDeRefArticle)))

    Ensuite dans le Items de la liste 2 mettre col_liste2 et selectionner la colonne à faire apparaitre dans la liste 2 parmi celles de la col_Projets

  • Charles

    Membre
    29 janvier 2024 à 17h08 en réponse à: Filtre dans liste déroulante

    Est-ce que la liste 1 a qu’une seule colonne Value ou elle possède d’autres colonnes?

  • Charles

    Membre
    29 janvier 2024 à 16h55 en réponse à: Filtre dans liste déroulante

    C’est une liste déroulante ou une zone de liste que tu as?

    En selection multiple je dirai une zone de liste. Peut-être qu’avec ForAll ça fonctionnerait?

    ForAll(cb_Article.SelectedItems;FILTER(PROJET; REF_ARTICLE = Value)

    Sinon tu peux faire une collection à partir de la propriété onchange de ta liste 1 et utiliser ta collection comme items de ta liste 2

  • Charles

    Membre
    29 janvier 2024 à 16h48 en réponse à: Réécrire un montant en lettres

    Là c’est 100 milliards max

  • Charles

    Membre
    29 janvier 2024 à 16h47 en réponse à: 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
    }

  • Charles

    Membre
    29 janvier 2024 à 16h04 en réponse à: Réécrire un montant en lettres

    Ah oui mon code va jusqu’à 1000000 max il me semble.

    Pour 1 milliard il faudrait que je refasse des tests

  • Charles

    Membre
    28 janvier 2024 à 18h50 en réponse à: Version essai, Power Automate !

    Moi perso je renouvelle le trial depuis 2 ans sans soucis ^^

  • Charles

    Membre
    26 janvier 2024 à 21h55 en réponse à: Réécrire un montant en lettres

    Bonjour Marielle,

    Une des solutions consiste à passer par un script Sharepoint pour mouliner ton nombre.

    Il faut que tu ailles dans Excel Online puis que tu crées un nouveau script depuis l’onglet “Automate”.

    Dans le script tu colles le code suivant:

    <pre class=”language-javascript”>function main(workbook: ExcelScript.Workbook, nombre: number) {
    return nombreEnTexte(nombre)
    }

    function nombreEnTexte(nombre: number) {
    if (nombre < 100) {
    return replaceResult(dizaineEnTexte(nombre));
    } else if (nombre < 1000) {
    return replaceResult(centainesEnTexte(nombre));
    } else if (nombre < 1000000) {
    let milliers = Math.floor(nombre / 1000);
    let reste = nombre % 1000;
    let texte: string
    texte = nombreEnTexte(milliers) + ' mille';
    texte += (reste > 0) ? ' ' + nombreEnTexte(reste) : '';
    return replaceResult(texte);
    } else {
    return "Nombre trop grand";
    }
    }

    function centainesEnTexte(nombre: number) {
    let centaines = Math.floor(nombre / 100);
    let reste = nombre % 100;
    let texte: string
    texte = (centaines > 1) ? nombreEnTexte(centaines) + ' cent' : 'cent';
    texte += (reste > 0) ? ' ' + dizaineEnTexte(reste) : '';
    return texte;
    }

    function dizaineEnTexte(nombre: number) {
    const unites = ['zero', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf'];
    const dizaines = ['', '', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'soixante-dix', 'quatre-vingt', 'quatre-vingt-dix'];

    if (nombre < 10) {
    return unites[nombre];
    } else if (nombre < 20) {
    return ['dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf'][nombre - 10];
    } else if (nombre === 80) {
    return 'quatre-vingts';
    } else {
    let texte = dizaines[Math.floor(nombre / 10)];
    let reste = nombre % 10;
    if ((nombre >= 70 && nombre < 80) || (nombre >= 90)) {
    texte = nombreEnTexte(nombre - 10) + '-dix';
    reste -= 10;
    }
    texte += (reste > 0) ? ((reste === 1 && nombre !== 71) ? ' et un' : '-' + unites[reste]) : '';
    return texte;
    }
    }

    function replaceResult(texte: string){
    let texte_clean: string;
    texte_clean = texte.replace("un-dix", "onze");
    texte_clean = texte_clean.replace("quatre-vingt et onze", "quatre-vingt-onze");
    texte_clean = texte_clean.replace("deux-dix", "douze");
    texte_clean = texte_clean.replace("deux-dix", "douze");
    texte_clean = texte_clean.replace("trois-dix", "treize");
    texte_clean = texte_clean.replace("quatre-dix", "quatorze");
    texte_clean = texte_clean.replace("cinq-dix", "quinze");
    texte_clean = texte_clean.replace("six-dix", "seize");
    texte_clean = texte_clean.replace("sept-dix", "dix-sept");
    texte_clean = texte_clean.replace("huit-dix", "dix-huit");
    texte_clean = texte_clean.replace("neuf-dix", "dix-neuf");
    texte_clean = texte_clean.replace("un mille", "mille");
    return texte_clean
    }

    Tu sauvegardes ton script et ensuite tu peux l’appeler dans PowerAutomate avec la fonction

    “Run script from SharePoint library”. Tu es obligée de sélectionner un fichier Excel mais quel que soit le fichier ça fonctionne et ensuites tu renseignes ton script à executer.

    Le nombre en toutes lettres sera dans l’output de cette action

  • Ce n’est pas le bon menu, il faut aller dans les variables:

  • Je ne vois pas la formule en entier sur le screen

  • Mon Title est la colonne contenant l’ID de mon entreprise dans La liste entreprise

  • La formule doit être dans DefaultSelectedItems. Dans Items il faut laisser la valeur par défaut

  • Du coup au lieu de .Value il faut mettre .crc5b_id_entite

    • Cette réponse a été modifiée Il y a 10 mois par  Charles.
  • En sélectionnant la partie de la formule puis en cliquant sur la flèche en bas à gauche

    Si elle n’apparait pas tu peux aussi ajouter un bouton et collecter les données:

    ClearCollect(col_Test;Gallery1.Selected.’Entreprise ID’) en remplaçant par tes valeurs

    Ensuite il faut aller dans le volet de variable pour aller chercher la collection:

    • Cette réponse a été modifiée Il y a 10 mois par  Charles.
  • Est-ce que tu peux afficher la structure Gallery_AF.Selected.’ID_Entite’?

    Normalement quand on met le . après il propose les propriétés:

    • Cette réponse a été modifiée Il y a 10 mois par  Charles.
    • Cette réponse a été modifiée Il y a 10 mois par  Charles.
    • Cette réponse a été modifiée Il y a 10 mois par  Charles.
Page 2 sur 3