Le formulaire est le contrôle de Power Apps qui affiche et enregistre une ligne d’une source de données : liste SharePoint, table Dataverse, table SQL. Il crée une carte par colonne, gère trois modes (création, modification, affichage) et enregistre tout en une seule fonction, SubmitForm. Voici comment le créer, valider la saisie, afficher des champs selon les réponses et le découper en étapes.
En bref : le formulaire Power Apps en 3 points
- Insérez un contrôle Formulaire, choisissez la source de données et la ligne à afficher (propriété Item).
- Passez-le en création, modification ou affichage avec NewForm, EditForm ou ViewForm, puis enregistrez avec SubmitForm.
- Les règles de saisie (champ obligatoire, champ visible selon une réponse) se règlent carte par carte, avec des formules.
Créer un formulaire et le relier à une source
Le formulaire est un contrôle de Power Apps : on le branche sur une source de données, et il génère une carte par champ de cette source.
Deux propriétés suffisent pour démarrer : DataSource, la source (liste SharePoint, table Dataverse), et Item, la ligne à afficher ou à modifier, le plus souvent la ligne choisie dans une galerie : Galerie1.Selected.


Les contrôles classiques ont un rendu daté : préférez le formulaire des contrôles modernes, plus lisible et plus facile à adapter au mobile.


Un formulaire est composé de cartes de données.
Les propriétés d’un formulaire Power Apps
Les formulaires possèdent plusieurs propriétés importantes qu’il faut savoir manipuler :

Propriétés des cartes Power Apps
Les cartes possèdent par défaut un certain nombre de contrôles. Par défaut ces cartes sont verrouillées mais sont déverrouillables en allant dans les paramètres avancés :


StarVisible : Astérisque visible si le champ est obligatoire
ErrorMessage : Message d’erreur visible si la valeur est en erreur lors de la soumission du formulaire
DataCardValue : Champ de saisie
DataCardKey : Nom du champ affiché, branché par défaut sur le nom de la colonne mais modifiable si besoin
Les cartes possèdent elles-mêmes un certain nombre de propriétés qu’il est très important de connaître :

| Propriété | Détail |
|---|---|
| DataField | Nom interne du champ à mettre à jour de la soumission du formulaire |
| Default | Valeur par défaut à afficher lorsque le formulaire est en mode View ou Edit à partir de l’item renseigné |
| DisplayName | Nom du label pour ce champ, par défaut branché sur le display name de la colonne |
| MaxLength | Taille max du champ, par défaut branché sur la longueur max du champ dans la source de données |
| Required | Indique si le champ est obligatoire ou non (et conditionne l’affichage de l’astérisque). Par défaut, correspond à ce qui est renseigné dans la source lors de la création de la carte. |
| Update | Valeur avec laquelle mettre à jour le champ lors de la soumission du formulaire |
Les trois modes : création, modification, affichage
| Mode | Fonction | Ce que fait le formulaire |
|---|---|---|
| Création | NewForm(Formulaire1) | Champs vides ou valeurs par défaut ; SubmitForm crée une ligne |
| Modification | EditForm(Formulaire1) | Affiche la ligne de la propriété Item ; SubmitForm la met à jour |
| Affichage | ViewForm(Formulaire1) | Lecture seule, rien n’est modifiable |
On place ces fonctions sur un bouton : par exemple, le bouton « Nouvelle demande » exécute NewForm(Formulaire1); Navigate(EcranFormulaire). La propriété Mode du formulaire indique le mode en cours (FormMode.New, FormMode.Edit, FormMode.View) et permet d’adapter un titre ou un bouton.
Enregistrer : SubmitForm ou Patch
Pour enregistrer, une seule fonction : SubmitForm(Formulaire1), placée sur le bouton Enregistrer.

Au moment du SubmitForm, Power Apps lit la propriété Update de chaque carte et écrit ces valeurs dans la source. Trois propriétés du formulaire complètent l’enregistrement :
- OnSuccess : ce qui se passe après un enregistrement réussi, par exemple Notify("Demande enregistrée", NotificationType.Success); Back().
- OnFailure : ce qui se passe en cas d’échec, par exemple Notify(Formulaire1.Error, NotificationType.Error).
- LastSubmit : la ligne qui vient d’être enregistrée, avec son identifiant, utile pour enchaîner (Formulaire1.LastSubmit.ID).
ResetForm(Formulaire1) vide les champs, par exemple sur un bouton Annuler.
| Critère | SubmitForm | Patch |
|---|---|---|
| Usage | Enregistrer un formulaire | Écrire sans formulaire, ou réunir plusieurs formulaires |
| Contrôles de saisie | Automatiques : champs obligatoires, types, longueur | À écrire soi-même |
| Messages et suite | OnSuccess, OnFailure, LastSubmit | IfError, Notify, ligne renvoyée par Patch |
| Plusieurs formulaires | Un SubmitForm par formulaire | Patch(Source, Defaults(Source), Formulaire1.Updates, Formulaire2.Updates) |
En règle générale : SubmitForm pour un formulaire classique, Patch dès qu’il faut écrire sans formulaire ou réunir plusieurs formulaires. Le détail est dans notre article sur la fonction Patch dans Power Apps.
Valider la saisie et afficher des messages d’erreur
- Champ obligatoire : propriété Required de la carte, à true ou à une condition, par exemple DataCardValue_Type.Selected.Value = "Externe".
- Formulaire complet : Formulaire1.Valid vaut true quand tous les champs obligatoires sont remplis et conformes. On s’en sert pour activer le bouton Enregistrer : If(Formulaire1.Valid, DisplayMode.Edit, DisplayMode.Disabled) dans sa propriété DisplayMode.
- Format : IsMatch vérifie une adresse e-mail ou un code, par exemple IsMatch(DataCardValue_Mail.Text, Match.Email), à placer dans la propriété Visible d’une étiquette d’avertissement ou dans la condition du bouton.
- Message clair : l’étiquette ErrorMessage de chaque carte affiche l’erreur du champ ; Notify affiche un bandeau en haut de l’écran.
Afficher ou masquer un champ selon une réponse
Chaque carte a une propriété Visible. Pour n’afficher le champ « Précisez » que si l’utilisateur choisit « Autre » dans une liste de choix SharePoint : Visible = DataCardValue_Motif.Selected.Value = "Autre".
Deux précautions : rendez la carte obligatoire seulement quand elle est visible (Required = Self.Visible), sinon le formulaire refuse de s’enregistrer ; et, si besoin, videz la valeur masquée dans la propriété Update de la carte : If(Self.Visible, DataCardValue_Precision.Text, Blank()).
Mettre en forme un formulaire
Faire varier le nombre de colonnes à afficher
En modifiant le nombre de colonnes on peut dynamiser son formulaire et accorder plus de place aux cartes qui en ont besoin. Par exemple le formulaire ci-dessous est un formulaire basé sur 6 colonnes, avec l’option « aligner sur les colonnes » activée :
- Première ligne chaque carte prend un espace de 2/6
- Deuxième ligne chaque carte prend un espace de 3/6
- Dernière ligne la carte prend un espace de 6/6
Grâce à cela je peux laisser plus d’espace pour la partie note qui nécessite une certaine longueur de champs.

Utiliser des cartes personnalisées
Afin de créer des sections libres supplémentaires on peut utiliser des cartes personnalisées qui ne vont rien mettre à jour mais servir uniquement d’affichage ou de séparation dans un formulaire.

Rendre les champs Responsive
Si la taille de votre application varie en fonction de la taille de l’écran, il est utile d’activer l’option « Ajustement à la largeur » sur une carte de donnée. Cette option va permettre aux contrôles dans la carte de s’adapter en largeur automatiquement par rapport à la taille du parent.

Formulaire en plusieurs étapes
Pour une saisie longue, découpez le formulaire en étapes : un formulaire par étape, tous branchés sur la même source. Une variable indique l’étape affichée : le bouton Suivant exécute Set(varEtape, varEtape + 1), et la propriété Visible de chaque formulaire vaut varEtape = 1, varEtape = 2, et ainsi de suite. À la dernière étape, un seul Patch enregistre tout.

Le Patch réunit les propriétés Updates de chaque formulaire : Patch(Demandes, Defaults(Demandes), Formulaire1.Updates, Formulaire2.Updates).

Performance : grandes listes et délégation
Le formulaire n’affiche qu’une ligne : il est rapide. Ce qui ralentit, c’est la galerie ou la recherche qui sert à choisir la ligne, et les listes déroulantes alimentées par une autre table. Sur une grande liste SharePoint ou une table Dataverse, utilisez des filtres délégables (Filter, Search, LookUp sur des colonnes indexées) et évitez de charger toute la table dans une collection.
Formulaires des applications pilotées par modèle
Les applications pilotées par modèle, construites sur Dataverse, ont leurs propres formulaires : on les dessine dans le concepteur de formulaires, sans formule Power Fx (formulaire principal, création rapide, affichage rapide). Les champs obligatoires et les champs à masquer s’y règlent par des règles métier. Le formulaire d’application canevas décrit dans cet article laisse plus de liberté de mise en page ; celui d’une application pilotée par modèle se construit plus vite sur des données Dataverse.
Pour progresser : notre formation Power Apps de 2 ou 3 jours, à partir de 3 500 € HT la session, finançable par votre OPCO et certifiée Qualiopi, et nos projets Power Apps sur mesure.
À lire aussi :
- Kizeo Forms ou Power Apps pour les formulaires terrain
- Le tuto Power Apps pour débutant : votre première application
- Le tuto Power Apps : votre deuxième application
- Power Apps, c’est quoi : définition, usages et prix
Questions fréquentes
Comment créer un formulaire dans Power Apps ?
Insérez un contrôle Formulaire, choisissez la source de données (DataSource), indiquez la ligne à afficher dans la propriété Item, puis ajoutez un bouton qui exécute SubmitForm. Les cartes sont créées automatiquement, une par champ.
Quelle différence entre SubmitForm et Patch ?
SubmitForm enregistre un formulaire en vérifiant les champs obligatoires et les types, avec OnSuccess et OnFailure pour la suite. Patch écrit dans une source sans formulaire, ou réunit plusieurs formulaires avec leurs propriétés Updates ; les contrôles de saisie sont alors à écrire soi-même.
Comment rendre un champ obligatoire selon une condition ?
Dans la propriété Required de la carte, remplacez true par une condition, par exemple DataCardValue_Type.Selected.Value = "Externe". Le formulaire refusera l’enregistrement tant que le champ est vide et que la condition est vraie.
Comment afficher un champ selon une réponse ?
Réglez la propriété Visible de la carte sur une condition, par exemple DataCardValue_Motif.Selected.Value = "Autre", et sa propriété Required sur Self.Visible pour ne pas bloquer l’enregistrement quand le champ est masqué.
Comment faire un formulaire en plusieurs étapes ?
Créez un formulaire par étape sur la même source, affichez-les tour à tour avec une variable (Set(varEtape, 2)) dans leur propriété Visible, puis enregistrez tout à la dernière étape avec Patch(Source, Defaults(Source), Formulaire1.Updates, Formulaire2.Updates).






