• 6 heures
  • Facile

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/11/2023

Utilisez les opérateurs conditionnels

Nous avons vu dans le chapitre précédent comment déclarer une variable avec les différents types qui existent. Voyons maintenant ensemble le vrai intérêt d’une variable, et comment cela va vous aider dans votre code de tous les jours. 

Nous allons commencer par utiliser des opérateurs conditionnels, puis nous les utiliserons au travers de conditions avec des If puis, pour finir, avec des Select Case .

Maîtrisez les opérateurs conditionnels

Je crois que c’est le moment où cela va se compliquer… non ?

Figurez-vous que non, pas vraiment ; les mots “opérateurs conditionnels” peuvent à première vue vous faire peur, mais en fait c’est assez simple. 😉

Les opérateurs conditionnels permettent de faire des actions avec des variables, comme par exemple les comparer.

Comme par exemple regarder si une variable est plus grande qu’une autre ?

Tout à fait, ce n’est pas plus difficile que cela. Regardons ensemble les différents types d’opérateurs et analysons ensemble la syntaxe. On retrouve des opérateurs :

  • arithmétiques ;

  • de comparaison ;

  • logiques ;

  • de concaténation.

Commençons ensemble par les opérateurs arithmétiques. Ces opérateurs permettent de faire des calculs entre deux variables. Par exemple, additionner la variable 1 avec la variable 2.

Les opérateurs arithmétiques

Toutes les opérations arithmétiques classiques s’utilisent avec des nombres (integer, float, etc.) :

Calcul

Opérateur à utiliser en VBA

Addition

+

Soustraction

-

Multiplication

*

Division

/

Modulo

mod

Division donnant un entier

\

Puissance

^

Affectation d’une valeur

=

Reprenons notre exemple précédent : nous allons chercher à retrouver l'année de naissance en effectuant une soustraction entre l'âge et l'année actuelle. Voyons comment faire dans ce screencast :

Code de la macro :

Sub annee()

Dim age As Integer
Dim calcul As Integer

age = 36
calcul = 2023 - age
MsgBox (calcul)

End Sub

Tous les opérateurs s’utilisent de la même manière que notre exemple. Je vous laisse faire différents tests pour mieux vous familiariser avec les opérateurs.

Maintenant que vous savez faire des calculs, il est temps de comparer les variables avec les opérateurs de comparaison.

Les opérateurs de comparaison

Il existe plusieurs opérateurs de comparaison en VBA ; en voici une liste non exhaustive :

Calcul

Opérateur à utiliser en VBA

Inférieur à

<

Inférieur ou égal

<=

Supérieur

>

Supérieur à

>=

Égal

=

Différent

<>

Comparer deux strings

like

Le résultat de cette opération renvoie un True (vrai) ou False (faux) dans la variable. 

Si nous continuons avec notre exemple, nous avions calculé un résultat de 2022, nous souhaitons savoir si ce résultat est supérieur ou égal à 2020.

Sub annee()
Dim age As Integer
Dim calcul As Boolean
Dim annee_test As Integer

age = 36
annee_test = 2000

calcul = (2023 - age) >= annee_test

MsgBox (calcul)

End Sub

Vous pouvez également comparer autre chose que des chiffres, comme par exemple vous demander si deux chaînes de caractères sont identiques. Essayez les différents opérateurs.

Continuons le tour des opérateurs avec les opérateurs logiques. Ils sont particulièrement importants en programmation. 

Les opérateurs logiques

Voici la liste des principaux opérateurs logiques :

Calcul

Opérateur à utiliser en VBA

Conjonction

And

Négation logique

Not

Disjonction

Or

Xor

Exclusion

Essayez à présent, avec notre exemple, de savoir si la date de l’année est égale à 2022 et si l'âge est inférieur à 30 ans. Pour faire cela, utilisez l’opérateur logique de conjonction ‘And’. Le ‘And’ est simplement un “Et”, il faut que les deux conditions soient réunies pour que cela renvoie un “vrai” cette fois.

Vérifiez toujours si la date de naissance est bien inférieure à l’année 2000 et ajoutez la condition de ville. Car on souhaite que le programme nous renvoie “vrai” si c’est une personne qui vient de Montpellier.

Sub annee()
Dim age As Integer
Dim calcul As Integer
Dim annee As Integer
Dim resultat As boolean
age = 35
annee = 2020
ville_naissance = “Montpellier”

calcul = 2022 - age
resultat = calcul <= annee And ville_naissance  = “Montpellier”

MsgBox (resultat)
End Sub

Je vous laisse ici aussi faire des tests, comme par exemple mettre Paris dans la ville de naissance (cela va vous renvoyer “faux”, normalement) puis changer l’opérateur enORet voir ce que cela change. Si tout se passe bien, cela doit vous dire “vrai”. Pour l’opérateur  OR  , si une des deux conditions est validée, alors il renvoie “vrai”. 

Pour finir, voyons ensemble les opérateurs de concaténation.

Les opérateurs de concaténation

Nous avons déjà évoqué ce sujet dans le chapitre précédent avec des chaînes de caractères. La concaténation se fait généralement sur du texte (donc des strings). On peut utiliser l’opérateur+ ou& . L’opérateur  +  s’utilise pour additionner des nombres, donc par convention on va plutôt utiliser le  &  et laisser le  +  aux nombres, même si les deux versions fonctionnent.

Appréhendez la notion de condition

Si tout va bien, vous comprenez maintenant l'intérêt des variables et ce que nous pouvons en faire avec les différents tests. Nous avons vu ensemble que nous pouvons les additionner, faire des tests entre deux variables ou encore les concaténer. Nous allons maintenant voir un nouvel élément, les conditions. C’est très important de bien comprendre le fonctionnement, car vous allez très souvent l’utiliser tel quel ou avec certaines déclinaisons.

Trève de bavardage, essayons la conditionIf .

Le IF (en français, si) permet de venir tester des hypothèses.

Par exemple, imaginons que je souhaite tester l'âge de quelqu’un et faire une action différente en fonction de son âge.

Si l'âge de la personne est supérieur ou égal à 18 ans,

alors je lui dis qu’il peut créer un compte,

sinon je lui dis qu’il est trop jeune pour créer un compte.

Cette syntaxe permet de faire des actions différentes en fonction de la valeur de la variable âge.

Regardons maintenant comment cela se matérialise en VBA :

Sub annee()
Dim age As Integer
Dim age_minimum As Integer
age = 16
age_minimum = 18

If age >= age_minimum Then
    MsgBox ("Tu peux créer ton compte")
    Else
    MsgBox ("Tu es trop jeune pour créer ton compte")
End If

End Sub

Notre fonctionIf s’écrit toujours de la même façon. Commencez par lui donner le test que vous voulez faire. Ici je lui dis que je souhaite que la variable âge soit supérieure ou égale à 18. Le résultat, comme nous l’avons vu plus haut, renvoie un booléen “vrai” ou “faux”.

Utilisez ensuite le motThen (qui veut dire “alors”) : alors si le résultat du test est vrai, exécuter la ligne qui est en dessous, qui écrit à l’utilisateur “Tu peux créer ton compte”.

Pour finir, utilisez le motElse (qui veut dire “sinon”) : sinon je dis à l’utilisateur “Tu es trop jeune pour créer ton compte”. Puis je termine par unEnd ifpour lui dire que le if est terminé.

En changeant la valeur de la variable âge, vous pouvez voir que cela fonctionne bien.

Vous venez de tester si une valeur est vraie ou fausse. Mais imaginons maintenant que vous souhaitiez tester plusieurs valeurs. Vous allez devoir faire plein de petits if, et cela va être assez fastidieux. Heureusement pour nous, il existe une variante du if qui permet de faire du multichoix, leElseIf.

Revenons à notre exemple, nous souhaitons maintenant faire des actions différentes en fonction de la ville de naissance d’une personne.

Sub annee()

Dim departement_naissance As String
departement_naissance = Range("A1").Value

If departement_naissance = 34 Then
    MsgBox ("Tu es rattaché à l’agence Occitanie")
    ElseIf departement_naissance = 75 Then
    MsgBox ("Tu es rattaché à l’agence d’Île-de-France")
    ElseIf departement_naissance = 33 Then
    MsgBox ("Tu es rattaché à l’agence de Nouvelle Aquitaine")
    ElseIf departement_naissance = 69 Then
    MsgBox ("Tu es rattaché à l’agence Auvergne Rhône-Alpes")
    Else
    MsgBox ("Nous n'avons pas l'information")
End If

End Sub

Le début de la syntaxe est la même, sauf que cette fois au lieu de rajouter un else, nous avons rajouté unelseif avec une nouvelle condition. Ainsi, à chaque nouvel  elseif  vous pouvez ajouter une condition ; le code va passer sur chaque test jusqu’à arriver à celui qui permet de valider la condition, puis afficher le message. 

J’ai volontairement rajouté à la fin de ce  if  un  else  , qui permet de dire à l’utilisateur que nous n’avons pas cette information. Si nous n’avions pas ajouté ce else et qu’un utilisateur venait du 35, il n’y aurait même pas eu de message pour l’utilisateur.

Allez plus loin avec Select

Comme vous venez de le voir, la combinaison des  elseif  n’est pas vraiment élégante (oui oui je vous assure qu’on peut dire élégante pour du code). 

Il existe une autre solution qui donne les mêmes résultats mais qui est plus simple d’utilisation, c’est leSelect Case.

Reprenons le même exemple qu’avec le  ElseIf  mais en l’adaptant avec le   Select Case  .

Sub annee()

Dim departement_naissance As String
departement_naissance = Range("A1").Value

Select Case departement_naissance
    Case 9, 11, 12, 30, 31, 32, 34, 46, 48, 65, 66, 81, 82
    MsgBox ("Tu es rattaché à l’agence Occitanie")
    Case 75, 77, 78, 91, 92, 93, 94, 95
    MsgBox ("Tu es rattaché à l’agence d’Île-de-France")
    Case 16, 17, 19, 23, 24, 33, 40, 47, 64, 79, 86, 87
    MsgBox ("Tu es rattaché à l’agence de Nouvelle Aquitaine")
    Case 1, 3, 7, 15, 26, 38, 42, 43, 63, 69, 73, 74
    MsgBox ("Tu es rattaché à l’agence Auvergne Rhône-Alpes")
    Case 2, 4, 5, 6, 8, 10, 13, 14, 18, 20, 21, 22, 25, 27, 28, 29, 35, 36, 37, 39, 41, 44, 45, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 67, 68, 70, 71, 72, 76, 80, 83, 84, 85, 88, 89, 90, 97, 97, 97, 97, 97
    MsgBox ("Nous n'avons pas d'agence dans ton département")
End Select

End Sub

Avec ce code, vous arriverez rapidement à couvrir facilement tous les cas de la version avec le if, et à ajouter tous les départements pour chaque région sans alourdir le code. Comme vous le remarquez, cela ne prend pas beaucoup plus de place que le  ElseIf  alors que vous couvrez beaucoup de départements.

À vous de jouer !

Depuis que vous avez refait le reporting de votre manager, il est aux anges ! Il gagne du temps chaque jour. Comme tous les managers, il souhaite gagner encore du temps en automatisant une partie de l’analyse qu’il doit faire.

C’est pourquoi il vous demande de modifier encore son fichier pour ajouter de l’analyse automatiquement :

  • Il souhaite faire une somme automatique de la colonne CA en haut de son fichier.

  • Si le chiffre est : 

    • supérieur à 100 000 €, alors il veut passer le chiffre en vert ; 

    • s’il est entre 90 000 € et 99 999 €, alors il veut le chiffre en orange et en gras ; 

    • s’il est inférieur à 89 999 €, il souhaite le mettre en jaune, en gros et avec un fond rouge.

  • Il souhaite également ajouter des informations sur le reporting en fonction de la date :

    • si c’est le mois 1 il souhaite afficher janvier ; 

    • si c’est le mois 2 il souhaite afficher février ;

    • etc.

Vous pouvez récupérer le mois d’une date avec la fonction mois(cellule) dans Excel, et la date avec la fonction aujourd'hui.

Voici la solution avec le screencast :

En résumé

  • Les opérateurs arithmétiques (+, -, /, \, etc.) permettent de faire des calculs sur des variables.

  • Comparez les variables entre elles en utilisant des opérateurs de comparaison comme  >, =, <=  ou encorelike  pour une chaîne de caractères.

  • Combinez plusieurs opérateurs de comparaison avec les opérateurs logiques tels que AND  ou  OR .

  • La concaténation de deux chaînes de caractères se fait avec l’opérateur  &  .

  • Pour faire des tests sur des variables, utilisez la fonction  IF  .

  • La fonction  Select Case   permet de venir tester plus facilement différentes solutions possibles. 

Nous avons vu ensemble les différents opérateurs conditionnels. Nous allons voir, dans le prochain chapitre, comment associer les opérateurs à des boucles.

Exemple de certificat de réussite
Exemple de certificat de réussite