L'instruction If est l'une des structures de contrôle les plus utiles. Elle permet d'évaluer une séquence d'instructions si une condition est vraie, et d'évaluer une séquence d'instructions 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 formula = 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 :
Rem If sur plusieurs lignes - exemple 1 If {Employés.Post occupé} = "Ventes" Then formula = {Employés.Salaire} * 0,06 Else formula = {Employés.Salaire} * 0,04 End If
Dans cet exemple, si la condition {Employés.Poste occupé} = "Ventes" est évaluée comme vraie,
formula = {Employés.Salaire} * 0,06
est traitée. Sinon, l'instruction qui suit la clause Else, c'est-à-dire
formula = {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.
Rem If sur plusieurs lignes - exemple 2 formula = {Employés.Salaire} * 0,04 If formula < 1000 Then formula = 1000 End If
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 ElseIf. Remarquez que ElseIf est en un seul mot. L'exemple suivant comporte seulement une clause ElseIf, 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 ElseIf n'est vraie.
Rem If sur plusieurs lignes - exemple 3 formula = {Employés.Salaire} * 0,04 If formula < 1000 Then formula = 1000 ElseIf formula > 5000 Then formula = 5000 End If
Exemple
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 %.
Rem If sur plusieurs lignes - exemple 4 Dim impôt As Currency, revenu As Currency revenu = {Employés.Salaire} Dim message As String If revenu < 8000 Then impôt = 0 message = "non imposable" ElseIf revenu >= 8000 And revenu < 20000 Then message = "Tranche imposable la plus faible" impôt = (revenu - 8000)*0,20 ElseIf revenu >= 20000 And revenu < 35000 Then message = "Tranche imposable moyenne" impot = (20000 - 8000)*0,20 + (revenu - 20000)*0,29 Else message = "Tranche imposable la plus élevée" impôt = (20000 - 8000)*0,20 + (35000 - 20000)*0,29 + _ (revenu - 35000)*0,40 End If Dim impôtStr As String Rem utiliser 2 décimales Rem et utiliser un espace en tant que séparateur des milliers impôtsStr = CStr (impôt, 2, ",") formula = "Vous vous situez dans la tranche _ " & message " & _ " & _ "Votre impôt estimé est de " & impôtStr & "."
Remarquez comment les variables permettent de 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 instructions soient exécutées en tant que résultat d'une condition.
Structures de contrôle | Commandes If sur une seule ligne et sur plusieurs lignes