<< Retour au sommaire

 

VBA, L’embranchement conditionnel If

 

 

Table des matières

  1. Présentation du if ;
  2. Les if imbriqués ;
  3.  
  4. Avant l’exemple, découverte de MsgBox ;
  5. Les commentaires ;
  6. Présentation de l’exemple ;
  7. Avant l’exemple, découverte de InputBox ;
  8. Un exemple dans EXCEL.

 

Présentation du if.

 

If vous permet d’orienter l’exécution du programme sur un traitement ou sur un autre selon si une ou plusieurs conditions sont remplies. Ces conditions sont généralement des comparaisons de valeurs réalisées sur des variables.

Il vous est possible d’utiliser l’embranchement conditionnel « If » de plusieurs manières, selon si vous souhaitez traiter un ou plusieurs cas de figures.

 

Dans les syntaxe proposée ci-après, nous allons utiliser comme conditions, des comparaisons entre les valeurs que peuvent prendre les variables A et B.

 

Première syntaxe possible :

If A=B Then Traitement

Si A égal B alors exécute traitement

 

Deuxième syntaxe possible :

If A=B Then

  Traitement_Vrai

Else

  Traitement_faux

EndIf

Si A égal B Alors

  Exécute traitement vrai

Sinon

  Exécute traitement Faux

Fin de la structure Si

 

Troisième syntaxe possible :

If A=B Then

  Traitement_égalité

ElseIf A>B Then

  Traitement_Supérieur

Else

Traitement_Inférieur

EndIf

Si A égal B alors

  Exécute Traitement_égalité

Sinon si A supérieur B alors

  Exécute Traitement_Supérieur

Sinon

Exécute Traitement_Inférieur

Fin de la structure si

 


Les If imbriqués

 

Vous pouvez également imbriquer des « If » dans un autre « If ».

Par conséquent, pour que les conditions des « If » imbriqués soient vérifiées, il faudra d’abord que, la condition du If contenant soit vraie.

 

If Condition1 Then

  Traitement1

Else

  If Condition2 Then

    Traitement2

  EndIf

  If Condition3 Then

    Traitement3

  EndIf

Else

  If Condition4 Then

    Traitement4

  EndIf

  If Condition5 Then

    Traitement5

  EndIf

EndIf

 

Dans cette syntaxe, il faudra que Condition1 soit vraie pour que Condition2 et Condition3 soient vérifiées.

Et, inévitablement, il faudra que la condition1 soit fausse pour que Condition4 et Condition5 soient vérifiées.

Quel que soit le nombre de « If » que vous utiliserez dans une même structure, il faudra autant de « EndIf » qu’il y aura de lignes commençant par « If ».

 

Pour que l’on puisse bien se repérer dans les embranchements logiques d’une structure, il conviendra de décaler de 2 espaces vers la droite le contenu d’un « If », par rapport à l’emplacement du « If » contenant.

Cette règle est dite « indentation ».

 


Avant l’exemple, la découverte de MsgBox

 

Cette fonction permet d’afficher une boîte de message à l’écran ainsi qu’un certain nombre de boutons.

Vous pouvez choisir le titre de la boîte de message, le contenu, c’est-à-dire le message, et les boutons à afficher.

Le résultat de la réponse sera affecté dans une variable de type entier.

Vous devez donc commencer par déclarer une variable de type entier, puis affecter l’exécution de la boîte de message MsgBox à cette variable.

Ensuite, vous pourrez traiter le résultat de la réponse en comparant la valeur de la variable « Résultat », soit à un entier, soit à une constante.

 

La syntaxe :

Variable Résultat = MsgBox(«Titre »,VBBoutons, »Message »)

 

 

Constantes      Valeurs    Descriptions

VBOkOnly 0 Affiche seulement le bouton Ok.

VBOkCancel 1 Affiche les bouton Ok et Annuler.  

vbAbortRetryIgnore 2 Affiche les boutons Abandonner, Réessayer et ignorer.

vbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler.

vbYesNo 4 Affiche les boutons Oui et Non.

vbRetryCancel 5 Affiche les boutons Réessayer et Annuler.

vbCritical 16 Affiche l'icône Message critique.

vbQuestion 32 Affiche l'icône Requête d'avertissement.

vbExclamation 42 Affiche l'icône Message d'avertissement.

vbInformation 64 Affiche l'icône Message d'information.

 

Message est le texte que l’on veut voir apparaître dans la boîte de message.

 

Remarque :

 

Dès que la boîte de message sera validée par l’utilisateur, la variable résultat contiendra la valeur de la réponse.

Vous pourrez donc comparer la variable à une valeur entière ou à une constante. Voici les valeurs et les constantes correspondantes :

 

Constantes     Valeurs     Descriptions

VBOk 1 La réponse est Ok.

VBCancel 2 La réponse est Annuler.

vbAbort 3 La réponse est Abandonner.

vbRetry 4 La réponse est Réessayer.

vbIgnore 5 La réponse est Ignorer.

vbYes 6 La réponse est Oui.

vbNo 7 La réponse est Non.

 

Les commentaires

 

Conseil :

Dans le code source d’un programme, vous devez argumenter votre code afin qu’il soit davantage compréhensible pour un lecteur.

Pour ce faire, vous pouvez utiliser des lignes de commentaires qui seront ignorées par le compilateur.

Vous devez commencer une ligne de commentaire par le caractère « Apostrophe ».

Vous devez consommer ces lignes de commentaires sans la moindre hésitation. Décrivez chaque traitement de façon que, ultérieurement, un autre utilisateur que vous, soit en mesure de comprendre ce que votre code réalise.

 

Présentation de l’exemple

 

L’exercice qui suit, active une boîte de message contenant le bouton « Ok » et le bouton « Annuler ».

En fonction de la réponse de l’utilisateur, une boîte de message est activée et précise la réponse qui a été donnée.

Le but du jeu, est donc de traiter la réponse de l’utilisateur à travers la variable « Réponse ».

Dans les paramètres de la première boîte de message, le titre de la boîte sera écrit en toute lettre, c’est pourquoi il sera placé entre guillemets, tandis que la question sera représentée par la variable « Question ». Cette variable est donc préalablement déclarée et la valeur lui sera affectée.

Le traitement de la réponse devra être réalisé par un if ou un select, voir chapitres suivants…

 

 


Avant l’exemple, découverte de InputBox

 

La fonction « InputBox » permet de retourner une chaîne de caractères que l’utilisateur vient de saisir au clavier.

 

La syntaxe :

MaVariableChaîne = InputBox(Message,Titre)

 

 

Exemple :

MaChaîne = InputBox (« Quel âge avez-vous ? », »question »)

 


Un exemple dans EXCEL

 

Dans EXCEL, nous allons créer une macro qui réalise un filtre dans un tableau, et sur la première colonne intitulée « NOMS ».

Voici le résultat attendu :

On réalise le raccourci clavier CTRL +Y afin d’exécuter la macro intitulée « « FiltrerNoms ». Une fenêtre apparaît à l’écran, on est directement dans une zone d’édition, on saisie une ou plusieurs lettres de l’alphabet, on presse la touche entrée et hop !

Normalement, on se retrouve dans la première cellule du tableau, et les noms de famille contenus dans la colonne « NOMS » familles ne commençant pas par les lettres saisies sont masqués…

En clair, la macro va utiliser un filtre automatique.

Nous allons donc d’abord enregistrer le filtre automatique, puis nous rajouterons un peu de code dans le VISUAL BASIC.

Le code à rajouter aura pour conséquence d’envoyer le curseur dans la cellule A1, puis de vérifier si le contenu de cette cellule est bien NOMS.

Si tel est le cas, le code du filtre automatique sera exécuté, sinon, un message d’erreur sera affiché.

Attention, la saisie de l’utilisateur dans la zone de saisie sera stocké dans la variable intitulée Critere.

 

Allez, c’est parti !

  1. Ouvrez EXCEL et créez un tableau contenant des noms de familles dans la colonne A ;
  2. Déclenchez l’enregistrement d’une nouvelle macro en lui donnant le nom « FiltrerNoms », et assignez l’exécution de cette macro au raccourci clavier CTRL +Y ;
  3. Envoyez le curseur au début du tableau par le biais de la fenêtre « atteindre » par l’intermédiaire de la touche de fonction F5, saisissez A1 et pressez la touche « entrée » ;
  4. Activez le filtre automatique en validant l’option du ruban suivante :

ALT, Onglet « Données », « Trier et filtrer » sous menu, « Filtrer ».

  1. Ouvrez la zone d’édition du filtre automatique en réalisant le raccourci clavier ALT +Flèche basse ;
  2. Dans le sous menu intitulé « Filtre textuel », pressez la touche « Entrée » sur le critère « Commence par » ;
  3. Dans la boîte de dialogue qui apparaît à l’écran, vous êtes dans une zone d’édition, saisissez par exemple toto ;
  4. Faites tabulation jusqu’au bouton « Ok » et pressez la touche « entrée » ;
  5. Maintenant, arrêtez l’enregistrement de la macro en validant la commande du ruban :

ALT, Onglet « Développeur », « Code » sous menu, « Arrêter l’enregistrement ».de menu :

 


Voici le code de votre macro :

Sub FiltrerNom()

'

' FiltrerNom Macro

'

' Touche de raccourci du clavier: Ctrl+y

'

    Application.Goto Reference:="R1C1"

    Selection.AutoFilter

    ActiveSheet.Range("$A$1:$A$7").AutoFilter Field:=1, Criteria1:="=toto*", _

        Operator:=xlAnd

    Range("A1").Select

End Sub

 

Avant d’insérer la structure conditionnel « if », pensez à remplacer toto par la variable Critere…

 

Voici le code de la macro « FiltrerNoms », une fois modifiée :

 

Sub FiltrerNom()

'

' FiltrerNom Macro

'

' Touche de raccourci du clavier: Ctrl+y

'

    Application.Goto Reference:="R1C1"

    ' Il faut vérifier que la cellule courante est bien le titre de la colonne A

    If ActiveCell.Value = "Nom" Then

      ' Nous sommes bien dans la cellule "nom", exécution du filtre automatique

  critere = InputBox("Saisissez les premières lettres du nom à rechercher : ")

  critere = "=" + critere + "*"

      Selection.AutoFilter

      ActiveSheet.Range("$A$1:$A$7").AutoFilter Field:=1, Criteria1:=critere, _

          Operator:=xlAnd

Else

' Nous ne sommes pas dans la bonne feuille !

  Resultat = MsgBox("Erreur", vbOKOnly, "Vous n'êtes pas dans la feuille autorisée pour réaliser cette opération !")

End If

End Sub

 

Philippe BOULANGER