Crystal Reports Designer  

Instructions If (syntaxe Basic)

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.

Voir aussi

Structures de contrôle | Commandes If sur une seule ligne et sur plusieurs lignes