Support Power Platform - Apps - Automate - SharePoint - Copilot

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

FonctionDescription
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

TypeExemplesFonctions associées
Texte (Text)“Bonjour”, “ABC123”Text(), Concatenate(), Left(), Len()
Nombre (Number)42, 3.14, -100Value(), Round(), Abs(), Mod()
Booléen (Boolean)true, falseAnd(), Or(), Not(), If()
DateDate(2026, 1, 27)Today(), Now(), DateAdd(), DateDiff()
Heure (Time)Time(14, 30, 0)Hour(), Minute(), Second()
GUIDGUID()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

TypeContenuExemple de créationAccès
TablePlusieurs enregistrementsTable({A:1},{A:2})Filter(), First()
EnregistrementUne ligne de données{Nom:"X", Age:30}.NomColonne
ColonneValeurs d’un champShowColumns(T,"Col")Agrégations
Valeur scalaireDonnée unique42, "texte", trueDirectement
CollectionTable locale modifiableClearCollect(col,...)Comme une table
Variable globaleValeur persistanteSet(var, valeur)Nom de la variable
Variable contextuelleValeur locale à l’écranUpdateContext({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

ErreurProblèmeSolution
Filter(...).NomFilter retourne une table, pas un enregistrementUtiliser First(Filter(...)).Nom ou LookUp()
LookUp(...) dans une galerieLookUp retourne un enregistrement, pas une tableUtiliser Filter() comme source de la galerie