L'expression If
est l'une des structures de contrôle les plus utiles. Elle vous permet d'évaluer une expression si une condition est vraie et d'évaluer une expression différente dans le cas contraire.
Remarque Lorsque vous procédez à une mise en forme à l'aide de formules conditionnelles, incluez systématiquement le mot clé Else. Les valeurs ne remplissant pas la condition If risquent sinon de perdre leur format initial. Pour éviter cela, utilisez la fonction DefaultAttribute (If...Else DefaultAttribute).
Exemple
Une société envisage de payer une prime de 4 % à ses employés, à l'exception de ceux travaillant au service des ventes qui recevront une prime de 6 %. Ceci sera effectué par la formule suivante à l'aide d'une expression If :
//Expression If - exemple 1 If {Employés.Post occupé} = "Ventes" Then {Employés.Salaire} * 0,06 Else {Employés.Salaire} * 0,04
Dans cet exemple, si la condition {Employés.Poste occupé} = "Ventes" est évaluée comme vraie,
{Employés.Salaire} * 0,06
l'expression est traitée. Sinon, l'expression qui suit la clause Else, c'est-à-dire
{Employés.Salaire} * 0,04
est traitée.
Supposons qu'une autre société ait l'intention d'accorder une prime de 4 % à ses employés et que cette prime ne puisse pas être inférieure à 1 000 €. Remarquez que la clause Else n'est pas incluse ; elle est facultative et n'est pas nécessaire dans ce cas.
//Expression If - exemple 2 Local CurrencyVar bonus := {Employés.Salaire} * 0,04; If bonus < 1000 Then bonus := 1000; //L'expression finale est uniquement la variable 'bonus'. //La valeur de la variable est renvoyée et constitue le //résultat de la formule bonus
Une autre façon d'effectuer l'exemple 2 consiste à utiliser une clause Else :
//Expression If - exemple 3 Local CurrencyVar bonus := {Employés.Salaire} * 0,04; If bonus < 1000 Then 1000 Else bonus
Supposons maintenant que la société précédente veuille également que la prime soit au maximum égale à 5 000 €. Vous devez alors utiliser une clause Else If. L'exemple suivant comporte seulement une clause Else If, mais vous pouvez en ajouter autant qu'il en faut.
Remarque Il ne peut y avoir qu'une seule clause Else par instruction If.
La clause Else est exécutée si aucune des expressions If ou Else If n'est vraie.
//Expression If - exemple 4 Local CurrencyVar bonus := {Employés.Salaire} * 0,04; If bonus < 1000 Then 1000 Else If bonus > 5000 Then 5000 Else bonus;
Supposons qu'une société souhaite calculer une estimation du montant de l'impôt qu'un employé aura à payer, et écrire un message en conséquence. Un revenu inférieur à 8 000 € n'est pas imposable, un revenu compris entre 8 000 € et 20 000 € est imposé à 20 %, un revenu compris entre 20 000 € et 35 000 € est imposé à 29 % et un revenu supérieur à 35 000 € est imposé à 40 %.
//Expression If - exemple 5 Local CurrencyVar impôt := 0; Local CurrencyVar revenu := {Employés.Salaire}; Local StringVar message := ""; If revenu < 8000 Then ( message := "non imposable"; impôt := 0 ) Else If revenu >= 8000 And revenu < 20000 Then ( message := "imposable la plus faible"; impôt := (revenu - 8000)*0,20 ) Else If revenu >= 20000 And revenu < 35000 Then ( message := "imposable moyenne"; impot := (20000 - 8000)*0,20 + (revenu - 20000)*0,29 ) Else ( message := "imposable la plus élevée"; impôt := (20000 - 8000)*0,20 + (35000 - 20000)*0,29 + (revenu - 35000)*0,40 ); //Utiliser 2 décimales et un espace comme //séparateur des milliers Local StringVar impotsStr := CStr (impot, 2, ""); "Vous vous situez dans la tranche " & message & ". " & "Votre impôt estimé est de " & impôtStr & "."
Remarque Les variables servent à simplifier la logique de calcul. Deux expressions sont exécutées quand l'une des conditions est remplie ; l'une affecte une valeur à la variable "impôt" et l'autre affecte une valeur à la variable "message". Il est souvent utile que plusieurs expressions soient exécutées en tant que résultat d'une condition.