Vous êtes sur la page 1sur 49

Informatique Appliquée

Programmation en VBA
sous Excel

Mohamed HACHIMI

UNIVERSITÉ IBNOU ZOHR


FACULTÉ DES SCIENCES JURIDIQUES ECONOMIQUES
ET SOCIALES D’AGADIR

http://hachimicours.uiz.ac.ma

Mohamed Hachimi Informatique 2013/2014 1 / 48


5
Les structures de contrôles en VBA

Mohamed Hachimi Informatique 2013/2014 2 / 48


Objectifs

Objectifs pédagogiques

Mohamed Hachimi Informatique 2013/2014 3 / 48


Les structures algorithmiques fondamentales

Les opérations élémentaires relatives à la résolution d’un


problème peuvent, en fonction de leur enchaînement être
organisées suivant quatre familles de structures algorithmiques
fondamentales.
 Structures linéaires
 Structures alternatives
 Structures de choix
 Structures répétitives

Mohamed Hachimi Informatique 2013/2014 4 / 48


Structures linéaires

Sommaire

1 Structures linéaires

2 Structures alternatives

3 Structures de choix

4 Structures répétitives

Mohamed Hachimi Informatique 2013/2014 5 / 48


Structures linéaires

La structure linéaire

La structure linéaire se caractérise par une suite d’actions à


exécuter successivement dans l’ordre énoncé.

Pseudo-code Organigramme
Action 1
Action 2
..
.
Action n

Mohamed Hachimi Informatique 2013/2014 6 / 48


Structures linéaires

En VBA

Syntaxe VBA Exemple

Instruction 1 Sub Numer_SansBoucle()


Range("C5").Select
ActiveCell.value = 10
Instruction 2 MsgBox "Salut"
.. End Sub
.
Instruction n

Mohamed Hachimi Informatique 2013/2014 7 / 48


Structures linéaires

Structures plus élaborées

Il est possible de construire des macros avec des structures plus


élaborées que de simples séquences. On utilise pour cela des
structures de contrôle. On distingue deux types principaux :
 Structures de contrôle alternatives (choix entre plusieurs
séquences d’instructions)
 Structures de contrôle répétitives (possibilité de répéter, sous
conditions, une séquence d’instruction).

Mohamed Hachimi Informatique 2013/2014 8 / 48


Structures alternatives

Sommaire

1 Structures linéaires

2 Structures alternatives

3 Structures de choix

4 Structures répétitives

Mohamed Hachimi Informatique 2013/2014 9 / 48


Structures alternatives

La structure alternative

La structure alternative n’offre que deux issues possibles à la


poursuite de l’algorithme et s’excluant mutuellement. On peut
rencontrer deux types de structures alternatives :
 La structure alternative complète
 La structure alternative réduite

Mohamed Hachimi Informatique 2013/2014 10 / 48


Structures alternatives

La structure alternative complète

Dans cette structure l’exécution d’un des deux traitements


distincts ne dépend que du résultat d’un test effectué sur la
condition qui peut être une variable ou un événement.
 Si la condition est vérifiée, seul le premier traitement est
exécuté.
 Si la condition n’est pas vérifiée, seul est effectué le second
traitement.

Mohamed Hachimi Informatique 2013/2014 11 / 48


Structures alternatives

En Algorithmique

Pseudo-code Organigramme

Si (Condition) Alors
Action1
Sinon
Action2
FinSi

Mohamed Hachimi Informatique 2013/2014 12 / 48


Structures alternatives

En VBA

VBA permet de traiter les énoncés conditionnels à l’aide de


l’instruction If. On distingue :
 l’instruction If écrite sur une seule ligne
 et le bloc If.

Mohamed Hachimi Informatique 2013/2014 13 / 48


Structures alternatives

En VBA : Instruction If sur une seule ligne

L’instruction If écrite sur une seule ligne a la syntaxe suivante :

If condition Then si_vrai Else si_faux

Les sections Then et Else d’une instruction If ne peuvent contenir


qu’une seule instruction et doivent être écrites sur une seule
ligne.

Mohamed Hachimi Informatique 2013/2014 14 / 48


Structures alternatives

Exemple

Calcul du maximum entre deux nombres


Sub Max_nombres1()
If A>B then Max = A Else Max = B
End Sub

Mohamed Hachimi Informatique 2013/2014 15 / 48


Structures alternatives

En VBA : Le bloc If

La structure de bloc If permet aux sections Then et Else de


contenir plusieurs instructions. Elle peut avoir l’une des deux
syntaxes suivantes :
If condition Then If condition_1 Then
Instructions_si_vrai Instructions_1
Else ElseIf condition_2 Then
Instructions_si_faux Instructions_2
End If ElseIf condition_3 Then
Instructions_3
...
Else
Instructions_n
End If

Mohamed Hachimi Informatique 2013/2014 16 / 48


Structures alternatives

Le bloc If : Remarque 1

Dans une structure de bloc If, il faut impérativement aller à la ligne


après le Then.
Sub Max_nombres1()
If A>B then
Max = A
Else
Max = B
End If
End Sub

Mohamed Hachimi Informatique 2013/2014 17 / 48


Structures alternatives

Le bloc If : Remarque 2

VBA offre la possibilité d’utiliser les opérateurs logiques suivants :


Or, Xor (ou exclusif), And, Not.
Sub BonjourHeureIf()
Dim heure As Integer
Dim mes As String
’récupération de l’heure, 2 caractères les plus à gauche
’de la valeur de retour de la fonction Time
heure = Left(Time, 2)
If heure > 7 And heure < 12 Then
mes = "Bonjour"
ElseIf heure >= 12 And heure < 18 Then
mes = "Bon après-midi"
ElseIf heure >= 18 And heure < 22 Then
mes = "Bonne soirée"
Else
mes = "Bonne nuit"
End If

Mohamed Hachimi Informatique 2013/2014 18 / 48


Structures alternatives

Exercice

Ecrire une procédure qui teste si la cellule active est vide ou non.
Si elle n’est pas vide, la procédure affiche un message avec sa
valeur.
Solution :
Sub Test_CellVide()
If Not (IsEmpty(ActiveCell)) Then MsgBox ActiveCell.Value
End Sub

Mohamed Hachimi Informatique 2013/2014 19 / 48


Structures alternatives

Exercice

Ecrire une procédure qui teste si la cellule active est vide ou non.
Si elle n’est pas vide, la procédure affiche un message avec sa
valeur.
Solution :
Sub Test_CellVide()
If Not (IsEmpty(ActiveCell)) Then MsgBox ActiveCell.Value
End Sub

Mohamed Hachimi Informatique 2013/2014 19 / 48


Structures alternatives

La structure alternative réduite

La structure alternative réduite se distingue de la précédente par


le fait que seule la situation correspondant à la validation de
la condition entraîne l’exécution du traitement, l’autre situation
conduisant systématiquement à la sortie de la structure.

Mohamed Hachimi Informatique 2013/2014 20 / 48


Structures alternatives

En Algorithmique

Pseudo-code Organigramme

Si (Condition) Alors
Action
FinSi

Mohamed Hachimi Informatique 2013/2014 21 / 48


Structures alternatives

En VBA : Instruction If sur une seule ligne

L’instruction If écrite sur une seule ligne a la syntaxe suivante :

If condition Then si_vrai

La section Then d’une instruction If ne peut contenir qu’une seule


instruction et doit être écrite sur une seule ligne.

Mohamed Hachimi Informatique 2013/2014 22 / 48


Structures alternatives

Exemple

Calcul du maximum entre deux nombres


Sub Max_nombres2()
Max = A
If B>A then Max = B
End Sub

Mohamed Hachimi Informatique 2013/2014 23 / 48


Structures alternatives

En VBA : Le bloc If
La structure de bloc If permet aux section Then de contenir
plusieurs instructions. Elle peut avoir l’une des deux syntaxes
suivantes :
If condition Then If condition_1 Then
Instructions_si_vrai Instructions_1
End If ElseIf condition_2 Then
Instructions_2
ElseIf condition_3 Then
Instructions_3
...
End If

Lorsque le bloc If contient une ou plusieurs sections ElseIf, les


différentes conditions sont testées jusqu’à ce qu’une soit évaluée
à vraie. Si aucune condition n’est vérifiée, le bloc If ne fait rien.

Mohamed Hachimi Informatique 2013/2014 24 / 48


Structures de choix

Sommaire

1 Structures linéaires

2 Structures alternatives

3 Structures de choix

4 Structures répétitives

Mohamed Hachimi Informatique 2013/2014 25 / 48


Structures de choix

La structure de choix

La structure de choix permet, en fonction de plusieurs conditions


de type booléen, deffectuer des actions différentes suivant les
valeurs que peut prendre une même variable.

Mohamed Hachimi Informatique 2013/2014 26 / 48


Structures de choix

En Algorithmique
Pseudo-code Organigramme

Suivant (Variable = )
Valeur 1 : Action 1
Valeur 2 : Action 2
...
Valeur n : Action n
Sinon Action n + 1
FinSuivant

Mohamed Hachimi Informatique 2013/2014 27 / 48


Structures de choix

En VBA

Select Case variable


Case valeur 1
Instructions ’si variable = valeur 1
Case valeur 2
Instructions ’si variable = valeur 2
...
CaseElse
Instructions ’sinon
End Select

Mohamed Hachimi Informatique 2013/2014 28 / 48


Structures de choix

Exemple

Sub Test_Saison()
Dim NumeroMois As Integer
Dim saison As String
NumeroMois = InputBox("Entrer le numéro du mois")
Select Case NumeroMois
Case 1, 2, 12
saison = "Hiver"
Case 3, 4, 5
saison = "Printemps"
Case 6
saison = "Eté"
Case 7, 8
saison = "Eté-Vacances"
Case 9, 10, 11
saison = "Automne"
Case Else
saison = "Inconnue"
End Select
MsgBox saison
End Sub

Mohamed Hachimi Informatique 2013/2014 29 / 48


Structures répétitives

Sommaire

1 Structures linéaires

2 Structures alternatives

3 Structures de choix

4 Structures répétitives

Mohamed Hachimi Informatique 2013/2014 30 / 48


Structures répétitives

La structure itérative

La structure itérative répète l’exécution d’une opération ou d’un


traitement. On considérera 2 cas :
 Le nombre de répétitions n’est pas connu ou est variable
 Le nombre de répétitions est connu.

Mohamed Hachimi Informatique 2013/2014 31 / 48


Structures répétitives

Boucles DO

La construction Do . . . Loop vous permet de tester une condition


au début ou à la fin d’une structure de boucle.
Vous pouvez également faire en sorte de répéter la boucle tant
que la condition reste True ou jusqu’à ce qu’elle devienne True.
Le nombre de répétitions n’est pas connu ou est variable

Mohamed Hachimi Informatique 2013/2014 32 / 48


Structures répétitives

La structure Tant que . . . Faire . . .

Dans cette structure, on commence par tester la condition ; si elle


est vérifiée, le traitement est exécuté. L’action peut ne jamais être
exécutée.

TantQue (Condition) Faire


Action
FinTantQue

Tant que la condition est vraie, les instructions sont exécutées


en boucle (attention à ne pas créer une boucle infinie).

Mohamed Hachimi Informatique 2013/2014 33 / 48


Structures répétitives

En VBA

Do While . . . Loop : Tant que la condition est respectée, les


instructions (la boucle) s’exécutent.

Do While condition
Instructions
Loop

Cette boucle fonctionne de la même manière que While . . . Wend


(tant que la condition est vraie, la boucle est exécutée) :
While condition
Instructions
Wend

Mohamed Hachimi Informatique 2013/2014 34 / 48


Structures répétitives

Exemple

Ce code numérote les cellules de la colonne A (ligne 1 à 5) :


Sub Numer_SansBoucle()
Cells(1, 1) = 1
Cells(2, 1) = 2
Cells(3, 1) = 3
Cells(4, 1) = 4
Cells(5, 1) = 5
End Sub

Maintenant, imaginez qu’il faille numéroter 620 lignes ! Vous


comprenez donc l’intérêt de créer des boucles.
Sub Numer_AvecBoucle()
Dim i As Integer
i = 1 ’Numéro de départ
Do While i <= 620
Cells(i, 1) = numero ’Numérotation
numero = numero + 1
Loop
End Sub

Mohamed Hachimi Informatique 2013/2014 35 / 48


Structures répétitives

La structure Faire . . . Tant que . . .

La condition peut également être placée en fin de boucle Do


Loop, ce qui implique que l’action est exécutée au moins une
fois :

Faire
Action
TantQue (Condition)

Tant que la condition est vraie, les instructions sont exécutées


en boucle (attention à ne pas créer une boucle infinie).

Mohamed Hachimi Informatique 2013/2014 36 / 48


Structures répétitives

En VBA

Do . . . Loop While : Les instructions (la boucle) s’exécutent, puis


se répète, tant que la condition est respectée.
Do
Instructions
Loop While condition

Mohamed Hachimi Informatique 2013/2014 37 / 48


Structures répétitives

Exemple : Calcul de 5!

Calcul de factorielle 5! sachant que : 5! = 1 × 2 × 3 × 4 × 5


Sub Calcul_factorielle1() Sub Calcul_factorielle2()
fact = 1 fact = 1
i = 1 i = 1
Do Do While i <= 5
fact = fact * i fact = fact * i
i=i+1 i=i+1
Loop While i <= 5 Loop
End Sub End Sub

Personnaliser la macro
Le nombre 5 peut être remplacé par n’importe quel autre
nombre. Calculer 100!.

Mohamed Hachimi Informatique 2013/2014 38 / 48


Structures répétitives

La Structure Répéter . . . Jusqu’à

Plutôt que de répéter la boucle tant que la condition est vraie, il


est possible de quitter la boucle lorsque la condition est vraie en
remplaçant While par Until :

Répéter Répéter Jusqu’à (condition)


Action Action
Jusqu’à (condition) Fin

Mohamed Hachimi Informatique 2013/2014 39 / 48


Structures répétitives

En VBA

Do . . . Loop Until : Les instructions (la boucle) s’exécutent, puis


se répète, jusqu’à ce que la condition soit respectée.
Do
Instructions
Loop Until condition

Do Until . . . Loop : Jusqu’à ce que la condition soit réalisée, les


instructions (la boucle) s’exécutent.
Do Until
Instructions
Loop condition

Mohamed Hachimi Informatique 2013/2014 40 / 48


Structures répétitives

Exemple : Calcul de 5!

Do . . . Loop offre autres souplesses pour le calcul de 5! :


Sub Calcul_factorielle3() Sub Calcul_factorielle4()
fact = 1 fact = 1
i = 1 i = 1
Do Do Until i>5
fact = fact * i fact = fact * i
i=i+1 i=i+1
Loop Until i>5 Loop
End Sub End Sub

Personnaliser la macro
Adapter les deux macros afin de calculer la somme suivante :
somme = 1 + 2 + 3 + · · · + 100.

Mohamed Hachimi Informatique 2013/2014 41 / 48


Structures répétitives

Boucles For

La construction For . . . Next exécute la boucle un nombre de fois


déterminé dans le code, en utilisant un compteur.
On spécifie les valeurs de début et de fin du compteur et
éventuellement la valeur d’incrémentation d’une répétition à la
suivante.
On utilise donc une variable (le compteur) de contrôle d’itération,
notée par exemple V, caractérisée par :
I Sa valeur initiale, notée par exemple Vi.
I Sa valeur finale, notée par exemple Vf.
I Son pas de variation, notée par exemple Pas.

Mohamed Hachimi Informatique 2013/2014 42 / 48


Structures répétitives

Pour croissante ou décroissante

Selon que la valeur finale du compteur est inférieure ou supérieur


à sa valeur initiale, on distingue deux cas :

Pas négatif Pas positif

Mohamed Hachimi Informatique 2013/2014 43 / 48


Structures répétitives

Syntaxe

Utilisez l’instruction For . . . Next selon la syntaxe suivante :


For compteur = Vi To Vf Step Pas
Instructions
Next compteur

L’instruction Step Pas désigne le pas de la boucle. Pas est la


valeur des sauts que fait la variable d’itération. Si on ne l’indique
pas, il vaut 1 par défaut (c’est pratique car on veut le plus souvent
travailler avec des entiers consécutifs).

Mohamed Hachimi Informatique 2013/2014 44 / 48


Structures répétitives

Exemple : Calcul de 5!

Avec un pas positif de +1 (5! = 1 × 2 × 3 × 4 × 5)


Sub Calcul_factorielle4()
fact = 1
For i = 1 To 5 Step 1
fact = fact * i
Next i
End Sub

Avec un pas négatif de −1 (5! = 5 × 4 × 3 × 2 × 1)


Sub Calcul_factorielle5()
fact = 1
For i = 5 To 1 Step -1
fact = fact * i
Next i
End Sub

Mohamed Hachimi Informatique 2013/2014 45 / 48


Structures répétitives

Boucles For Each

La construction For Each . . . Next exécute un jeu d’instructions


une fois pour chaque élément d’une collection.
Cette construction s’utilise selon cette syntaxe :
For Each élément In Collection
Instructions
Next élément

où élément est une variable de type Object ou Variant,


utilisée pour représenter chaque objet de la collection dans les
Instructions, et Collection le nom de la collection d’objets.

Mohamed Hachimi Informatique 2013/2014 46 / 48


Structures répétitives

Exemple

Supposons qu’une plage de cellules contenant des nombres est


sélectionnée, la procédure suivante double les numbres.
Sub DoubleValues()
Dim r as Range
For Each r in Selection
r = r * 2
Next r
End Sub

Mohamed Hachimi Informatique 2013/2014 47 / 48


Structures répétitives

Choisir la boucle à utiliser

Les questions a se poser, dans l’ordre, sont :


1◦ Doit-on parcourir une collection ?
I Boucle For Each
2◦ Peut-on exprimer le nombre de tour (combien de fois on veut
le faire) ?
I Boucle For
3◦ Si la réponse est non a ces 2 questions
I boucle Do Loop. Pensez à l’emplacement de la condition,
en se demandant : " Les instructions de la boucle devront
être faites au moins 1 fois ou pas ?

Mohamed Hachimi Informatique 2013/2014 48 / 48

Vous aimerez peut-être aussi