Fonctions If et Switch

S'applique à : Applications Canvas Colonnes de formule Dataverse Flux de bureau Applications pilotées par modèle CLI Power Platform

Déterminent si une condition présente dans un ensemble est vraie (If) ou si le résultat d’une formule correspond à une valeur quelconque dans un ensemble (Switch), puis retourne un résultat ou exécute une action.

Description

La fonction If teste une ou plusieurs conditions jusqu’à ce qu’un résultat true soit trouvé. Si un résultat de ce type est trouvé, une valeur correspondante est retournée. Si aucun résultat de ce type n’est trouvé, une valeur par défaut est retournée. Dans les deux cas, la valeur retournée peut être une chaîne à afficher, une formule à évaluer ou une autre forme de résultat.

La fonction Switch évalue une formule et détermine si le résultat correspond à une valeur dans une séquence que vous spécifiez. Si une correspondance est trouvée, sa valeur est retournée. Si aucune correspondance n’est trouvée, une valeur par défaut est retournée. Dans les deux cas, la valeur retournée peut être une chaîne à afficher, une formule à évaluer ou une autre forme de résultat.

Les fonctions If et Switch sont très similaires, mais vous devez utiliser celle qui est la mieux adaptée à votre situation :

  • Utilisez la fonction If pour évaluer une condition unique. La syntaxe la plus courante pour cette fonction est If( Condition, ThenResult, DefaultResult ), qui correspond au schéma « si... alors... sinon... » visible dans d’autres outils de programmation.
  • Utilisez la fonction If pour évaluer plusieurs conditions sans lien entre elles. Dans Power Apps (contrairement à Microsoft Excel), vous pouvez spécifier plusieurs conditions sans avoir à imbriquer des formules If.
  • Utilisez la fonction Switch pour évaluer une condition unique par rapport à plusieurs correspondances possibles. Vous pouvez également utiliser la fonction If dans ce cas, mais vous devez répéter la formule pour chaque correspondance possible.

Vous pouvez utiliser ces deux fonctions dans des formules de comportement afin de créer une branche entre deux actions ou plus. Une seule branche déclenche une action. Les conditions et les correspondances sont évaluées dans l’ordre, et l’évaluation s’arrête si une condition est true ou si une correspondance est trouvée.

Le résultat Blank est retourné si aucune condition n’est true, si aucune correspondance n’est trouvée, et si vous ne spécifiez pas de résultat par défaut.

Syntaxe

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • Condition(s) : obligatoire. Formule(s) pour tester un résultat true. De telles formules contiennent généralement des opérateurs de comparaison tels que <, > et =, et des fonctions de test telles que IsBlank et IsEmpty.
  • ThenResult(s) : obligatoire. La valeur correspondante à retourner pour une condition qui donne la valeur true.
  • DefaultResult : facultatif. La valeur à retourner si aucune condition n’est true. Si vous ne spécifiez pas cet argument, une valeur vide est retournée.

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • Formula : obligatoire. Formule pour évaluer des correspondances. Cette formule n’est évaluée qu’une seule fois.
  • Match(s) : obligatoire. Valeurs à comparer au résultat de la Formule. Si une correspondance exacte n’est trouvée, le Résultat correspondant est retourné.
  • Result(s) : obligatoire. La valeur correspondante à retourner quand une correspondance exacte est trouvée.
  • DefaultResult : facultatif. Si aucune correspondance exacte n’est trouvée, cette valeur est retournée. Si vous ne spécifiez pas cet argument, une valeur vide est retournée.

Exemples

Valeurs dans les formules

Dans les exemples suivants, un contrôle Slider (nommé Slider1) a la valeur 25.

Formula Description Result
If( Slider1.Value = 25, "Result1" ) La condition est true, et le résultat correspondant est retourné. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) La condition est true, et le résultat correspondant est retourné. "Result1"
If( Slider1.Value>1000, "Result1" ) La condition est false et aucune valeur DefaultResult n’a été fournie. blank
If( Slider1.Value>1000, "Result1", "Result2" ) La condition est false, et une valeur DefaultResult a été fournie et retournée. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) La première condition est true, et le résultat correspondant est retourné. La deuxième condition est également true mais n’est pas évaluée, car elle apparaît plus loin dans la liste d’arguments qu’une condition qui prend la valeur true. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) La première condition est false, car le curseur n’est pas blank. La deuxième condition est true car la valeur du curseur est un nombre, et le résultat correspondant est retourné. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") Les première et deuxième conditions sont false, et une valeur DefaultResult a été fournie et retournée. "Result3"
Switch( Slider1.Value, 25, "Result1" ) La valeur du curseur correspond à la première valeur à vérifier, et le résultat correspondant est retourné. "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) La valeur du curseur correspond à la deuxième valeur à vérifier, et le résultat correspondant est retourné. "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) La valeur du curseur ne correspond à aucune valeur à vérifier. Une valeur DefaultResult a été fournie, qui est retournée. "DefaultResult"

Création de branches dans les formules de comportement

Dans ces exemples, la valeur « John » est tapée dans un contrôle Text input nommé FirstName.

Formule Description Résultat
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) La condition étant true, la fonction Navigate s’exécute. Vous pouvez utiliser la fonction IsBlank pour vérifier si un champ de formulaire obligatoire a été renseigné. Si la valeur FirstName était blank, cette formule n’aurait aucun effet. true

L’affichage passe à Screen1.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sans l’opérateur !, la condition est false, de sorte que la fonction Navigate ne s’exécute pas. La fonction Back ayant été fournie en tant que valeur de DefaultResult, elle s’exécute. true

L’affichage revient à l’écran présenté précédemment.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) La valeur de FirstName.Text est comparée à « Carlos », « Kirstin » et « John », dans cet ordre. Une correspondance étant trouvée avec « John », l’application accède à Screen3. true

L’affichage passe à Screen3.

Pas à pas

  1. Ajoutez un contrôle Text input, puis nommez-le Text1 s’il n’a pas ce nom par défaut.

  2. Dans Text1, tapez 30.

  3. Ajoutez un contrôle Label et définissez sa propriété Text sur cette formule :
    If( Value(Text1.Text) < 20, "Commandez beaucoup plus !", Value(Text1.Text) < 40, "Commandez plus !", Text1.Text )

    Le contrôle Label affiche Commandez plus !, car la valeur de Text1 est supérieure à 20 mais inférieure à 40.

  4. Dans Text1, tapez 15.

    Le contrôle Label affiche Commandez BEAUCOUP plus !, car la valeur de Text1 est inférieure à 20.

  5. Dans Text1, tapez 50.

    Le contrôle Label affiche la valeur que vous avez tapée, car elle est supérieure à 40.