Table des matières:
- exemples If-Then
- Une autre approche du problème précédent utilise la clause Else. Voici la même routine recodée pour utiliser la structure If-Then-Else:
- Dans les exemples précédents, chaque instruction de la routine est exécutée. Une structure légèrement plus efficace sortirait de la routine dès qu'une condition serait vraie. Le matin, par exemple, la procédure devrait afficher le message Good Morning, puis quitter - sans évaluer les autres conditions superflues.
- Voici un autre exemple qui utilise la forme simple de la structure If-Then. Cette procédure demande à l'utilisateur une quantité, puis affiche la remise appropriée, en fonction de la quantité saisie par l'utilisateur:
Vidéo: VBA 3 : Structure test VBA Excel : If Then et Select case 2025
If-Then est la structure de contrôle la plus importante de VBA. Vous utiliserez probablement cette commande quotidiennement. Utilisez la structure If-Then lorsque vous souhaitez exécuter une ou plusieurs instructions de manière conditionnelle. La clause Else facultative, si elle est incluse, vous permet d'exécuter une ou plusieurs instructions si la condition que vous testez est et non vraie. Voici une procédure CheckUser simple, recodée pour utiliser la structure If-Then-Else:
Sub CheckUser2 () UserName = InputBox ("Entrez votre nom:") Si UserName = "Satya Nadella" Puis MsgBox ("Bienvenue Satya …") '… [Plus de code ici] … Else MsgBox "Pardon. Seul Satya Nadella peut le faire. "Fin si End Sub
exemples If-Then
La routine suivante montre la structure If-Then sans la clause Else facultative:
La procédure GreetMe utilise la fonction Time de VBA pour obtenir l'heure du système. Si l'heure actuelle est inférieure à. 5, la routine affiche un message d'accueil amical. Si le temps est supérieur ou égal à. 5, la routine se termine, et rien ne se passe.
Sub GreetMe2 () Si Time = 0. 5 Puis MsgBox "Good Afternoon" End Sub
Notez que> = (supérieur ou égal à) est utilisé pour la deuxième instruction If-Then. Cela garantit que toute la journée est couverte. Si> (plus grand que) était utilisé, aucun message n'apparaîtrait si cette procédure était exécutée précisément à 12h00. C'est assez improbable, mais avec un programme important comme celui-ci, vous ne voulez pas prendre de risques.
Une autre approche du problème précédent utilise la clause Else. Voici la même routine recodée pour utiliser la structure If-Then-Else:
Sub GreetMe3 () Si Time <0. 5 alors MsgBox "Good Morning" Sinon _ MsgBox "Good Afternoon" End Sub
Notez que la ligne le caractère de continuation (underscore) est utilisé dans l'exemple précédent. L'instruction If-Then-Else est en fait une seule instruction. VBA fournit une manière légèrement différente de coder les constructions If-Then-Else qui utilisent une instruction End If. Par conséquent, la procédure GreetMe peut être réécrite comme
En fait, vous pouvez insérer n'importe quel nombre d'instructions sous le Si partie et n'importe quel nombre de déclarations sous la partie Else. Cette syntaxe est plus facile à lire et raccourcit les instructions.
Et si vous deviez développer la routine GreetMe pour gérer trois conditions: matin, après-midi et soir? Vous avez deux options: Utilisez trois instructions If-Then ou utilisez une structure If-Then-Else
imbriquée . Imbrication signifie placer une structure If-Then-Else dans une autre structure If-Then-Else. La première approche, en utilisant trois instructions If-Then, est plus simple: Sub GreetMe5 () Dim Msg As String Si Time = 0. 5 Et Time = 0. 75 Ensuite Msg = "Soir" MsgBox "Good" & Msg End Sous
Une nouvelle touche a été ajoutée avec l'utilisation d'une variable. La variable Msg obtient une valeur de texte différente, en fonction de l'heure de la journée. L'instruction MsgBox affiche le message d'accueil: Good Morning, Good Afternoon ou Good Evening.
La routine suivante effectue la même action mais utilise une structure If-Then-End If:
Sub GreetMe6 () Dim Msg As String Si Time = 0. 5 Et Time = 0. 75 Ensuite Msg = "Evening" End If MsgBox "Good" & Msg End Sub
Utiliser ElseIf
Dans les exemples précédents, chaque instruction de la routine est exécutée. Une structure légèrement plus efficace sortirait de la routine dès qu'une condition serait vraie. Le matin, par exemple, la procédure devrait afficher le message Good Morning, puis quitter - sans évaluer les autres conditions superflues.
Avec une petite routine comme celle-ci, vous n'avez pas à vous soucier de la vitesse d'exécution. Mais pour les applications plus importantes dans lesquelles la vitesse est critique, vous devriez connaître une autre syntaxe pour la structure If-Then.
Voici comment vous pouvez réécrire la routine GreetMe en utilisant cette syntaxe:
Sub GreetMe7 () Dim Msg As String Si Time = 0. 5 Et Time <0.75 alors Msg = "Afternoon" Sinon Msg = "Soir "End If MsgBox" Good "& Msg End Sub
Lorsqu'une condition est vraie, VBA exécute les instructions conditionnelles et la structure If se termine. En d'autres termes, cette procédure est un peu plus efficace que les exemples précédents. Le compromis est que le code est plus difficile à comprendre.
Un autre exemple If-Then
Voici un autre exemple qui utilise la forme simple de la structure If-Then. Cette procédure demande à l'utilisateur une quantité, puis affiche la remise appropriée, en fonction de la quantité saisie par l'utilisateur:
Sub ShowDiscount () Dim Quantité en tant que réduction longue En tant que quantité double = InputBox ("Entrer la quantité:") Si Quantité > 0 Puis Remise = 0. 1 Si Quantité> = 25 Puis Remise = 0. 15 Si Quantité> = 50 Puis Remise = 0. 2 Si Quantité> = 75 Puis Remise = 0. 25 MsgBox "Remise:" & Remise Fin Sous
Notez que chaque instruction If-Then de cette routine est exécutée et que la valeur de Discount peut changer au fur et à mesure que les instructions sont exécutées. Toutefois, la routine affiche en fin de compte la valeur correcte pour Remise parce que les instructions If-Then sont dans l'ordre croissant des valeurs Discount.
La procédure suivante effectue les mêmes tâches en utilisant la syntaxe ElseIf alternative. Dans ce cas, la routine se termine immédiatement après l'exécution des instructions pour une condition vraie:
Sub ShowDiscount2 () Dim Quantité en tant que réduction longue En tant que quantité double = InputBox ("Enter Quantity:") Si Quantité> 0 et Quantité <25 alors Discount = 0.1 ElseIf Quantité> = 25 Et Quantité <50 puis Remise = 0. 15 ElseIf Quantité> = 50 Et Quantité <75 puis Remise = 0. 2 ElseIf Quantité> = 75 Puis Remise = 0. 25 Fin Si MsgBox "Remise:" & Discount End Sub
Ces multiples structures If-Then sont plutôt lourdes. Vous pouvez utiliser la structure If-Then uniquement pour les décisions binaires simples.
