Instruction If...Then...Else

Permet d’exécuter conditionnellement un groupe d’instructions, en fonction du résultat d’une expression.

Syntaxe

IfconditionThen [ instructions ] [ Elseelsestatements ]

Vous pouvez également utiliser la syntaxe en forme de bloc :

IfconditionThen
[ statements ]
[ ElseIfcondition-nThen
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If

La syntaxe de l’instruction If...Then...Else comprend les éléments suivants.

Élément Description
condition Obligatoire. Un ou plusieurs des deux types d’expression suivants :

Une expression numérique ou expression de chaîne dont le résultat est vrai ou faux. Si condition a la valeur Null, condition est considérée comme faux.

Expression de la forme TypeOfobjectnameIsobjecttype. Le NomObjet est une référence d’objet, et type d’objet est tout type d’objet valide. L’expression a la valeur True si objectname est du type d’objet spécifié par objecttype ; sinon, elle est False.
Instructions Facultatif sous forme de bloc ; requis sous forme de ligne unique qui n’a aucune clause Else . Une ou plusieurs instructions séparées par des points-virgules ; exécutée sicondition est vrai.
condition-n Facultatif. Similaire à condition.
elseifstatements Facultatif. Une ou plusieurs instructions exécutées si la valeur de l’argument condition-n associé est True.
elsestatements Facultatif. Une ou plusieurs instructions exécutées si aucun argument condition ou condition-n précédent n’a la valeur True.

Remarques

Utilisez la forme monoligne (première syntaxe) pour les tests simples et courts. Toutefois, la forme bloc (deuxième syntaxe) fournit plus de structure et davantage de souplesse que la forme ligne unique ; en outre, elle est généralement plus facile à lire, à mettre à jour et à corriger.

Remarque

Avec la forme ligne unique, il est possible d’exécuter plusieurs instructions en tant que résultat de la décision If... Then. Toutes les instructions doivent être sur la même ligne et séparées par des points-virgules, comme dans l’instruction suivante :

If A > 10 Then A = A + 1 : B = B + A : C = C + B 

Une instruction forme bloc If doit être la première instruction sur une ligne. Les parties de l’instructionElse, ElseIf, et End if peuvent avoir uniquement un numéro de ligne ou une étiquette de ligne les précédant. Le bloc If doit se terminer par une instructionEnd If.

Pour déterminer ou non si une instruction est un bloc If, examinez ce qui suit le mot-clé Then. Si rien d’autre qu’un commentaire s’affiche après Then sur la même ligne, l’instruction est considérée comme une instruction ligne uniqueIf.

Les clauses Else et ElseIf sont facultatives. Vous pouvez avoir autant de clausesElseIf que vous le souhaitez dans un bloc If, mais aucune ne peut apparaître après une clause Else. Les instructions bloc If peuvent être imbriquées ; ce qui signifie incluse l’une dans l’autre.

Lors de l’exécution d’un bloc If (seconde syntaxe), la condition est testée. Si lacondition est vrai, les instructions qui suivent Then sont exécutées. Si la condition est faux, chaque conditionElseIf (le cas échéant) est évaluée en séquence. Lorsqu’une condition vrai est trouvée, les instructions qui suivent immédiatement l’associé Then sont exécutées. Si aucune des conditions ElseIf sont vrai (ou s’il n’existe aucune clauseElseIf ), les instructions qui suivent Else sont exécutées. Après l’exécution des instructions suivant Then ou Else, l’exécution continue avec instruction suivant End If.

Conseil

Sélectionnez la casse peut être plus utile lors de l’évaluation d’une expression unique qui possède plusieurs actions possibles. Toutefois, la clause TypeOfobjectnameIsobjecttype ne peut pas être utilisée avec l’instruction Select Case .

Remarque

La clause TypeOf ne peut pas être utilisée avec des types de données explicites tels que Long, Entier et des types autres que le type Objet.

Exemple

Cet exemple illustre les deux formes d’instructions bloc et ligne unique If...Then...Else. Il illustre également l’utilisation de If TypeOf...Then...Else.

Dim Number, Digits, MyString 
Number = 53 ' Initialize variable. 
If Number < 10 Then 
 Digits = 1 
ElseIf Number < 100 Then 
' Condition evaluates to True so the next statement is executed. 
 Digits = 2 
Else 
 Digits = 3 
End If 
 
' Assign a value using the single-line form of syntax. 
If Digits = 1 Then MyString = "One" Else MyString = "More than one" 

Utilisez la construction If TypeOf pour déterminer si le contrôle transmis à une procédure est une zone de texte.

Sub ControlProcessor(MyControl As Control) 
 If TypeOf MyControl Is CommandButton Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 ElseIf TypeOf MyControl Is CheckBox Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 ElseIf TypeOf MyControl Is TextBox Then 
 Debug.Print "You passed in a " & TypeName(MyControl) 
 End If 
End Sub

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.