Les types d’objets dans Power Apps Canvas
Power Apps Canvas manipule plusieurs types d’objets fondamentaux qu’il est essentiel de distinguer pour écrire des formules correctes.
TODO Interface français
Table
Une table est une structure de données contenant zéro, un ou plusieurs enregistrements partageant les mêmes colonnes. C’est l’équivalent d’un tableau ou d’une liste.
Création explicite
Table(
{ Nom: "Dupont"; Age: 34 };
{ Nom: "Martin"; Age: 28 }
{ Nom: "Bernard"; Age: 45 }
)Sources courantes de tables
- Collections créées avec ClearCollect ou Collect
- Connecteurs de données (SharePoint, Dataverse, Excel, SQL Server)
- Résultat des fonctions Filter, Sort, Search, GroupBy
Exemple d’utilisation
// Filtrer une table pour obtenir une nouvelle table
Filter(Employes; Departement = "Ventes")
// Compter les lignes d'une table
CountRows(Clients)Enregistrement (Record)
Un enregistrement est une ligne unique de données composée de colonnes nommées. C’est un élément individuel d’une table.
Création explicite
{ Nom: "Dupont", Prenom: "Marie", Email: "m.dupont@email.fr" }Fonctions retournant un enregistrement
| Fonction | Description |
| First(Table) | Premier enregistrement d’une table |
| Last(Table) | Dernier enregistrement d’une table |
| Index(Table, N) | Enregistrement à la position N |
| LookUp(Table, Condition) | Premier enregistrement correspondant à une condition |
Exemple d’utilisation
// Récupérer le premier client
First(Clients)
// Trouver un employé spécifique
LookUp(Employes, Matricule = "EMP001")
// Accéder à une colonne d'un enregistrement
LookUp(Employes, Matricule = "EMP001").NomDifférence entre table et enregistrement
// Ceci est une TABLE (même avec un seul résultat)
Filter(Clients, Ville = "Paris")
// Ceci est un ENREGISTREMENT
LookUp(Clients, Ville = "Paris")Colonne
Une colonne représente un champ unique au sein d’une table ou d’un enregistrement. On y accède via l’opérateur point.
Accès à une colonne
// Depuis un enregistrement
First(Clients).Nom
// Extraire une colonne entière d'une table (retourne une table à une colonne)
ShowColumns(Clients, Nom)Fonctions d’agrégation sur colonnes
// Somme d'une colonne numérique
Sum(Ventes, Montant)
// Moyenne
Average(Employes, Salaire)
// Valeur maximale
Max(Produits, Prix)
// Valeurs distinctes (retourne une table)
Distinct(Clients, Ville)Valeur scalaire
Une valeur scalaire est une donnée unique et indivisible : texte, nombre, booléen, date, etc.
Types de valeurs scalaires
| Type | Exemples | Fonctions associées |
| Texte (Text) | “Bonjour”, “ABC123” | Text(), Concatenate(), Left(), Len() |
| Nombre (Number) | 42, 3.14, -100 | Value(), Round(), Abs(), Mod() |
| Booléen (Boolean) | true, false | And(), Or(), Not(), If() |
| Date | Date(2026, 1, 27) | Today(), Now(), DateAdd(), DateDiff() |
| Heure (Time) | Time(14, 30, 0) | Hour(), Minute(), Second() |
| GUID | GUID() | NewGuid() |
Exemple d’utilisation
// Extraction d'une valeur scalaire depuis une table
LookUp(Employes, Matricule = "EMP001").Salaire
// Opérations sur valeurs scalaires
Text(Today(), "dd/mm/yyyy")
Upper("dupont")
Round(3.14159, 2)Collection
Une collection est une table stockée localement dans l’application, en mémoire. Elle peut être créée, modifiée et supprimée pendant l’exécution.
Création et manipulation
// Créer ou remplacer une collection
ClearCollect(colPanier,
{ Article: "Stylo", Qte: 5, Prix: 2.50 },
{ Article: "Cahier", Qte: 3, Prix: 4.00 }
)
// Ajouter des enregistrements
Collect(colPanier, { Article: "Gomme", Qte: 2, Prix: 1.00 })
// Modifier un enregistrement
Patch(colPanier, LookUp(colPanier, Article = "Stylo"), { Qte: 10 })
// Supprimer des enregistrements
Remove(colPanier, LookUp(colPanier, Article = "Gomme"))
// Vider une collection
Clear(colPanier)Variables
Power Apps propose deux types de variables pour stocker des valeurs temporaires.
Variable globale
Accessible depuis tous les écrans de l’application.
// Définir une variable globale
Set(varUtilisateurConnecte, User().FullName)
Set(varCompteur, 0)
Set(varModeEdition, true)
// Utilisation
If(varModeEdition, "Édition", "Lecture")Variable contextuelle
Limitée à l’écran où elle est définie.
// Définir une variable contextuelle
UpdateContext({ locAfficherPopup: true })
UpdateContext({ locClientSelectionne: ThisItem })
// Définir plusieurs variables à la fois
UpdateContext({
locPage: 1;
locFiltre: "Tous";
locChargement: false
})Tableau comparatif des types
| Type | Contenu | Exemple de création | Accès |
| Table | Plusieurs enregistrements | Table({A:1},{A:2}) | Filter(), First() |
| Enregistrement | Une ligne de données | {Nom:"X", Age:30} | .NomColonne |
| Colonne | Valeurs d’un champ | ShowColumns(T,"Col") | Agrégations |
| Valeur scalaire | Donnée unique | 42, "texte", true | Directement |
| Collection | Table locale modifiable | ClearCollect(col,...) | Comme une table |
| Variable globale | Valeur persistante | Set(var, valeur) | Nom de la variable |
| Variable contextuelle | Valeur locale à l’écran | UpdateContext({v:1}) | Nom de la variable |
Conversions entre types
Table vers enregistrement
// Obtenir un enregistrement depuis une table
First(MaTable)
LookUp(MaTable; ID = 5)
Index(MaTable; 3)Enregistrement vers table
// Encapsuler un enregistrement dans une table
Table(MonEnregistrement)Table vers valeur scalaire
// Extraire une valeur unique
First(Clients).Nom
LookUp(Produits, Code = "P001").Prix
Sum(Ventes, Montant)
CountRows(Commandes)Erreurs courantes à éviter
| Erreur | Problème | Solution |
| Filter(...).Nom | Filter retourne une table, pas un enregistrement | Utiliser First(Filter(...)).Nom ou LookUp() |
| LookUp(...) dans une galerie | LookUp retourne un enregistrement, pas une table | Utiliser Filter() comme source de la galerie |