29 secondes pour XLérer : afficher les formules et voir en couleurs

Je viens de “décou­vrir” qu’on pou­vait directe­ment voir les couleurs dans les for­mules lorsqu’on affiche les formules. 

C’est l’équiv­a­lent d’ap­puy­er sur la touche F2 d’une cel­lule qui con­tient une for­mule et donc de voir les couleurs, mais là, ça se fait directe­ment en cli­quant sur la formule.

Une approche qui est super intéres­sante pour analyser et véri­fi­er des fichiers avec des for­mules qui font références à plusieurs endroits dans le fichier.

Procé­dure : For­mules, affich­er les for­mules et cli­quer sur des cel­lules qui con­ti­en­nent des formules. 

Et savez-vous com­ment faire pour mas­quer à nou­veau les formules ?

Ca ressem­ble à ceci : 

Réponse : on reclique sur le bouton ?

Retourner les gagnants avec la gestion des ex-aequo (Excel 2021 et plus)

Vous pou­vez télécharg­er directe­ment le fichi­er ici : 

Avec les nou­velles fonc­tions d’Ex­cel, ça se fait en une seule for­mule rel­a­tive­ment sim­ple. FILTRE per­met de ren­voy­er un tableau des gag­nants. On peut utilis­er le MAX si on ne veut retourn­er que le score le plus élevé.

=FILTRE(Tableau10[Equipe];Tableau10[Points]=MAX(Tableau10[Points]))

On peut aus­si ajouter une vari­ante pour déter­min­er la liste des gag­nants en fonc­tion des scores. On utilise pour cela la fonc­tion GRANDE.VALEUR :

=FILTRE(Tableau10[Equipe];Tableau10[Points]>=GRANDE.VALEUR(Tableau10[Points];3))

Que l’ on peut ensuite join­dre avec la fonc­tion JOINDRE.TEXTE

=JOINDRE.TEXTE(" ; ";;FILTRE(Tableau10[Equipe];Tableau10[Points]>=GRANDE.VALEUR(Tableau10[Points];3)))

Ensuite (Excel 365), com­ment gér­er le dernier élé­ment. J’u­tilise la fonc­tion Exclure (excel 365), mais on pour­rait aus­si utilis­er la fonc­tion INDEX pour retourn­er les lignes qui nous intéressent.

=LET(
gagnants;
FILTRE(Tableau10[Equipe];Tableau10[Points]>=GRANDE.VALEUR(Tableau10[Points];3));
   SI(LIGNES(gagnants)=1;
      "Le groupe gagnant est le " & MINUSCULE(gagnants);
      "Les groupes gagnants sont : " & MINUSCULE(JOINDRE.TEXTE( ", ";;EXCLURE(gagnants;-1))) & " et " & PRENDRE(gagnants;1)))

Et finale­ment on trans­forme en Lamb­da. On pour­ra per­son­nalis­er à l’en­vie le texte en fonc­tion des besoins. On notera l’u­til­i­sa­tion de la fonc­tion TRIER et TRIERPAR pour avoir les gag­nants dans le bon ordre.

J’u­tilise le nom : L_Gagnants pour la lambda

=LAMBDA(ListePoints;ListeParticipants;TopN;[Texte_UnSeulGagnant];[Texte_PlusieursGagnants];LET(MaxN;GRANDE.VALEUR(ListePoints;TopN);gagnants;FILTRE(ListeParticipants;ListePoints>=MaxN);
          SI(LIGNES(gagnants)=1;
                  SI(ISOMITTED(Texte_UnSeulGagnant);"Le gagnant est : ";Texte_UnSeulGagnant) & MINUSCULE(gagnants);
                  SI(ISOMITTED( Texte_PlusieursGagnants);"Les gagnants sont : "; Texte_PlusieursGagnants) & MINUSCULE(JOINDRE.TEXTE( ", ";;EXCLURE(gagnants;-1))) & " et " & PRENDRE(gagnants;-1))))(Tableau10[Points];Tableau10[Equipe];1;"Le groupe gagnant est le ";"Les groupes gagnants sont : ")

Et une fois que la lamb­da est créée, c’est super sim­ple à utiliser :

Et en per­son­nal­isant le message : 

Voici aus­si la solu­tion pour Excel 2021, sans la fonc­tion EXCLURE. 

L’as­tuce con­siste à utilis­er une fonc­tion INDEX com­binée avec SEQUENCE, ce qui per­met de retourn­er la liste des n‑1 pre­miers items : INDEX(gagnants;SEQUENCE(LIGNES(gagnants)-1;1);)

Pour le dernier gag­nant, c’est le même principe, mais en plus sim­ple : INDEX(gagnants;LIGNES(gagnants);)

=LAMBDA(ListePoints;ListeParticipants;TopN;[Texte_UnSeulGagnant];[Texte_PlusieursGagnants];
      LET(MaxN;GRANDE.VALEUR(ListePoints;TopN);gagnants;FILTRE(TRIERPAR(ListeParticipants;ListePoints;-1);TRIER(ListePoints;;-1)>=MaxN);
          SI(LIGNES(gagnants)=1;
                  SI(ISOMITTED(Texte_UnSeulGagnant);"Le gagnant est : ";Texte_UnSeulGagnant) & MINUSCULE(gagnants);
                  SI(ISOMITTED( Texte_PlusieursGagnants);"Les gagnants sont : "; Texte_PlusieursGagnants) &
                    MINUSCULE(JOINDRE.TEXTE( ", ";;INDEX(gagnants;SEQUENCE(LIGNES(gagnants)-1;1);))) &
                    " et " &INDEX(gagnants;LIGNES(gagnants);)
                  )))(Tableau10[Points];Tableau10[Equipe];3;"Le groupe gagnant est le ";"Les groupes gagnants sont : ")