Skip to content

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").Nom

Diffé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

Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.