Salut @Sylvain,
Pour faire des “fonctions” (ce que tu appelles des macros 😉) dans Power Apps, c’est-à-dire du code que l’on peut appeler à plusieurs reprises mais où le code n’existe qu’une seule fois dans toute l’application, il y a plusieurs techniques :
-
tu mets un bouton quelque part, tu mets ton bout de code sur sa propriété OnSelect, et pour le déclencher tu fais un Select(NomDuBouton)
-
tu mets un toggle quelque part, tu mets ton bout de code sur sa propriété OnChange et tu mets gloExecuteCode
dans sa propriété Default puis lorsque tu veux déclencher le code tu fais Set(gloExecuteCode; Not(gloExecuteCode))
L’inconvénient de ces 2 techniques c’est que tu ne peux pas transmettre de paramètres à ton bout de code. C’est pourquoi il y a une technique plus élégante comme l’indique @Pierre Bourdial (sauf que ce sont pas les Behavior properties mais les Output properties avec l’option Propriétés du composant amélioré activée).
Je m’explique…
Dans ton application, active d’abord l’option en question :
Cela aura pour effet de te rajouter les fonctionnalités suivantes dans les composants (si tu étais déjà sur l’onglet Composants lorsque tu as activé l’option, il faut que tu reviennes sur l’onglet Ecrans puis retour sur Composants pour que ce soit visible) :
Les 2 nouvelles fonctionnalités sont les suivantes :
Lorsque tu combines des paramètres à une propriété de sortie d’un composant tu peux alors créer une “pseudo-fonction”.
Par exemple, je peux créer un composant qui s’appelle Calcul (dans lequel il n’y a aucun contrôle -> il est vide) où je crée une propriété de sortie de type Nombre qui s’appelle Addition avec 2 paramètres N1 et N2 de type Nombre également :
Ensuite, tu définis la valeur de cette propriété à N1 + N2
:
Tu viens de créer une fonction d’addition de 2 nombres quelconques.
Pour l’utiliser tu poses un exemplaire de ton composant sur ton écran (ici Calcul_1), et par exemple dans un libellé tu peux faire ceci :
Sympa non ? Ca ouvre pas mal de possibilités… D’ailleurs, sur le Github de Matthew Devaney tu trouveras des tonnes de fonctions faites par différentes personnes de la communauté… 😉
NOTE – ATTENTION, les 2 techniques (avec le bouton et le toggle) décrites ci-dessus ne sont pas recommandées car la tentation est de placer ces contrôles sur un écran inutilisé visuellement par l’application. Or, Power Apps n’aime pas que sur un écran 1 on fasse référence à un contrôle qui se trouve sur un écran 2. Tout simplement parce-qu’il ne garantit pas que l’écran 1 est instancié (existe) AVANT l’écran 2.
Ainsi, si sur le OnVisible de ton écran 1 tu fais un Select(btnExecuteCode)
qui est sur un écran 2 mais que par malheur lorsque tu lances ton application Power Apps n’a pas encore eu le temps d’instancier l’écran 2 alors que ton écran 1 est déjà visible, et bien ton code ne s’exécute pas…
Cela est encore plus vrai si jamais l’option suivante est activée sur ton application :
Elle augmente les performances de l’application en ne créant les contrôles (et donc les écrans) de ton application que lorsqu’ils sont affichés.
CommentID=4ETqVWksJikudH2, PostID=m9I5cvcPjoEoVGk