Partager via


Comprendre les variables des applications canevas

Si vous avez utilisé un autre outil de programmation, comme Visual Basic ou JavaScript, vous pouvez demander : Où sont les variables ? Power Apps fonctionne différemment et a besoin d’une approche différente. Au lieu de chercher une variable quand vous créez une application canevas, demandez-vous Que feriez-vous dans Excel ?

Dans d’autres outils, vous pouvez effectuer explicitement un calcul et stocker le résultat dans une variable. Toutefois, Power Apps et Excel recalculent automatiquement les formules en tant que données d’entrée modifiées. Vous n’avez donc généralement pas besoin de créer ou de mettre à jour des variables. En utilisant cette approche, vous créez, comprenez et gérez plus facilement votre application.

Parfois, vous devez utiliser des variables dans Power Apps, qui étend le modèle d’Excel en ajoutant des formules de comportement. Ces formules sont exécutées lorsque, par exemple, un utilisateur sélectionne un bouton. Dans une formule de comportement, il est souvent utile de définir une variable à utiliser dans d’autres formules.

De manière générale, évitez d’utiliser des variables. Mais parfois, seule une variable vous permet de créer l’expérience souhaitée. Les variables sont créées et typées implicitement lorsqu’elles apparaissent dans des fonctions qui définissent leurs valeurs.

Convertir Excel en Power Apps

Excel

Examinons le fonctionnement d’Excel. Une cellule peut avoir une valeur, comme un nombre ou une chaîne, ou une formule basée sur les valeurs d’autres cellules. Lorsque vous entrez une valeur différente dans une cellule, Excel recalcule automatiquement toutes les formules qui dépendent de la nouvelle valeur. Vous n’avez pas besoin d’effectuer de programmation pour activer ce comportement.

Dans l’exemple suivant, la cellule A3 utilise la formule A1+A2. Si A1 ou A2 change, A3 recalcule automatiquement pour afficher la modification. Ce comportement ne nécessite aucun codage en dehors de la formule elle-même.

Animation de recalcul de la somme de deux nombres dans Excel.

Excel ne possède pas de variables. La valeur d’une cellule avec une formule change en fonction de son entrée, mais il n’existe aucun moyen de mémoriser le résultat d’une formule et de le stocker dans une cellule ou n’importe où ailleurs. Si vous modifiez la valeur d’une cellule, la feuille de calcul entière peut changer et toutes les valeurs calculées précédemment sont perdues. Vous pouvez copier et coller des cellules manuellement, mais cela n'est pas possible avec des formules.

Power Apps

Les applications que vous créez dans Power Apps fonctionnent beaucoup comme Excel. Au lieu de mettre à jour des cellules, vous ajoutez des contrôles n’importe où sur un écran et nommez-les pour une utilisation dans les formules.

Par exemple, vous pouvez copier le comportement Excel dans une application en ajoutant un contrôle Label nommé Label1 et deux contrôles d’entrée de texte nommés TextInput1 et TextInput2. Si vous définissez la propriété Textde Label1 sur TextInput1 + TextInput2, elle affiche toujours la somme des nombres dans TextInput1 et TextInput2 automatiquement.

Calcul de la somme de deux nombres dans Power Apps.

Notez que le contrôle Label1 est sélectionné, ce qui affiche sa formule Text dans la barre de formule en haut de l’écran. La formule TextInput1 + TextInput2 crée une dépendance entre ces contrôles, tout comme les dépendances entre les cellules d’un classeur Excel. Nous allons maintenant changer la valeur de TextInput1 :

Animation du calcul de la somme de deux nombres dans Power Apps.

La formule de Label1 recalcule et affiche automatiquement la nouvelle valeur.

Dans Power Apps, vous utilisez des formules pour définir non seulement la valeur principale d’un contrôle, mais également les propriétés telles que la mise en forme. Dans l’exemple suivant, une formule pour la propriété Color de l’étiquette affiche automatiquement des valeurs négatives en rouge. La fonction If semble familière à partir d’Excel :

If( Value(Label1.Text) < 0, Red, Black )

Animation de mise en forme conditionnelle.

Vous utilisez des formules pour de nombreux scénarios :

  • Lorsque le GPS de votre appareil est activé, un contrôle de carte affiche votre emplacement actuel avec une formule qui utilise Location.Latitude et Location.Longitude. Lorsque vous vous déplacez, la carte effectue automatiquement le suivi de votre emplacement.
  • D’autres utilisateurs mettent à jour les sources de données. Par exemple, d’autres personnes de votre équipe peuvent mettre à jour des éléments d’une liste. Lorsque vous actualisez une source de données, toutes les formules dépendantes recalculent automatiquement pour afficher les données mises à jour. Par exemple, vous pouvez définir la propriété Items d’une galerie sur la formule Filter( SharePointList), qui affiche automatiquement le jeu d’enregistrements nouvellement filtré.

Avantages

L’utilisation de formules pour créer des applications présente de nombreux avantages :

  • Si vous connaissez Excel, vous connaissez Power Apps. Le modèle et le langage des formules sont identiques.
  • Si vous avez utilisé d’autres outils de programmation, réfléchissez à la quantité de code dont vous avez besoin pour effectuer ces exemples. Dans Visual Basic, vous allez écrire un gestionnaire d’événements pour l’événement de modification sur chaque contrôle d’entrée de texte. Le code pour effectuer le calcul dans chacun d’eux est redondant et peut sortir de la synchronisation, ou vous devrez écrire une sous-routine commune. Dans Power Apps, vous effectuez tout cela avec une formule à une seule ligne.
  • Pour voir où vient le texte de Label1, vous savez exactement où regarder : la formule dans la propriété Text . Il n’existe aucun autre moyen de modifier le texte de ce contrôle. Dans un outil de programmation traditionnel, n’importe quel gestionnaire d’événements ou sous-routine peut modifier la valeur de l’étiquette, n’importe où dans le programme. Cela rend difficile le suivi du moment et de l’endroit où une variable a changé.
  • Si vous modifiez un contrôle de curseur, puis changez d’avis, vous pouvez remplacer le curseur par sa valeur d’origine. C’est comme si rien n’avait changé : l’application affiche les mêmes valeurs de contrôle que précédemment. Il n’y a aucune conséquence pour l’expérimentation et se demander « et si », comme on le fait dans Excel.

En général, si vous pouvez faire quelque chose avec une formule, c'est préférable. Reposez-vous sur le moteur de formules de Power Apps.

Savoir quand utiliser des variables

Modifions notre additionneur simple pour qu’il se comporte comme une machine à additionner traditionnelle, avec un total cumulé. Lorsque vous sélectionnez le bouton Ajouter , vous ajoutez un nombre au total en cours d’exécution. Lorsque vous sélectionnez le bouton Effacer , vous réinitialisez le total en cours d’exécution sur zéro.

Écran d’affichage Description
Application avec un contrôle Saisie de texte, une Étiquette et deux boutons. Lorsque l’application démarre, le total cumulé est de 0.

Le point rouge représente le doigt de l’utilisateur dans la zone de saisie de texte, où l’utilisateur entre 77.
Le contrôle Saisie de texte contient 77, et le bouton Add est enfoncé. L’utilisateur sélectionne le bouton Add.
Le total est de 77, et 77 autres y sont ajoutés. 77 est ajouté au total cumulé.

L’utilisateur sélectionne le bouton Add à nouveau.
Le total est de 154 avant qu’il ne soit effacé. 77 est à nouveau ajouté au total cumulé, ce qui donne 154.

L’utilisateur sélectionne le bouton Clear.
Le total est effacé. Le total cumulé est réinitialisé sur 0.

Notre machine à additionner utilise un élément qui n’existe pas dans Excel : un bouton. Dans cette application, vous ne pouvez pas utiliser uniquement des formules pour calculer le total cumulé, car sa valeur dépend d’une série d’actions effectuées par l’utilisateur. Au lieu de cela, vous enregistrez et mettez à jour le total en cours d’exécution manuellement. La plupart des outils de programmation stockent ces informations dans une variable.

Parfois, vous avez besoin d’une variable pour que votre application se comporte comme vous le souhaitez, mais cette approche est fournie avec des mises en garde :

  • Vous mettez manuellement à jour le total en cours d’exécution. Le recalcul automatique ne le fait pas pour vous.
  • Le total en cours d’exécution n’est pas calculé en fonction des valeurs d’autres contrôles. Cela dépend du nombre de fois où l’utilisateur sélectionne le bouton Ajouter et quelle valeur se trouve dans le contrôle d’entrée de texte à chaque fois. L’utilisateur a-t-il entré 77 et sélectionné Ajouter deux fois, ou est-il entré 24 et 130 pour chaque ajout ? Vous ne pouvez pas dire la différence une fois le total atteint 154.
  • Les modifications apportées au total peuvent provenir de différentes actions. Dans cet exemple, les boutons Ajouter et Effacer mettent à jour le total. Si l’application ne se comporte pas comme prévu, quel bouton provoque le problème ?

Utiliser une variable globale

Pour créer une calculatrice d'addition, vous avez besoin d'une variable pour contenir le total cumulé. Les variables les plus simples à utiliser dans Power Apps sont des variables globales.

Fonctionnement des variables globales :

  • Définissez la valeur d’une variable globale avec la fonction Set . Set( MyVar, 1 ) définit la variable globale MyVar sur la valeur 1.
  • Utilisez la variable globale en référençant le nom utilisé avec la fonction Set . Dans ce cas, MyVar retourne 1.
  • Les variables globales peuvent contenir n’importe quelle valeur, y compris des chaînes, des nombres, des enregistrements et des tables.

Reconstruisez la calculatrice en utilisant une variable globale :

  1. Ajoutez un contrôle d’entrée de texte nommé TextInput1 et deux boutons nommés Button1 et Button2.

  2. Définissez la propriété Text de Bouton1 sur « Add » et la propriété Text de Bouton2 sur « Clear ».

  3. Pour mettre à jour le total en cours d’exécution lorsqu’un utilisateur sélectionne le bouton Ajouter , définissez sa propriété OnSelect sur cette formule :

    Set( RunningTotal, RunningTotal + TextInput1 )

    Cette formule crée RunningTotal en tant que variable globale qui contient un nombre en raison de l’opérateur + . Référencez RunningTotal n’importe où dans l’application. Lorsque l’utilisateur ouvre l’application, RunningTotal a une valeur initiale vide.

    La première fois qu’un utilisateur sélectionne le bouton Ajouter et que Set s'exécute, RunningTotal est égal à la valeur RunningTotal + TextInput1.

    Capture d’écran de la propriété OnSelect du bouton Ajouter défini sur la fonction Set.

  4. Pour définir le total en cours d’exécution sur 0 lorsque l’utilisateur sélectionne le bouton Effacer , définissez sa propriété OnSelect sur cette formule :

    Set( RunningTotal, 0 )

    Capture d’écran de la propriété OnSelect du bouton Effacer défini sur la fonction Set.

  5. Ajoutez un contrôle Étiquette et définissez sa propriété Text sur RunningTotal.

    Cette formule recalcule et affiche automatiquement la valeur de RunningTotal à mesure qu’elle change en fonction des boutons sélectionnés par l’utilisateur.

    Capture d’écran de la propriété Text de l’étiquette définie sur le nom de la variable.

  6. Affichez un aperçu de l’application. Entrez un nombre dans la zone de texte et sélectionnez le bouton Ajouter quelques fois. Lorsque vous êtes prêt, revenez à l’expérience de création à l’aide de la touche Esc.

    Capture d’écran du contrôle d’entrée de texte avec une valeur et de l’étiquette avec le total en cours d’exécution.

  7. Pour afficher la valeur de la variable globale, sélectionnez Variables dans le menu de création de l’application.

    Capture d’écran du menu Variables et collections.

  8. Pour afficher tous les emplacements où la variable est définie et utilisée, sélectionnez-la sous Variables globales.

    Capture d’écran de la liste des emplacements où la variable est utilisée.

Types de variable

Les trois types de variables de Power Apps sont :

Type de variable Portée Description Fonctions qui établissent
Variables globales App Utilisez des variables globales pour contenir un nombre, une chaîne de texte, une valeur booléenne, un enregistrement, une table ou une autre valeur que vous référencez n’importe où dans l’application. Set
Variables de contexte Écran Utilisez des variables de contexte pour passer des valeurs à un écran, comme les paramètres dans d’autres langages. Vous les référencez à partir d’un seul écran. UpdateContext
Navigate
Collections App Utilisez des collections pour contenir une table que vous pouvez référencer n’importe où dans l’application. Vous pouvez modifier le contenu de la table et l’enregistrer sur l’appareil local pour une utilisation ultérieure. Collect
ClearCollect

Créer et supprimer des variables

Les variables sont créées implicitement lorsqu’elles apparaissent dans une fonction Set, UpdateContext, Navigate, Collect ou ClearCollect . Pour déclarer une variable et son type, incluez-la dans l’une de ces fonctions n’importe où dans votre application. Ces fonctions ne créent pas de variables ; ils remplissent uniquement des variables avec des valeurs. Vous ne déclarez jamais explicitement des variables comme vous le pouvez dans un autre outil de programmation, et toutes les saisies sont implicites de l’utilisation.

Par exemple, vous pourriez avoir un contrôle Bouton avec une formule OnSelect égale à Set( X, 1 ). Cette formule établit X comme une variable avec un type de nombre. Vous utilisez X dans les formules en tant que nombre, et cette variable a une valeur vide après avoir ouvert l’application, mais avant de sélectionner le bouton. Lorsque vous sélectionnez le bouton, vous donnez à X la valeur de 1.

Si vous ajoutez un autre bouton et définissez sa propriété OnSelect sur Set( X, « Hello », une erreur se produit, car le type (chaîne de texte) ne correspond pas au type dans l’ensemble précédent (nombre). Toutes les définitions implicites de la variable doivent s’accorder sur le type. Là encore, tout cela se produit parce que vous mentionnez X dans les formules, et non pas parce que ces formules s’exécutent réellement.

Supprimez une variable en supprimant toutes les fonctions Set, UpdateContext, Navigate, Collect ou ClearCollect qui établissent implicitement la variable. Sans ces fonctions, la variable n’existe pas. Supprimez également les références à la variable, car elles provoquent une erreur.

Durée de vie et valeur initiale de la variable

Les variables restent en mémoire pendant l’exécution de l’application. Lorsque l’application se ferme, les valeurs des variables sont perdues.

Stockez le contenu d’une variable dans une source de données à l’aide des fonctions Patch ou Collect . Stockez des valeurs dans des regroupements sur l’appareil local à l’aide de la fonction SaveData .

Lorsque l’utilisateur ouvre l’application, toutes les variables commencent par une valeur initiale de vide.

Variables de lecture

Utilisez le nom de la variable pour lire sa valeur. Par exemple, définissez une variable avec cette formule :

Set( Radius, 12 )

Ensuite, utilisez Radius n’importe où vous utilisez un nombre, et il est remplacé par 12 :

Pi() * Power( Radius, 2 )

Si vous donnez à une variable de contexte le même nom qu’une variable globale ou une collection, la variable de contexte est prioritaire. Vous pouvez référencer la variable globale ou la collection à l’aide de l’opérateur de désambiguation[@Radius].

Noms de variables réservés

N’utilisez aucun des noms de variables suivants. Ces noms sont des propriétés d’application, et leur utilisation peut entraîner des collisions de noms de variables qui entraînent un comportement inattendu de l’application.

  • ActiveScreen
  • DesignHeight
  • DesignWidth
  • Height
  • MinScreenHeight
  • MinScreenWidth
  • SizeBreakpoints
  • StudioVersion
  • TestCaseId
  • Tests
  • TestSuiteId
  • Theme
  • Width

Utiliser une variable de contexte

Examinons comment vous créez une machine ajoutée à l’aide d’une variable de contexte au lieu d’une variable globale.

Fonctionnement des variables de contexte

  • Vous établissez et définissez implicitement les variables de contexte à l’aide de la fonction UpdateContext ou Navigate. Au démarrage de l’application, la valeur initiale de chaque variable de contexte est vide.
  • Vous mettez à jour des variables de contexte avec des enregistrements. Dans d’autres outils de programmation, vous utilisez généralement « = » pour l’affectation, comme « x = 1 ». Pour les variables de contexte, utilisez { x: 1 } à la place. Lorsque vous utilisez une variable de contexte, utilisez son nom directement sans la syntaxe d’enregistrement.
  • Vous pouvez également définir une variable de contexte lorsque vous utilisez la fonction Navigate pour afficher un écran. Si vous pensez qu’un écran est un type de procédure ou de sous-routine, cette approche est semblable au passage de paramètres dans d’autres outils de programmation.
  • À l’exception de Navigate, les variables de contexte sont limitées au contexte d’un seul écran, d’où elles tirent leur nom. Vous ne pouvez pas les utiliser ou les définir en dehors de ce contexte.
  • Les variables de contexte peuvent contenir n’importe quelle valeur, y compris des chaînes, des nombres, des enregistrements et des tableaux.

Reconstruisez la machine à calculer en utilisant une variable de contexte :

  1. Ajoutez un contrôle Saisie de texte nommé TextInput1 et deux boutons, nommés Bouton1 et Bouton2.

  2. Définissez la propriété Text de Bouton1 sur « Add » et la propriété Text de Bouton2 sur « Clear ».

  3. Pour mettre à jour le total cumulé chaque fois qu’un utilisateur sélectionne le bouton Ajouter, définissez sa propriété OnSelect sur la formule suivante :

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    Cette formule établit RunningTotal comme variable de contexte qui contient un nombre en raison de l’opérateur + . Vous faites référence à RunningTotal n’importe où dans cet écran. Lorsque l’utilisateur ouvre l’application, RunningTotal a une valeur initiale vide.

    La première fois que l’utilisateur sélectionne le bouton Ajouter et updateContext s’exécute, RunningTotal est défini sur la valeur RunningTotal + TextInput1.

    Propriété OnSelect du bouton Add avec updatecontext.

  4. Pour définir le total cumulé sur 0 chaque fois que l’utilisateur sélectionne le bouton Clear, définissez sa propriété OnSelect sur la formule suivante :

    UpdateContext( { RunningTotal : 0 } )

    Là encore, utilisez UpdateContext avec la formule UpdateContext( { RunningTotal : 0 } ).

    Propriété OnSelect du bouton Clear avec updatecontext.

  5. Ajoutez un contrôle Étiquette et définissez sa propriété Text sur RunningTotal.

    Cette formule est recalculée automatiquement et permet à l’utilisateur de consulter la valeur de RunningTotal à mesure qu’elle est modifiée selon les boutons sélectionnés par l’utilisateur.

    Propriété Text de l’étiquette.

  6. Affichez un aperçu de l’application. Entrez un nombre dans la zone de texte et sélectionnez le bouton Ajouter quelques fois. Lorsque vous êtes prêt, revenez à l’expérience de création à l’aide de la touche Échap.

    Le contrôle Saisie de texte affiche une valeur et Étiquette affiche le total cumulé.

  7. Définissez la valeur d’une variable de contexte tout en accédant à un écran pour passer « contexte » ou « paramètres » d’un écran à un autre. Pour illustrer cette technique, insérez un écran, insérez un bouton et définissez sa propriété OnSelect sur cette formule :

    Navigate( Screen1, None, { RunningTotal: -1000 } )

    Propriété OnSelect d’un bouton.

    Maintenez la touche Alt enfoncée pendant que vous sélectionnez ce bouton pour afficher Screen1 et définissez la variable de contexte RunningTotal sur -1000.

    Screen1 est ouvert.

  8. Pour afficher la valeur de la variable de contexte, effectuez l’une des opérations suivantes :

    • Si vous utilisez la version préliminaire de Power Apps Studio, sélectionnez Variables dans le menu de création de l’application.

    • Si vous utilisez la version classique de Power Apps Studio, sélectionnez le menu Fichier , puis sélectionnez Variables dans le volet gauche.

  9. Pour afficher l’emplacement où la variable de contexte est définie et utilisée, sélectionnez-la sous Variables de contexte.

Utiliser une collection

Créons une calculatrice à l’aide d’une collection. Étant donné qu’une collection contient une table facile à modifier, cette calculatrice conserve une « bande papier » de chaque valeur au fur et à mesure vous l’entrez.

Fonctionnement des collections

  • Créez et définissez des collections à l’aide de la fonction ClearCollect. Vous pouvez utiliser la fonction Collect à la place, mais elle nécessite une autre variable au lieu de remplacer l’ancienne.
  • Une collection est un type de source de données et une table. Pour obtenir une valeur unique dans une collection, utilisez la fonction First et obtenez un champ à partir de l’enregistrement résultant. Si vous utilisez une valeur unique avec ClearCollect, il s’agit du champ Valeur , comme dans cet exemple :
    First(VariableName).Value

Créons une calculatrice à l’aide d’une collection :

  1. Ajoutez un contrôle Saisie de texte nommé TextInput1 et deux boutons, nommés Bouton1 et Bouton2.

  2. Définissez la propriété Text de Bouton1 sur « Add » et la propriété Text de Bouton2 sur « Clear ».

  3. Pour mettre à jour le total cumulé chaque fois qu’un utilisateur sélectionne le bouton Ajouter, définissez sa propriété OnSelect sur la formule suivante :

    Collect( PaperTape, TextInput1.Text )

    La simple existence de cette formule établit Bande de papier comme une collection qui contient un tableau à une colonne de chaînes de texte. Vous pouvez référencer PaperTape n’importe où dans cette application. Chaque fois qu’un utilisateur ouvre cette application, Bande de papier est une table vide.

    Quand cette formule s’exécute, elle ajoute la nouvelle valeur à la fin de la collection. Étant donné que vous ajoutez une valeur unique, Collect la place automatiquement dans une table à colonne unique et le nom de la colonne est Value, que vous utiliserez plus tard.

    Propriété OnSelect du bouton Add avec collect.

  4. Pour effacer la bande lorsque l’utilisateur sélectionne le bouton Clear, définissez sa propriété OnSelect sur la formule suivante :

    Clear( PaperTape )

    ![OnSelect property of the Clear but1. Pour exécuter l’ordinateur d’ajout, sélectionnez F5 pour ouvrir l’aperçu, entrez des numéros dans le contrôle d’entrée de texte, puis sélectionnez des boutons.

    Capture d’écran du contrôle d’entrée de texte montrant une valeur et l’étiquette montrant le total en cours d’exécution. label.](media/working-with-variables/papertape-3.png)

  5. Pour exécuter la machine à additionner, appuyez sur F5 pour ouvrir l’aperçu, entrez des nombres dans le contrôle d’entrée de texte, puis sélectionnez des boutons.

    Le contrôle Saisie de texte affiche une valeur et Étiquette affiche le total cumulé.

  6. Pour revenir à l’espace de travail par défaut, sélectionnez Échap.

  7. Pour afficher le ruban perforé, insérez un contrôle TableDeDonnées et définissez ses **[Éléments](controls/properties1). Pour voir les valeurs de votre collection, effectuez l’une des opérations suivantes :

    • Si vous utilisez la préversion de Power Apps Studio, sélectionnez Variables dans le menu création d’application, puis sélectionnez Collections.

    • Si vous utilisez la version classique de Power Apps Studio, sélectionnez Collections dans le menu Fichier . Pour voir les valeurs de votre collection, effectuez l’une des opérations suivantes :

    • Si vous utilisez la version préliminaire de Power Apps Studio, sélectionnez Variables dans le menu de création de l’application, puis Collections.

    • Si vous utilisez la version classique de Power Apps Studio, sélectionnez Collections dans le menu Fichier.

  8. Pour stocker et obtenir votre collection, ajoutez deux contrôles de bouton supplémentaires et définissez leurs propriétés de texte sur Charger et Enregistrer. Définissez la propriété OnSelect du bouton Load sur la formule suivante :

    Clear( PaperTape) ; LoadData( PaperTape, « StoredPaperTape », true )

    Vous devez supprimer la collection en premier, car LoadData ajoute les valeurs stockées à la fin de la collection.

    Propriété OnSelect du bouton Load.

  9. Définissez la propriété OnSelect du bouton Save sur la formule suivante :

    SaveData( PaperTape, « StoredPaperTape » )

    Propriété OnSelect* du bouton Save.

  10. Affichez à nouveau un aperçu en sélectionnant F5, entrez des nombres dans le contrôle d’entrée de texte, puis sélectionnez des boutons. Cliquez sur le bouton Enregistrer. Fermez et rechargez votre application, puis sélectionnez le bouton Load pour recharger votre collection.

Note

Les fonctions SaveData et LoadData fonctionnent dans l’application Power Apps Mobile mais pas dans Power Apps Studio ou le lecteur web pour Power Apps.