Skip to content
Power Platform - Apps - Automate - SharePoint
  • Pages
    • Support Power Platform - Power Apps - Power Automate
      • Licences
      • Mises à jour (waves)
      • Environnement & Solutions
        • Attribuer des droits sur un environnement
      • Power BI
      • Liens vers nos supports
    • Architecture Power Platform
      • Modéliser des données
    • Administrer Power Platform
      • Références
      • Sécurité
      • Center of Excellent (CeE)
      • Application Lifecycle Management (ALM) [WiP]
    • Power Apps
      • Références
      • Différence entre le développement impératif et le développement déclaratif
      • Les types d’objets dans Power Apps Canvas
      • Process de développement d'applications PowerApps
        • Contrôles
        • Contrôles modernes
        • Charte de nommage et bonnes pratiques Power Apps Canvas
      • Power Apps - Fonctions principales
        • Tips Fonctions
        • Fonction Patch
          • Patch des types complexes d'une liste SharePoint
        • ForAll, GroupBy et AddColumns dans Power Apps Canvas
        • icon picker
          Les formules nommées (Formulas) dans Power Apps Canvas
      • Modes opératoires
        • Application Canvas - Guide de survie (Liste SP pour mobile)
          • Création d’une application Power Apps Canvas mobile et Excel [WiP]
          • Création d’une application Power Apps Canvas
        • Flux PowerAutomate à partir de Power Apps
        • Compléter un modèle Word et générer un PDF [Premium]
        • Récupérer une photo depuis la caméra
        • Listes en cascade
        • Sélectionner un utilisateur (Liste SP)
        • Partager une application Power Apps
        • Création d’un composant MsgBox de confirmation de suppression
      • AI Builder dans Power Apps
      • Gestion du cycle de vie d’une application Power Apps (ALM)
      • Alternatives à PowerApps
      • Applications basées sur un modèle (model driven apps)
        • Modèles Word avec une application pilotée par modèle
        • Lancer un flux depuis un bouton d'une application pilotée par modèle
        • Ressources JavaScript
      • Développeur
        • JS
        • Outils externes
        • Bibliothèque de composants
      • Quizz
    • Power Automate
      • Références
      • Syntaxe générale
      • Fonctions
        • JSON
        • Tips
        • Manipulations fichiers SharePoints [ToDo]
      • Modes opératoires
        • Approbations
          • Généralités
          • Approbations simples
          • [Exo] Commande fournisseur
        • [WiP] Ajouter un bouton de colonne SharePoint qui exécute un flux
        • Créer un PDF à partir de code HTML avec image
        • [WiP] Exécuter un flux depuis une ligne sélectionnée dans Excel
          • Copier un fichier depuis une PJ Outlook
        • Envoyer "en tant que"
        • Compter des éléments, même supprimés (table Audits)
      • AI Builder dans Power Automate
      • Alternatives à Power Automate
      • Power Automate pour le Bureau (PA
        • Ressources pédagogiques
    • Dataverse
      • Références
      • Common Data Model
      • Tables [WIP]
      • Colonnes [WIP]
      • Sécurité
      • Développeur
      • Référence automatique
      • Application pilotée par modèle
        • Exemple pratique
        • Migration depuis Access
    • copilot
      Copilot
      • copilot-studio
        Copilot Studio
      • copilot
        [Exo] Copilot
        • Copilot pour Power Apps (Office Agent)
        • [Exo1] Créer une application Canvas
        • [Exo2] Créer une application Canevas Power Apps pour une solution immobilière à l’aide de Copilot dans Power Apps
        • [Exo3] Générer du texte avec GPT dans AI Builder
        • [Exo4] Créer un site Web Power Pages avec Copilot
        • [Exo5] Créer un copilote pour une solution immobilière à l’aide du langage naturel dans Copilot Studio
        • [Exeo6@ Prédiction avec AI Builder
      • power-automate
        Copilot pour Power Automate
      • power-apps
        Copilot pour Power Apps
    • Microsoft 365 & SharePoint
      • Vue d'ensemble de Microsoft 365 et SharePoint
      • Déroulé pédagogique
        • Module 1 : Microsoft 365 et SharePoint Online
        • Module 2 : Bibliothèques et listes
        • Module 3 : Intégration Office et gestion des documents
        • Module 4 : Type de contenu
        • Module 5 : Personnalisation des pages
        • Module 6 : Personnalisation des sites et des espaces de travail
        • Module 7 : Gestion de la sécurité
        • Module 8 : Workflows Power Automate
      • Bonnes pratiques
      • Sites SharePoint
        • Types de sites
        • Hiérarchies de sites
          • Sous-sites vs Hubs de sites
        • Créer un site
        • Principaux composants
          • Navigation
          • Composant WebPart dans les pages
          • Bibliothèques de document & Listes
          • Lien avec Teams
        • Pages d'un site SharePoint
        • Partage de flux d'un fichier ou d'un élément sélectionné
      • Listes SharePoint
        • Créer une liste
          • Créer une colonne
          • Gérer les vues
        • Power Automate avec des listes SharePoint
        • Mettre à jour une Liste SharePoint depuis Excel
        • TIPS
      • Bibliothèques de fichiers & dossiers SharePoint [WiP]
        • Rétention
        • Généralités
          • Création d'un nouveau document
          • Associer un modèle de document
          • Affichage et modification de documents dans le navigateur
          • Affichage et modification de documents dans le client
          • Téléchargement de documents
          • Déplacement et copie de documents
          • Affichage et modification des paramètres de la bibliothèque de documents
          • Paramètres de gestion des versions, approbation du contenu et extraction de documents
      • Intégration Power Apps
      • Droits & sécurité
      • API
      • Administration & rôles
    • Exercices
      • pl-7001
        PL-7001 - Power Apps Canvas
        • Lab 0 – Valider l'environnement de laboratoire
        • Lab 1 – Créer une application canevas à partir de données
        • Lab 2 – Modèle de données
        • Lab 3 – Créer une application canevas
        • Lab 4 – Créer l'interface utilisateur
        • Lab 5 – Données externes
        • Lab 6 – Formulaires
        • Lab 7 – Gérer les applications canevas
      • pl-7002
        PL-7002 - Power Automate
        • Lab 0 - Vérifier l’environnement de labo
        • Lab 1 - Créer des flux de cloud
        • Lab 2 - Modèle de données Dataverse
        • Lab 3 - SharePoint
        • Lab 4 - Flux d’approbation [SP]
        • Lab 5 - Flux de bouton [DV]
        • Lab 6 - Flux planifié [SP]
        • Lab 7 - Filtres de déclencheur [DV]
    • Exos Power Apps Power Automate
      • [Exo A] Flux avec une liste SharePoint
      • [Exo06] Créer une application Canvas avec Copilot
      • Flux avec une table Dataverse
        • Créer la source Dataverse
        • Créer le flux de bouton
        • Créer un flux automatisé avec filtre
      • Flux avec une liste SharePoint

Les formules nommées (Formulas) dans Power Apps Canvas


Présentation générale

Les formules nommées constituent une fonctionnalité permettant de définir des calculs réutilisables au niveau de l’application. Contrairement aux variables qui stockent une valeur à un instant donné, les formules nommées sont recalculées automatiquement chaque fois que leurs dépendances changent, à l’image des formules dans Excel.
Cette fonctionnalité est accessible via l’objet App.Formulas dans le panneau de propriétés de l’application.

Différence fondamentale avec les variables

Caractéristique
Variable (Set)
Formule nommée
Définition
Impérative (action)
Déclarative
Mise à jour
Manuelle via Set()
Automatique
Moment du calcul
À l’exécution de Set()
À chaque changement de dépendance
Emplacement
N’importe où (OnSelect, OnVisible, etc.)
App.Formulas uniquement
Réactivité
Non réactive
Réactive
There are no rows in this table

Exemple comparatif

Avec une variable :
// Dans OnVisible ou OnSelect
Set(varTotalTTC, varTotalHT * 1.20)

// Problème : si varTotalHT change ailleurs, varTotalTTC n'est pas recalculé
Avec une formule nommée :
// Dans App.Formulas
frmTotalTTC = frmTotalHT * 1.20;

// Avantage : frmTotalTTC est recalculé automatiquement dès que frmTotalHT change

Syntaxe et déclaration

Les formules nommées se déclarent dans la propriété App.Formulas accessible en sélectionnant l’objet App dans l’arborescence.

Syntaxe de base

NomFormule = Expression;

Règles syntaxiques

Chaque formule se termine par un point-virgule
Les noms de formules doivent être uniques
Les formules peuvent référencer d’autres formules nommées
L’ordre de déclaration n’a pas d’importance (résolution automatique des dépendances)

Exemple de déclaration multiple

// Formules de configuration
frmTauxTVA = 0.20;
frmSeuilAlerte = 100;
frmDevise = "€";

// Formules calculées
frmTotalHT = Sum(colPanier, Prix * Quantite);
frmMontantTVA = frmTotalHT * frmTauxTVA;
frmTotalTTC = frmTotalHT + frmMontantTVA;

// Formule conditionnelle
frmMessageAlerte = If(
frmTotalTTC > frmSeuilAlerte,
"Montant élevé : validation requise",
""
);

// Formule formatée
frmAffichageTotal = Text(frmTotalTTC, "#,##0.00") & " " & frmDevise;

Types de formules nommées

Formules scalaires

Retournent une valeur unique (texte, nombre, booléen, date).
frmUtilisateurActuel = User().FullName;
frmDateAujourdhui = Today();
frmEstWeekend = Weekday(Today()) in [1, 7];
frmNombreClients = CountRows(colClients);

Formules de table

Retournent une table complète, utile pour centraliser des filtres ou transformations.
frmClientsActifs = Filter(colClients, Statut = "Actif");

frmVentesTriees = Sort(
Filter(colVentes, Annee = Year(Today())),
Montant,
SortOrder.Descending
);

frmTopProduits = FirstN(
Sort(colProduits, NombreVentes, SortOrder.Descending),
10
);

Formules d’enregistrement

Retournent un enregistrement unique.
frmParametresApp = {
Theme: "Clair",
Langue: "fr-FR",
NombreResultatsParPage: 20,
ModeDebug: false
};

frmMeilleurVendeur = First(
Sort(colVendeurs, ChiffreAffaires, SortOrder.Descending)
);

Formules avec tables statiques

Permettent de définir des données de référence.
frmListeStatuts = Table(
{ Code: "BRO", Libelle: "Brouillon", Couleur: RGBA(150,150,150,1) },
{ Code: "ENC", Libelle: "En cours", Couleur: RGBA(0,120,212,1) },
{ Code: "TER", Libelle: "Terminé", Couleur: RGBA(16,124,16,1) },
{ Code: "ANN", Libelle: "Annulé", Couleur: RGBA(168,0,0,1) }
);

frmJoursSemaine = Table(
{ Numero: 1, Nom: "Dimanche", Abrege: "Dim", EstOuvre: false },
{ Numero: 2, Nom: "Lundi", Abrege: "Lun", EstOuvre: true },
{ Numero: 3, Nom: "Mardi", Abrege: "Mar", EstOuvre: true },
{ Numero: 4, Nom: "Mercredi", Abrege: "Mer", EstOuvre: true },
{ Numero: 5, Nom: "Jeudi", Abrege: "Jeu", EstOuvre: true },
{ Numero: 6, Nom: "Vendredi", Abrege: "Ven", EstOuvre: true },
{ Numero: 7, Nom: "Samedi", Abrege: "Sam", EstOuvre: false }
);

Cas d’usage recommandés

Centralisation des calculs métier

// Règles de calcul centralisées
frmTauxRemiseStandard = 0.05;
frmTauxRemisePremium = 0.15;
frmSeuilPremium = 1000;

frmTauxRemiseApplicable = If(
frmTotalHT >= frmSeuilPremium,
frmTauxRemisePremium,
frmTauxRemiseStandard
);

frmMontantRemise = frmTotalHT * frmTauxRemiseApplicable;
frmTotalApresRemise = frmTotalHT - frmMontantRemise;

Filtres réutilisables

// Filtres centralisés utilisables dans plusieurs galeries ou contrôles
frmCommandesEnAttente = Filter(
colCommandes,
Statut = "En attente" And DateCommande >= DateAdd(Today(), -30, TimeUnit.Days)
);

frmProduitsEnRupture = Filter(
colProduits,
Stock <= SeuilAlerte
);

frmTachesUrgentes = Filter(
colTaches,
Priorite = "Haute" And DateEcheance <= DateAdd(Today(), 7, TimeUnit.Days)
);

Données de configuration

frmConfigApp = {
NomApplication: "Gestion des ventes",
Version: "2.1.0",
Environnement: "Production",
UrlApi: "https://api.monentreprise.fr/v2",
DelaiTimeout: 30,
NombreMaxResultats: 500
};

// Utilisation
frmConfigApp.NomApplication
frmConfigApp.UrlApi

Traductions et libellés

frmLangue = "FR";

frmLibelles = If(
frmLangue = "FR",
{
BtnValider: "Valider",
BtnAnnuler: "Annuler",
MsgErreur: "Une erreur est survenue",
MsgSucces: "Opération réussie"
},
{
BtnValider: "Submit",
BtnAnnuler: "Cancel",
MsgErreur: "An error occurred",
MsgSucces: "Operation successful"
}
);

// Utilisation dans un bouton
Text: frmLibelles.BtnValider

Dépendances et ordre d’évaluation

Les formules nommées gèrent automatiquement leurs dépendances. L’ordre de déclaration n’a aucune importance.

Exemple de chaîne de dépendances

// Ces formules peuvent être déclarées dans n'importe quel ordre
frmTotalTTC = frmTotalHT + frmMontantTVA;
frmMontantTVA = frmTotalHT * frmTauxTVA;
frmTotalHT = Sum(colPanier, PrixUnitaire * Quantite);
frmTauxTVA = 0.20;

// Power Apps résout automatiquement :
// 1. frmTauxTVA (aucune dépendance)
// 2. frmTotalHT (dépend de colPanier)
// 3. frmMontantTVA (dépend de frmTotalHT et frmTauxTVA)
// 4. frmTotalTTC (dépend de frmTotalHT et frmMontantTVA)

Détection des références circulaires

Power Apps détecte et signale les références circulaires.
// Erreur : référence circulaire
frmA = frmB + 1;
frmB = frmA + 1;

Limitations et contraintes

Ce que les formules nommées ne peuvent pas faire

Limitation
Alternative
Appeler des fonctions comportementales (Collect, Navigate, Set, etc.)
Utiliser OnSelect, OnChange, etc.
Modifier des données
Utiliser des actions dans les contrôles
Être modifiées pendant l’exécution
Utiliser des variables pour les valeurs dynamiques
Accéder au contexte d’un écran spécifique
Utiliser des variables contextuelles
There are no rows in this table

Fonctions non disponibles dans App.Formulas

// Ces fonctions ne peuvent PAS être utilisées dans App.Formulas
Collect()
ClearCollect()
Remove()
Patch()
Set()
UpdateContext()
Navigate()
Back()
Notify()
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.