Power FX : Tout savoir le langage de formule créé par Microsoft

Power FX est le langage de formules de Power Apps, la plateforme de développement no code de Microsoft. Découvrez tout ce que vous devez savoir sur cet outil, et comment apprendre à le maîtriser !

Pour les professionnels de tous les secteurs, la capacité à automatiser des tâches, personnaliser des applications et créer des flux de travail efficaces est devenue une compétence indispensable.

Afin de répondre à ce nouvel impératif, Microsoft a créé un langage de formule puissant et polyvalent conçu pour être utilisé dans ses outils tels que Power Apps et Power Automate : Power FX.

Qu’est-ce que Power FX ?

Power Fx est le langage de formules low-code de Microsoft Power Platform (dont Power BI). Fortement typé, déclaratif et fonctionnel, il s’exprime dans une syntaxe conviviale proche d’Excel et s’édite dans une barre de formule. Introduit en 2018 avec Power Apps, son objectif est de simplifier l’écriture d’expressions et de règles cohérentes pour créer des applications métier sans connaissances préalables en code.

Pensé pour un large public, des créateurs citizen aux développeurs confirmés, Power Fx couvre un spectre allant du sans code au pro code. Il facilite l’automatisation de tâches, la personnalisation d’interfaces et la manipulation de données, tout en restant accessible et minimaliste dans sa syntaxe. Dans cette section, nous clarifions sa définition, son positionnement dans la Power Platform et les points à retenir pour la suite de l’article.

Contrairement aux langages classiques centrés sur des structures et des gestionnaires d’événements, Power Fx adopte une logique de feuille de calcul : vous reliez des expressions aux propriétés des contrôles, et le système recalcule automatiquement en fonction des changements. Il combine cette approche déclarative avec des fonctions impératives lorsque nécessaire, par exemple pour enregistrer des données ou naviguer entre des écrans.

Quel lien avec Excel et le low-code ?

Power Fx reprend les réflexes d’Excel : des fonctions familières (Si, Somme, Len, Left, LookUp…) et l’idée qu’une formule décrit un résultat attendu plutôt que la suite d’instructions pour y parvenir. La différence majeure : les références ne pointent plus vers des cellules, mais vers des propriétés de contrôles et des enregistrements de tables, ce qui réduit la courbe d’apprentissage pour tout utilisateur à l’aise avec les feuilles de calcul.

Exemple concret : pour masquer un bouton tant qu’un champ de saisie est vide, on place la formule Input.Text <> "" dans sa propriété Visible. Dès que l’utilisateur saisit du texte, la visibilité se met à jour instantanément, sans gestionnaire d’événement. De la même manière, la couleur d’arrière‑plan d’un écran peut dépendre de curseurs rouge, vert, bleu, et s’ajuste en temps réel à mesure que les valeurs changent.

Où s’utilise Power FX dans la Power Platform ?

  • Power Apps (applications canevas) : formules sur les propriétés Text, Visible, OnSelect, Items pour personnaliser l’interface, valider des données, effectuer des calculs et connecter des sources. Le recalcul est automatique, à la manière d’une feuille de calcul.
  • Power Apps (applications pilotées par modèle) : personnalisation de la barre de commandes avec Power Fx pour conditionner la visibilité d’un bouton, exécuter des actions métier ou naviguer, directement dans l’expérience model‑driven.
  • Microsoft Dataverse : usage de formules pour calculer des valeurs et transformer des données au plus près de la source, avec une sémantique alignée sur Excel et la Power Platform.
  • Par extension avec Power Automate : depuis Power Apps, des formules permettent de déclencher des flux et de leur passer des paramètres afin d’orchestrer des processus. Les expressions internes des flux restent propres à Power Automate, mais l’intégration avec Power Fx est fluide côté application.

En synthèse, Power Fx forme le langage commun qui relie l’interface des applications, les données de Dataverse et l’automatisation, tout en capitalisant sur des concepts qu’Excel a rendus familiers.

Avantages et points forts

Capture d'écran montrant l'interface d'un formulaire Power FX de Microsoft avec des options de formule.

Le principal avantage de Power FX est sa simplicité d’apprentissage. Il s’agit d’un langage accessible aux débutants et puissant pour les utilisateurs techniques. Intégré à Power Apps et Power Automate, il facilite la création d’applications et l’automatisation de workflows, tout en allant plus loin que les formules Excel pour manipuler des données et personnaliser l’expérience utilisateur.

Simplicité et cohérence avec Excel

Power FX reprend les réflexes d’Excel (fonctions, opérateurs, sémantiques proches), ce qui réduit l’effort d’apprentissage. Sa syntaxe cohérente et prévisible permet d’aller vite sur les tâches courantes, tout en restant évolutive pour des cas plus avancés.

Exemple concret : afficher un bouton uniquement si un email est saisi reste naturel pour un utilisateur d’Excel : Visible = Not(IsBlank(InputEmail.Text)). De même, filtrer une galerie sur les éléments du jour reprend la logique de filtre bien connue : Items = Filter(Formations, DateValue(Date)=Today()).

Langage déclaratif et fonctionnel

Power FX est déclaratif et fonctionnel : vous décrivez le résultat attendu dans la propriété d’un contrôle (par exemple, la couleur, la visibilité, le texte), et le système recalcule automatiquement lorsque les données changent. Il n’est pas nécessaire d’écrire des gestionnaires d’événements pour synchroniser l’interface, ce qui simplifie l’UX et réduit les effets de bord.

Conséquences pratiques : moins de code impératif à maintenir, des écrans qui réagissent immédiatement aux entrées (modèle “always on” avec vérification en direct), et une logique découpée en petites formules indépendantes, plus faciles à comprendre et à faire évoluer.

Typage fort et inférence

Le langage est fortement typé avec inférence de type. Les types sont connus dès l’édition, ce qui permet une détection précoce des erreurs et des suggestions pertinentes. Des fonctions comme IsType et AsType aident à sécuriser les conversions lorsque c’est nécessaire.

Conséquences pratiques : moins de bugs en production, une base de formules plus robuste, des refactorings facilités et une maintenance plus sereine sur des applications qui évoluent dans le temps.

Convivialité développeur (IntelliSense, aide en ligne)

L’éditeur offre une expérience riche qui accélère la productivité : IntelliSense, complétion automatique, infobulles de fonctions, aperçu immédiat des résultats et signalement en direct des erreurs.

  • Autocomplétion contextuelle sur fonctions, tables et colonnes (Dataverse, SharePoint, etc.).
  • Aide intégrée avec signatures de fonctions et exemples, sans quitter la barre de formule.
  • Vérifications en direct : soulignement rouge pour la syntaxe, indications de délégation pour anticiper la performance.
  • Édition fluide : panneau de propriétés et barre de formule reliés (icône fx), aperçu instantané du rendu.
  • Bonnes pratiques outillées : typage et suggestions limitent les régressions lors des évolutions de l’app.

Quels sont les fondamentaux de Power FX ?

Écran d'ordinateur affichant une interface d'application créée avec Power FX, incluant des curseurs et un bouton de soumission.

Power FX est un langage de formules fortement typé, déclaratif et fonctionnel, pensé pour des expressions courtes qui relient les propriétés de vos contrôles et de vos données. Pour bien démarrer, retenez quatre piliers : une syntaxe simple proche d’Excel, un recalcul automatique des formules, un système de types explicite avec des valeurs spéciales, et des règles de paramètres régionaux qui influencent les séparateurs numériques.

  • Simplicité de la syntaxe : opérateurs, fonctions et références de propriétés s’assemblent en formules lisibles.
  • Évaluation déclarative et réactive : les valeurs se mettent à jour dès qu’une dépendance change, comme dans une feuille de calcul.
  • Typage fort et valeurs spéciales : Number, Text, Boolean, Record, Table… plus Blank et Error, sans notion d’undefined.
  • Paramètres régionaux : le séparateur décimal et le séparateur d’arguments suivent la langue de l’éditeur.

Quelle est la syntaxe de base ?

Les formules Power FX combinent valeurs, opérateurs et appels de fonctions, et se placent sur les propriétés des contrôles (par exemple Text, Visible, Items). La composition se fait par imbrication de fonctions ou par enchaînement d’instructions sur des propriétés de comportement (comme OnSelect).

  • Opérateurs arithmétiques : +, -, *, /, ^.
  • Comparaisons : =, <>, >, <, >=, <=.
  • Logique : And, Or, Not.
  • Concaténation de texte : & (ex. "Bonjour " & User().FullName).
  • Appels de fonctions : Text(1234), Today(), LookUp(Employees, Email = User().Email), Filter(Orders, Amount > 1000).
  • Références de propriétés : Slider1.Value, Label1.Visible, Gallery1.Selected.
  • Composition d’expressions : par imbrication (ex. Sort(Filter(Products, InStock), Price, Descending)).
  • Enchaînement d’instructions sur une propriété de comportement : Set(varOk, true); Notify("Enregistré").

Comment fonctionne l’évaluation déclarative et réactive ?

Power FX relie les propriétés entre elles par des formules déclaratives : vous décrivez le résultat attendu, la plateforme décide quand et comment recalculer. À chaque modification d’une valeur source, toutes les formules dépendantes sont réévaluées automatiquement, sans handler événementiel explicite.

Cas concret : si la propriété Fill d’un écran est RGBA(SliderR.Value, SliderG.Value, SliderB.Value, 1), déplacer un curseur met instantanément à jour la couleur d’arrière‑plan. De même, LabelTotal.Text peut être Sum(Cart, Price) et se mettra à jour dès qu’un article est ajouté, sans écrire de logique OnChange.

Quels types et valeurs spéciales (Blank, Error, Boolean…) ?

Le langage est fortement typé avec inférence : chaque valeur a un type connu à l’édition, ce qui améliore l’IntelliSense et détecte tôt les incohérences. Il n’existe pas de valeur « undefined ». Les absences de valeur se représentent avec Blank, et les erreurs sont des valeurs à part entière que l’on peut intercepter.

TypeExempleNotes
Number3.14 ou 3,14 selon localeUtiliser Value() et Text() pour convertir.
Text"Bonjour"Concaténation avec &, fonctions Left, Mid, Len
Booleantrue, falseOpérateurs And, Or, Not.
Date/TimeNow(), Today()Fonctions DateAdd, DateDiff pour les calculs.
Record{ Name: "Ada", Score: 98 }Accès par point : Record.Name.
TableTable({Id:1},{Id:2})Fonctions Filter, Sort, LookUp, Sum
BlankBlank()Valeur vide, possible pour tous les types.
ErrorIfError(expr, handler)Les erreurs sont piégeables avec IfError, testables avec IsError.

Bon réflexe : valider les conversions et l’absence de valeur avec IsBlank, IsEmpty, IsNumeric, et gérer proprement les erreurs avec IfError.

Paramètres régionaux et séparateurs décimaux

Problème fréquent côté francophone : selon la langue de votre studio, le séparateur décimal peut être la virgule. Dans ce cas, Power FX accepte 3,14 comme nombre, et adapte aussi le séparateur d’arguments de fonctions.

En pratique : si la virgule sert de décimal (fr-FR), séparez les arguments par point‑virgule (ex. Text(1234, "[$-fr-FR] # ##0,00") ou If(Amount > 1000; Notify("Seuil dépassé"))). En environnement en‑US, utilisez le point pour les décimaux et la virgule pour les arguments. En cas de doute, standardisez les conversions avec Value() et Text() en précisant la culture.

Quelles sont les fonctions Power FX essentielles ?

Deux collaborateurs se concentrant sur un projet de développement avec Power FX, utilisant un ordinateur portable et un écran d'ordinateur.

Power FX propose des familles de fonctions faciles à combiner pour formater des valeurs, contrôler la logique, manipuler des tables, itérer et écrire des données. Voici l’essentiel, avec mini‑exemples directement utilisables dans Power Apps.

Texte, nombres et dates/heures

  • Text : formate un nombre ou une date. Exemple : Text(Now(); "dd/mm/yyyy hh:mm"; "fr-FR").
  • Value : convertit un texte en nombre pour calculer. Exemple : Value(in_Prix.Text) * 1,2.
  • Today et Now : renvoient la date du jour ou la date‑heure. Exemples : Today(), Now().
  • DateAdd et DateDiff : ajoutent des unités de temps et calculent des écarts. Exemples : DateAdd(Today(); 7; TimeUnit.Days), DateDiff(DateValue("2026-06-01"); Today(); TimeUnit.Days).

Exemple rapide : afficher “Commande du jj/mm/aaaa” dans une étiquette : "Commande du " & Text(Today(); "dd/mm/yyyy"; "fr-FR").

Logique et comparaison (If, Switch, IsMatch)

Les fonctions conditionnelles pilotent l’interface et la validation. If évalue des conditions simples, Switch choisit selon une valeur, IsMatch vérifie la conformité d’un texte (ex. adresse e‑mail) pour guider l’utilisateur.

Exemples :

  • Couleur d’un montant selon sa valeur : If(Value(txtMontant.Text) > 1000; Color.Red; Color.Black).
  • Gestion d’état avec Switch : Switch(ddStatut.Selected.Value; "Nouveau"; Color.Blue; "Clos"; Color.Gray; Color.Black).
  • Validation e‑mail : If(!IsMatch(txtEmail.Text; Match.Email); Notify("Adresse invalide"; NotificationType.Error)).

Tables et enregistrements (Filter, Sort, LookUp)

Ces fonctions façonnent les données visibles dans une galerie ou un formulaire : filtrer, trier, ou récupérer un enregistrement précis.

  • Filter : restreint les lignes : Filter(Produits; InStock = true).
  • SortByColumns/Sort : trie une table : SortByColumns(Produits; "Price"; SortOrder.Ascending).
  • LookUp : retourne un seul enregistrement correspondant : LookUp(Clients; Email = varEmail).

Exemple pratique pour la propriété Items d’une galerie : SortByColumns(Filter(Produits; StartsWith(Title; txtRecherche.Text)); "Title"; SortOrder.Ascending).

Agrégation et itération (ForAll, Sequence, With)

Itérez quand vous avez besoin d’appliquer une action à chaque élément ou de composer un calcul. With crée un contexte pour clarifier les formules, Sequence génère des suites numériques, ForAll applique une formule à chaque ligne d’une table ou collection.

  • With : nommer un calcul une seule fois : With({tva: 0,2}; Value(txtHT.Text) * (1 + tva)).
  • Sequence : produire 12 lignes (mois, index, etc.) : Sequence(12).
  • ForAll : actionner un traitement par élément : ForAll(GalleryPanier.AllItems; Patch(CommandeLignes; Defaults(CommandeLignes); {ProduitId: ThisItem.Id; Qte: ThisItem.Qte})).

Conséquence pratique : privilégiez d’abord les fonctions de table délégables (Filter, Sort, AddColumns). Utilisez ForAll pour des actions par élément ou de petits volumes, car le traitement n’est pas délégable selon la source.

Écriture et état (Patch, Collect, ClearCollect)

Pour persister et mettre à jour, Patch crée ou modifie des enregistrements dans la source, Collect ajoute des éléments à une collection locale, ClearCollect réinitialise puis charge une collection (utile comme cache d’écran).

  • Créer un enregistrement : Patch(Orders; Defaults(Orders); {Date: Today(); ClientId: ddClient.Selected.Id}).
  • Mettre à jour l’élément sélectionné : Patch(Orders; GalleryOrders.Selected; {Statut: "Validée"}).
  • Ajouter au panier : Collect(Panier; {ProduitId: ThisItem.Id; Qte: 1}).
  • Charger en local : ClearCollect(ProduitsLocaux; Filter(Produits; InStock = true)).

Cas concret : l’utilisateur ajoute des lignes avec Collect dans Panier, vérifie le total à l’écran, puis confirme ; un ForAll + Patch crée les lignes de commande dans la source de données.

Quelles variables utiliser et quand ?

Écran d'ordinateur affichant l'interface de Power FX avec des formules et des éléments de données.

Dans Power FX, choisissez le bon type de variable selon la portée et la durée de vie souhaitées. En synthèse : variables de contexte pour l’état local d’un écran, variables globales pour un état partagé dans toute l’app, collections pour des listes ou enregistrements tenus en mémoire. Les variables non initialisées valent Blank et il est recommandé de les définir explicitement à l’ouverture de l’app ou de l’écran concerné.

TypeCréation / mise à jourPortéeUsages typiquesExemple rapide
Variable de contexteUpdateContext({nom: valeur})Écran courant uniquementVisibilité d’un composant, état d’un formulaire, pop-upUpdateContext({AfficherPopup:true})
Variable globaleSet(nom, valeur)Toute l’application, session en coursPréférences, rôles, paramètres transversesSet(varRole, "Manager")
CollectionCollect, ClearCollect, Remove*Toute l’app, en mémoireListes temporaires, panier, mise en tampon, offlineClearCollect(colProduits, Filter(Produits, InStock))

Variables de contexte

Utilisez-les pour piloter un comportement local à un écran sans impacter le reste de l’application. Elles sont idéales pour la visibilité d’un panneau, l’état d’un onglet, ou l’affichage d’un message d’erreur. Initialisez-les dans la propriété OnVisible de l’écran, puis mettez-les à jour sur les événements utilisateur.

Exemple pratique : ouvrir une fenêtre modale sur clic d’un bouton et la lier à la propriété Visible du conteneur :
// OnSelect du bouton
UpdateContext({AfficherPopup:true})

// Propriété Visible du composant
AfficherPopup

Pour transmettre une valeur à un autre écran, passez un contexte lors de la navigation, puis lisez-le dans l’écran cible :
Navigate(EcranDetails, ScreenTransition.Fade, {IdSelectionne: ThisItem.ID})

Variables globales

Les variables globales créées avec Set() sont accessibles depuis tous les écrans pendant la session. Servez-vous-en pour des informations partagées et stables, comme le profil utilisateur, les droits, le thème, des constantes métier ou des paramètres d’environnement. Évitez de les employer pour des micro-états d’interface qui relèvent plutôt des variables de contexte.

Bon réflexe : définissez-les au démarrage de l’app ou au premier écran affiché, puis référez-vous à elles partout où nécessaire.
// App.OnStart ou premier écran
Set(varEmail, User().Email); Set(varTheme, "Clair")

Rappelez-vous qu’elles vivent uniquement le temps d’exécution de l’app et sont réinitialisées à la fermeture. Pour des données persistantes ou partagées entre utilisateurs, préférez une source de données (Dataverse, SharePoint, SQL) et les fonctions Patch, Lookup, Filter.

Collections

Les collections stockent des tables et des enregistrements en mémoire. Elles sont utiles pour précharger des listes, gérer un panier, agréger des sélections ou travailler hors ligne. Créez-les avec Collect ou réinitialisez-les et chargez-les avec ClearCollect. Mettez à jour ou supprimez des éléments avec UpdateIf, Remove ou RemoveIf.

Exemples :
// Précharger une liste affichée dans une galerie
ClearCollect(colClients, SortByColumns(Filter(Clients, Actif = true), "Nom"))

// Ajouter un article au panier
Collect(colPanier, {Id: ThisItem.Id, Qte: 1, Prix: ThisItem.Prix})

// Mettre à jour une quantité
UpdateIf(colPanier, Id = ThisItem.Id, {Qte: Qte + 1})

Limites et bonnes pratiques : une collection n’est pas une base de données. Elle n’est pas partagée entre utilisateurs et peut devenir obsolète si la source externe évolue. Actualisez-la régulièrement (ClearCollect) et surveillez la délégation : en cas d’opérateur ou de fonction non délégable, Power Apps applique un seuil local de traitement, généralement configurable entre 500 et 2 000 enregistrements. Pour de grands volumes, privilégiez des filtres et tris délégables côté source.

Pour l’offline, combinez avec SaveData(colNom, "Fichier") et LoadData(colNom, "Fichier", true). Pensez aussi à Refresh(Source) pour synchroniser périodiquement vos vues.

Comment manipuler enregistrements et tables ?

Écran d'ordinateur affichant l'interface du langage de formules Power FX de Microsoft avec des éléments de programmation.

Dans Power FX, un enregistrement (record) est un ensemble de champs nommés, et une table est une liste d’enregistrements de même structure. Vous pouvez filtrer, trier, enrichir et mettre à jour ces données pour alimenter vos contrôles (Galerie, Formulaire, Tableau de données) sans écrire de code impératif complexe.

  • Accéder aux champs d’un enregistrement avec la notation point.
  • Composer des enregistrements avec les accolades { } et les fusionner avec Patch.
  • Filtrer et rechercher avec Filter, Search, LookUp.
  • Ajouter des colonnes calculées pour l’UI avec AddColumns, limiter l’affichage avec ShowColumns.
  • Désambigüiser la cible d’un contrôle avec ThisItem, ThisRecord et nommer un contexte avec As.

ThisItem, ThisRecord et As : à quoi servent-ils ?

Dans un contrôle de type Galerie ou Formulaire, ThisItem désigne l’enregistrement courant fourni par la propriété Items/Item du parent. ThisRecord précise l’enregistrement en cours d’évaluation à l’intérieur d’une formule qui crée un nouveau contexte (par exemple AddColumns, ForAll), ce qui évite toute ambiguïté. L’opérateur As permet d’attribuer un alias lisible à un enregistrement ou à une table dans une expression, afin de remplacer ThisItem par un nom explicite et de clarifier les références imbriquées.

Cas concret avec une Galerie alimentée par les formations du jour :

GalleryFormations.Items = Filter(Formations, Date = Today()) As FormationsDuJour

Dans une étiquette à l’intérieur de la Galerie :

Text = FormationsDuJour.Title (au lieu de ThisItem.Title)

Dans une colonne calculée, ThisRecord lève toute ambiguïté :

AddColumns(Formations, "EstAujourdHui", ThisRecord.Date = Today())

Accéder aux champs et composer des records

Accédez aux champs avec la notation point et composez des enregistrements avec des paires NomChamp: Valeur entre accolades. Patch fusionne des enregistrements et écrit dans une source de données.

Exemples rapides :

  • Accès champ simple dans une Galerie : LabelEmail.Text = ThisItem.Email
  • Création d’un record en mémoire : { FirstName: "Anne", LastName: "Martin", Age: 32 }
  • Mise à jour d’un enregistrement existant :
    Patch(Clients, LookUp(Clients, Id = varClientId), { Statut: "Validé", MontantTTC: Value(in_Montant_HT.Text) * 1.2 })
  • Fusion de records en mémoire : Patch({ a: 1 }, { b: 2 }) // renvoie { a: 1, b: 2 }
  • Accès à un champ imbriqué : MonRecord.Adresse.Ville

Colonnes dérivées et transformation (AddColumns, ShowColumns)

AddColumns enrichit une table avec des champs calculés utiles pour l’affichage, sans modifier la source. ShowColumns restreint les colonnes renvoyées pour simplifier les liaisons et limiter les données chargées côté client.

Exemple d’Items pour une Galerie Produits en stock, avec prix TTC et étiquette de disponibilité :

GalleryProduits.Items =
AddColumns(
Filter(Produits, Stock > 0),
"PrixTTC", Round(PrixHT * 1.2, 2),
"Etiquette", If(Stock < 5, "Bientôt épuisé", "Disponible")
)

Pour ne garder que l’essentiel avant un tri ou une recherche :

ShowColumns(Produits, "Id", "Nom", "PrixHT")

Dans les colonnes calculées, utilisez ThisRecord si un nom de champ entre en collision avec une variable ou un contrôle :

AddColumns(Commandes, "Montant", ThisRecord.Qte * ThisRecord.PrixUnitaire)

La création d’expressions dans Power Apps

Femme travaillant sur un ordinateur avec plusieurs écrans, utilisant des applications Microsoft dans un environnement de bureau.

L’une des principales utilisations de Power FX dans Power Apps est la personnalisation de l’interface utilisateur. Les expressions contrôlent la visibilité, définissent des valeurs par défaut, effectuent des calculs en temps réel, valident les entrées et pilotent la navigation.

  1. Validation des données : vérifier qu’un email ou un numéro respecte le bon format.
  2. Affichage conditionnel : rendre des éléments visibles ou non selon le contexte.
  3. Calcul instantané : totaux, remises, échéances, mis à jour à la saisie.
  4. Navigation : rediriger l’utilisateur vers l’écran, la page ou la vue pertinente après une action.

Où écrire des formules dans l’éditeur ?

Dans Power Apps Studio, vous écrivez des formules au plus près des propriétés des contrôles, avec une aide IntelliSense : saisie semi‑automatique, suggestions de fonctions, vérification des types et des erreurs en direct.

  • Barre de formule : sélectionnez un contrôle, choisissez une propriété (Text, Visible, Items, Fill, OnSelect), puis tapez la formule. L’éditeur propose les fonctions et champs disponibles.
  • Volet Propriétés : pour les valeurs simples, utilisez les commutateurs. Dès que vous introduisez une formule, une icône fx renvoie à la barre de formule.
  • Onglet Avancé : affiche toutes les propriétés, pratique pour accéder rapidement à OnSelect, OnVisible, Default, DisplayMode, etc.
  • Portée de l’application : initialisez vos variables, collections et connexions dans App.OnStart. Utilisez Screen.OnVisible pour charger des données propres à un écran.
  • Apps pilotées par modèle (model‑driven) : dans le concepteur de commandes, définissez les formules des actions de bouton, notamment OnSelect et Visible, avec la même expérience Power FX.

Quels événements/propriétés utiliser (OnSelect, Visible, Navigate, AutoSave) ?

  • OnSelect (boutons, icônes) : lance une action utilisateur : soumettre un formulaire, naviguer, écrire une notification, mettre à jour une variable ou appeler un flux. Exemple : OnSelect d’un bouton Valider.
  • Visible (tout contrôle) : renvoie un booléen pour afficher ou masquer un élément. Central pour créer des interfaces dynamiques.
  • Navigate (canvas et pages personnalisées) : change d’écran et peut passer un contexte. À utiliser après une réussite d’action ou pour structurer un parcours.
  • AutoSave (model‑driven, commandes) : le formulaire est enregistré avant d’exécuter la commande. Pratique pour garantir que la commande agit sur des données cohérentes.

Bon réflexe : mettez la logique de succès et d’échec au bon endroit. Par exemple, avec un formulaire canevas, placez la notification et l’enchaînement de navigation dans Form.OnSuccess et Form.OnFailure plutôt que directement après SubmitForm().

Comment améliorer l’UX (confirmation, notification) ?

Informez toujours l’utilisateur de l’effet de ses actions, demandez une confirmation pour les opérations sensibles et affichez des messages brefs, clairs et accessibles.

  • Notifications : Notify("Enregistrement créé", NotificationType.Success) pour un retour non bloquant. Limitez la durée, évitez les pavés trop longs.
  • Confirmation :
    • Canvas : construisez une boîte de dialogue avec un conteneur masqué/visible piloté par une variable (ex. UpdateContext({ showConfirm: true })), puis appliquez l’action en cas de clic sur Oui.
    • Model‑driven (commandes) : utilisez Confirm() pour afficher une boîte de dialogue standard et poursuivre uniquement si l’utilisateur confirme.

Exemples rapides : recherche, validation, navigation

  1. Recherche insensible à la casse dans une galerie (propriété Items de galProduits)
  1. Validation d’email et état du bouton (propriété DisplayMode du bouton Soumettre)
  1. Soumission + notifications + navigation
    • Formulaire canevas : placez ces formules dans les propriétés du contrôle EditForm1.

• Bouton Valider : OnSelect = SubmitForm(EditForm1)

Astuce model‑driven : sur une commande d’enregistrement, combinez confirmation et navigation.

Comment automatiser des workflows avec Power Automate ?

Power Automate est le moteur d’orchestration de la Power Platform. Depuis une application canvas Power Apps, vous pouvez déclencher des flux, passer des données, récupérer un résultat et offrir un retour utilisateur soigné sans écrire de code traditionnel. Cette interopérabilité repose sur deux briques complémentaires : des formules Power Fx côté application, et des expressions du moteur de flux côté Power Automate.

En pratique, vous créez un flux avec le déclencheur Power Apps, vous l’ajoutez à l’app, puis vous l’appelez via une formule. Le flux exécute les actions côté serveur, peut continuer même si l’app est fermée, et peut renvoyer une réponse structurée à l’application. Attention aux limites de temps de réponse synchrones, décrites plus bas.

Appeler un flux depuis Power Apps (PowerAutomate.Run)

Étapes clés. 1) Créez un flux cloud avec le déclencheur « When Power Apps calls a flow (V2) ». 2) Dans Power Apps Studio, ajoutez ce flux via le volet Power Automate. 3) Appelez-le dans une propriété d’un contrôle, par exemple OnSelect d’un bouton. Côté formule, l’appel prend la forme NomDuFlux.Run(param1, param2, …). L’ajout d’une action « Répondre à une application Power Apps ou à un flux » dans Power Automate permet de renvoyer un enregistrement à l’app.

Exemple simple. Sur un bouton, utilisez OnSelect :
Set(varReponse, MonFluxCreerTache.Run(TextInput_Titre.Text, Toggle_Urgent.Value));
LabelStatut.Text = Coalesce(varReponse.message, « Création effectuée »)

Passer des paramètres et récupérer la réponse

Pratique. Avec le déclencheur Power Apps (V2), vous définissez des paramètres typés dans le flux, puis vous les fournissez dans Run depuis l’app. Pour des structures complexes, sérialisez côté app avec JSON(), envoyez du texte au flux, puis utilisez « Analyser le contenu JSON » dans Power Automate. Pour renvoyer des données structurées vers l’app, utilisez l’action « Répondre à une application Power Apps ou à un flux » et mappez les sorties.

Exemple JSON aller-retour. Côté app :
Set(varPayload, JSON(colPanier, JSONFormat.Compact));
Set(varRes, MonFluxPanier.Run(varPayload));
ClearCollect(colRetours, ForAll(Table(ParseJSON(varRes.resultJson)), { Id: Value(ThisRecord.Value.id), Libelle: Text(ThisRecord.Value.label) }));
Ici le flux renvoie un champ resultJson (texte JSON). ParseJSON convertit le texte en objets non typés, puis vous projetez proprement les types avec Value/Text.

Quelles différences avec les expressions Flow ?

Comparaison synthétique. Power Fx est le langage de formules de Power Apps, proche d’Excel, fortement typé et pensé pour l’interface, la validation et le modelage léger des données côté client. Les expressions dans Power Automate reposent sur le Workflow Definition Language, avec des fonctions comme concat(), coalesce(), if(), json(), utilisées dans les actions et conditions du flux côté serveur.

  • Où les utiliser : Power Fx dans les propriétés et comportements de l’app, expressions Flow dans les actions/conditions du flux.
  • Syntaxe : Power Fx utilise des fonctions de style Excel (Len, Text, Filter), les flux utilisent @… et des fonctions WDL (concat, coalesce, json).
  • Typage : Power Fx est fortement typé, les flux manipulent des charges JSON et des valeurs dynamiques à caster explicitement selon le besoin.
  • Quand choisir l’un ou l’autre : faites les contrôles UI et le pré‑traitement rapide en Power Fx, confiez l’intégration, les boucles et les appels externes aux expressions du flux.

Gérer erreurs, délais et timeouts

Pratique côté app. Enveloppez l’appel Run dans IfError pour capturer les erreurs de connecteurs ou de flux, affichez un message avec Notify et gérez un état de chargement pour le feedback utilisateur. Exemple :
UpdateContext({loading: true});
IfError(
  Set(varRes, MonFlux.Run(TextInput1.Text)),
  Notify(« Erreur :  » & FirstError.Message, NotificationType.Error)
);
UpdateContext({loading: false});

  • Délai maximal de réponse synchrone depuis Power Apps : environ 120 secondes. Au‑delà, l’appel côté app échoue par timeout même si le flux continue en arrière‑plan. Scindez les traitements longs, renvoyez rapidement un accusé avec un identifiant de suivi, puis poursuivez en asynchrone.
  • Validation en entrée : testez IsBlank/IsError avant l’envoi, convertissez explicitement les types attendus par le flux.
  • Mapping de la réponse : préférez des champs de sortie explicites dans « Répondre à une application Power Apps ou à un flux » pour éviter l’ambiguïté, puis castez dans l’app si nécessaire.

Comment gérer la performance et la délégation ?

Dans des applications Power Apps en production, la performance dépend souvent moins de la puissance de l’appareil que de la manière dont vos formules Power FX accèdent aux données. Power FX est déclaratif et peut déléguer une partie du travail au serveur, ce qui évite de rapatrier des milliers de lignes côté client.

En pratique, visez une logique qui filtre, trie et agrège au plus près de la source, limite le volume de données transféré, et évite les modèles non déléguables sur de grands ensembles. Cette approche améliore la rapidité perçue, réduit les coûts réseau et fiabilise les résultats en production.

Qu’est‑ce que la délégation et pourquoi c’est clé ?

La délégation est la capacité de Power Apps à envoyer une requête vers la source de données pour qu’elle exécute elle‑même l’opération (filtre, tri, recherche), puis ne renvoyer que le minimum de résultats au client. À l’inverse, sans délégation, l’application récupère un sous‑ensemble local de lignes et calcule en mémoire. Ce mode local est limité par le paramètre Data row limit des requêtes non déléguées (500 par défaut, jusqu’à 2000) et peut produire des résultats incomplets.

Conséquences concrètes si la formule n’est pas déléguée : listes tronquées, lenteurs, forte consommation réseau, comportements différents entre test et production. L’éditeur signale ces situations avec des avertissements de délégation, typiquement soulignés en bleu, qu’il faut traiter avant mise en production.

Quelles fonctions sont (non) déléguables selon la source ?

La délégation dépend à la fois de la fonction Power FX et du connecteur. Repères utiles pour orienter vos choix :

  • Dataverse et SQL : meilleure couverture de délégation pour les opérations de Filter, SortByColumns et certaines recherches ciblées. À privilégier pour les gros volumes, avec des colonnes indexées et des vues côté source. Restez attentif aux expressions complexes imbriquées qui peuvent casser la délégation.
  • SharePoint : délégation partielle. Filtrez et triez sur des colonnes indexées, préférez des prédicats simples. Les recherches texte et combinaisons de conditions trop complexes peuvent devenir non déléguées.
  • Excel/OneDrive : pas de délégation. Réserve d’usage pour petits volumes, maquettes ou référentiels légers. Attendez‑vous à la limite de lignes locales.
  • Connecteurs API divers : la délégation varie selon le service. Quand le connecteur ne la supporte pas, déclenchez un traitement serveur via Power Automate ou un point d’API qui applique filtre et pagination.
  • Fonctions sensibles : ForAll sur des sources distantes, agrégations et transformations complexes par ligne, recherches plein texte génériques. Utilisez‑les sur des ensembles restreints déjà filtrés côté source.

Bonnes pratiques de performance

  • Filtrer et trier côté source : écrivez des formules qui se délèguent (Filter, SortByColumns) et évitez de charger une table entière pour filtrer ensuite côté client.
  • Indexer les colonnes clés : créez des index sur les champs utilisés dans vos filtres et tris dans Dataverse, SQL ou SharePoint. Préférez des prédicats simples et cohérents avec ces index.
  • Limiter ForAll : ne parcourez pas de grosses tables distantes avec ForAll. Pré‑filtrez côté source, puis utilisez des opérations ciblées (Patch) ou déportez le traitement en lot dans Power Automate.
  • Préchargement raisonné : ne préchargez que de petits référentiels stables (ClearCollect à l’App.OnStart). Pour les listes volumineuses, chargez à la demande, pagez l’affichage et montrez un indicateur de chargement.
  • Exécuter en parallèle : regroupez des appels indépendants avec Concurrent() pour réduire le temps total d’initialisation.
  • Soigner les prédicats : évitez des combinaisons Or sur plusieurs colonnes et les conversions de type implicites. Préférez des égalités, comparaisons ou débuts de chaîne compatibles avec vos index.
  • Observer et corriger : surveillez les avertissements de délégation dans l’éditeur, utilisez le Vérificateur d’application et le Moniteur pour mesurer flux réseau, temps de réponse et goulots d’étranglement.
  • Ne pas masquer le problème : n’augmentez pas la limite locale à 2000 pour contourner une formule non déléguée. Rendez d’abord la formule délégable.

Astuce : Power FX délègue automatiquement ce qu’il peut. En gardant vos formules simples et proches des capacités de la source, vous laissez le moteur optimiser le traitement au bon endroit.

Comment déboguer et appliquer les bonnes pratiques ?

Power FX étant évalué en continu, l’éditeur signale immédiatement les problèmes de formule et de données. Pour gagner en qualité et en maintenabilité, combinez une hygiène de code stricte, une gestion explicite des erreurs et l’usage systématique des outils de diagnostic intégrés.

  • Commencez petit, testez souvent, puis factorisez vos formules répétées.
  • Surveillez les avertissements de délégation, source fréquente de résultats partiels sur de grands jeux de données.
  • Commentez et mettez en forme vos formules pour accélérer les revues et la résolution d’incidents.

Indicateurs d’erreur et gestion (IsError, IfError)

Dans l’éditeur, les erreurs de syntaxe sont surlignées en rouge et les avertissements de délégation apparaissent sous forme de doubles traits bleus. Utilisez les fonctions de contrôle d’erreur pour rendre vos écrans robustes et explicites pour l’utilisateur.

Exemples pratiques :

1) Valider une saisie et afficher un message clair avec IfError :

IfError( Value(txtPrix.Text) * 1.2, Notify("Montant invalide. Corrigez la saisie.", NotificationType.Error) )

2) Vérifier la présence d’un enregistrement avant usage :

If( IsError( LookUp(Produits, Id = varId) ), Notify("Produit introuvable.", NotificationType.Warning), Navigate(scrDetail) )

3) Encadrer une opération d’enregistrement et informer l’utilisateur :

IfError( SubmitForm(frmCommande), Notify("Commande enregistrée.", NotificationType.Success), Notify("Échec de l’enregistrement.", NotificationType.Error) )

Astuce qualité : combinez IfError avec des validations amont (IsBlank, IsMatch) et, en cas d’échec, proposez une action de correction plutôt qu’un simple message.

Outils de l’éditeur: App checker et Monitor

  • Vérificateur d’application (App checker) : dresse la liste des erreurs et avertissements par catégories (formules, accessibilité, performances, délégation). Ouvrez-le depuis la barre d’outils, corrigez en suivant les liens qui vous amènent à la propriété concernée, puis relancez la vérification.
  • Moniteur (Monitor) : enregistre les événements de l’application en temps réel. Vous visualisez les appels aux connecteurs, le résultat des formules, les délais de réponse et les erreurs. Lancez le Moniteur, exécutez votre scénario utilisateur, puis filtrez sur les entrées en échec pour remonter à la formule ou à la source de données en cause.

Méthode express de diagnostic utile en recette : lancez le Moniteur, rejouez l’action qui pose problème, identifiez la requête fautive et adaptez la formule pour lever l’avertissement de délégation ou convertir les types attendus par la source de données.

Conventions, modularité et réutilisation

  • Nommage clair : préfixez vos contrôles et variables pour repérer leur rôle au premier coup d’œil (ex. scrAccueil, galProduits, btnValider, txtRecherche, varUtilisateur, colPanier).
  • Mise en forme lisible : une formule par ligne, indentation cohérente, commentaires fréquents (// ou /* ... */), pas d’espace avant la parenthèse d’une fonction.
  • DRY et composants : transformez les formules récurrentes en composants réutilisables avec propriétés, ou centralisez les constantes et couleurs dans un module dédié plutôt que de dupliquer.
  • Modularité des formules : privilégiez des expressions courtes et indépendantes par propriété, utilisez With pour éviter les répétitions locales et améliorer la performance de lecture.

En appliquant ces conventions, vous réduisez les régressions, accélérez les revues et facilitez le partage de composants entre applications, tout en gardant un code Power FX proche de la logique métier.

Jusqu’où peut‑on étendre Power FX ?

Power FX est un langage de formules puissant et cohérent, pensé pour rester accessible, qui sert autant à manipuler des données, automatiser des processus et personnaliser des interfaces qu’à relier des services entre eux. Son extensibilité repose sur trois leviers complémentaires : les connecteurs, les composants réutilisables avec propriétés et, lorsque c’est nécessaire, l’ajout de code via des éléments dédiés. L’objectif est de couvrir un large spectre de besoins sans quitter l’approche low code.

En pratique, on s’appuie d’abord sur les connecteurs standards, puis on crée des connecteurs personnalisés pour exposer des API métiers, on encapsule des formules dans des composants pour les réutiliser à l’échelle de l’organisation, et l’on bascule vers du code seulement pour des cas qui dépassent le périmètre naturel de Power FX, par exemple des rendus d’interface très spécifiques ou des traitements lourds.

Connecteurs standard et personnalisés

Les connecteurs standards donnent accès à des centaines de services et sources de données. Ils permettent de filtrer, trier, créer ou mettre à jour des enregistrements avec les mêmes fonctions Power FX, que les données soient locales en mémoire ou distantes. Lorsque l’API dont vous avez besoin n’existe pas parmi les connecteurs disponibles, un connecteur personnalisé expose des opérations REST de votre service, avec le schéma attendu et l’authentification adéquate.

  • Créez un connecteur personnalisé si votre API métier interne ou un service tiers REST n’est pas couvert par les connecteurs existants.
  • Standardisez les schémas : nommage des champs, types et validations pour simplifier les formules côté Power Apps et Power Automate.
  • Gérez les exigences d’authentification spécifiques : clé d’API, Basic, OAuth 2.0, ou entêtes personnalisés.
  • Maîtrisez des aspects techniques comme la pagination, les codes d’erreur ou les limites d’appels afin d’éviter des formules complexes côté client.
  • Exposez uniquement les opérations utiles pour respecter la gouvernance et réduire la surface d’attaque.

Composants réutilisables et fonctions “maison”

Power FX permet de créer des composants avec propriétés d’entrée et de sortie afin d’encapsuler une logique d’interface ou de calcul, puis de la partager via des bibliothèques de composants. C’est la meilleure façon d’industrialiser des formules qui reviennent souvent et d’imposer des conventions de design ou de validation.

Exemples utiles : un composant de “formatage de montant” qui centralise l’arrondi, la devise et l’affichage localisé, un validateur d’e‑mail ou de numéro de téléphone, un calculateur de TTC à partir d’un montant HT et d’un taux, un sélecteur d’étiquettes qui gère recherche et déduplication. Chaque composant expose des propriétés claires, ce qui revient à créer des “fonctions maison” réutilisables sans écrire de code impératif, tout en améliorant la lisibilité des applications.

Quelles limites et quand basculer vers du code ?

Power FX couvre l’immense majorité des scénarios courants. Certaines situations gagnent toutefois à s’appuyer sur des composants de code ou des services complémentaires.

  • Volumes importants et délégation : certaines fonctions ne sont pas délégables selon la source de données. Sur de grands jeux de données, privilégiez des requêtes délégables, sinon envisagez un service côté serveur.
  • Traitements lourds ou longue durée : agrégations massives, génération de documents volumineux, conversions binaires ou appels en cascade se prêtent mieux à Power Automate, Azure Functions ou Logic Apps.
  • Algorithmes avancés et spécialisations techniques : chiffrement, optimisation combinatoire, parsing complexe de fichiers, ou opérations sur images nécessitent du code dédié.
  • Expériences UI très spécifiques : comportements et rendus non couverts par les contrôles standards peuvent justifier des composants de code avec JavaScript via le cadre prévu à cet effet.
  • Scénarios hors ligne complexes et synchronisation : gestion fine des conflits et du cache local dépasse souvent le périmètre des simples formules.
  • Commandes en applications pilotées par modèle : tout Power FX n’y est pas disponible. Si une action n’est pas prise en charge, utilisez l’API cliente ou une extension adaptée.

À quoi sert Power FX pour la Data Science ?

Bien qu’il ne soit pas conçu comme un outil de Data Science, Power FX est précieux pour l’opérationnalisation : il sert d’interface de collecte, de contrôle et de décision au plus près des utilisateurs. Dans l’écosystème Microsoft, il permet d’orchestrer des actions entre Power Apps, Dataverse et Power Automate, puis de mettre sous les yeux des métiers les scores et recommandations produits par des modèles.

Concrètement, Power FX aide à extraire, transformer et charger (ETL) des données légères, à nettoyer, filtrer et préparer des jeux de données avant analyse dans Power BI, Excel, Python ou R, et à automatiser des tâches dans Power Automate (rapports, mises à jour, alertes). Il offre aussi une expérience utilisateur sur mesure dans Power Apps pour capter des données, visualiser des KPI et piloter des décisions.

Quels scénarios DS réalistes dans Power Platform ?

  • Préparation légère : typage et conversion avec Value, Text, DateValue, filtrage et tri avec Filter, Sort, dédoublonnage simple avec Distinct, calcul d’indicateurs et de scores règles.
  • Collecte métier : formulaires Power Apps vers Dataverse ou SharePoint avec IsMatch pour la validation, ajout de pièces jointes et métadonnées, contrôle qualité des entrées avant envoi.
  • Enrichissement : appel de connecteurs via Power Automate pour compléter des champs (référentiels, géocodage, informations d’entreprise), puis retour des valeurs dans l’application.
  • Scoring : appel d’un modèle (AI Builder ou API externe) et affichage du résultat dans l’interface avec règles d’orientation utilisateur.
  • Alerting et suivi : notifications, assignations et mise à jour de tickets selon des seuils de score.

Cas concret : une équipe service client saisit dans Power Apps les interactions clés. Power Automate enrichit la fiche via une API, appelle un modèle de churn pour obtenir un score, puis renvoie le résultat à l’app. En Power FX, l’interface colore le risque, déclenche une tâche de rétention si le score dépasse un seuil et enregistre la décision dans Dataverse.

Orchestration de modèles (AI Builder, API via Power Automate)

Deux approches complémentaires existent. Avec AI Builder, vous utilisez des modèles prêts à l’emploi ou personnalisés directement depuis Power Apps et Power Automate pour des usages comme la classification, l’extraction de texte ou l’analyse de sentiment. Avec une API externe ou Azure Machine Learning, vous exposez un point de terminaison puis l’appelez depuis Power Automate (connecteur HTTP ou connecteur personnalisé). Le flux renvoie ensuite les valeurs utiles à Power Apps, où Power FX les affiche, les formate et déclenche des actions métiers.

Exemple : dans un formulaire d’éligibilité crédit, l’utilisateur saisit les variables clés. Un flux Power Automate reçoit ces entrées, appelle l’API du modèle de scoring, analyse le JSON et écrit le score dans Dataverse. L’app récupère la valeur, et Power FX applique une logique claire pour afficher l’avis, verrouiller certains champs si risque élevé et proposer un next best action à l’agent.

Quelles limites pour l’analyse avancée ?

Power FX n’entraîne pas de modèles et ne réalise pas de calculs lourds. Les grands volumes, l’apprentissage statistique et le feature engineering intensif se traitent dans Python, R, SQL et les services Azure adaptés. Certaines fonctions comme ForAll ne sont pas délégables, ce qui limite les opérations directes sur de très grandes tables. Power FX excelle pour la logique déclarative, l’UI et les règles métiers, pas pour l’entraînement ni l’inférence massive.

Conséquences : adoptez une architecture claire. 1) Préparez et stockez les données analytiques dans des services dédiés. 2) Entraînez et versionnez les modèles dans des environnements Data Science. 3) Exposez un endpoint de scoring. 4) Utilisez Power Automate pour appeler le modèle et retourner les résultats. 5) Réservez Power FX à la collecte, aux contrôles, à l’affichage du score et aux décisions côté métier. Vous obtenez ainsi une solution robuste, gouvernée, et rapide à faire évoluer.

Conclusion : Power FX, le langage de formule à maîtriser à l’ère du No Code

En synthèse, Power FX s’impose comme le langage de formules low code de la Power Platform. Polyvalent, fortement typé, déclaratif et fonctionnel, il reprend des mécanismes familiers d’Excel pour rendre la création d’applications plus rapide et plus sûre. Les formules lient directement les propriétés de l’interface, se recalculent instantanément et s’exécutent sur des données locales ou distantes, ce qui facilite autant le prototypage que la mise en production.

À retenir et à mettre en pratique :

  • Interfaces dynamiques dans Power Apps : visibilité conditionnelle, valeurs par défaut, navigation entre écrans.
  • Qualité de saisie et calculs en temps réel : validations, totaux, formats et affichages conditionnels.
  • Automatisation avec Power Automate : déclencheurs, conditions, notifications, envoi d’emails et mises à jour de vos données.
  • Connexion et transformation des données : filtrer, trier, rechercher, convertir et préparer avant analyse dans Power BI ou Excel.
  • Réutilisation et maintenabilité : variables, collections, composants et formules claires pour accélérer les projets.
  • Ouverture de l’écosystème : connecteurs standards ou personnalisés pour SharePoint, Dataverse, Excel et services REST.

À l’ère du No Code et de l’IA générative, maîtriser Power FX devient un atout pour les équipes métiers comme pour les développeurs. Passez de la lecture à l’action : entraînez-vous sur vos cas d’usage réels et structurez votre montée en compétences avec un parcours dédié. Notre formation Data Analyst vous permet d’apprendre Power BI et la Power Platform, incluant Power Apps et Power Automate, et de préparer l’examen Microsoft PL-900.

Liora (ex DataScientest) est un institut de formation technologique fondé en 2017, qui figure parmi les acteurs de référence du secteur. Liora propose des formations à distance, en bootcamp ou en temps partiel, dans les métiers de la data, du cloud, de l’intelligence artificielle, du développement informatique, de la cybersécurité et de la transformation digitale. La méthode pédagogique est basée sur 80% de pratique asynchrone via une plateforme propriétaire ready to code, et 20% d’accompagnement en direct avec mentors et coachs carrière. Les formations permettent de valider des certifications RNCP de niveau 6 ou 7, souvent accompagnées d’un certificat de reconnaissance délivré par de grandes institutions françaises (Mines Paris, La Sorbonne, ECE, INSEEC, etc.). Elles préparent également à des certifications officielles délivrées par des entreprises technologiques majeures comme Microsoft, AWS ou Google Cloud. À ce jour, Liora compte plus de 50 000 alumni, répartis à travers le monde.

Liora – Your future. Decoded.