Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan...

25
Programmation en VBA A. ZEMMARI Maître de conférences en Informatique [email protected] http://www.labri.fr/perso/zemmari

Transcript of Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan...

Page 1: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Programmation en VBA

A. ZEMMARI

Maître de conférences en Informatique

[email protected]

http://www.labri.fr/perso/zemmari

Page 2: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Informations pratiques

• Objectifs : programmation en VBA

• Volume horaire : 20hC+10hTD

• Déroulement : cours + exercices

• Modalités de contrôle : Projet + Examen sur table

Page 3: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Plan

• VBA et Excel

• Variables et constantes

• Structures de contrôle (syntaxe du langage)

• Objets Excel

• Interfaces graphiques

Page 4: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Environnement de travail

• VBE (Visual Basic Editor) : environnement de programmation de VBA (Visual Basic Application)

• Il se lance par le menu « Outils-Macro-Visual-Basic-Editor »

ou par le raccourci clavier "Alt+F11".

Page 5: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Environnement de travail

• Les principales fenêtres de VBE :

1. Fenêtre VBAProject. Elle présente les différents projets ouverts et permet de naviguer facilement entre vos différentes feuilles de codes VBA.

2. Fenêtre Code. C'est l'endroit ou vous allez saisir votre code VBA.

3. Fenêtre Propriétés. Propriétés de l'objet sélectionné.

4. Fenêtre Exécution. Elle permet de tester une partie du code. Elle peut s'avérer très utile pour voir comment s'exécutent certaines lignes de code.

Page 6: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Avant de commencer …

• Les instructions à exécuter doivent toujours être écrites à l’intérieur d’une procédure ou fonction : – Une procédure est une suite d'instructions effectuant des actions. Elle

commence par Sub NomDeLaProcédure et se termine par End Sub. Exemple : Sub Essai() MsgBox "Bonjour’’ End Sub

– Une fonction est une procédure qui renvoie une valeur. Elle se déclare de la même façon qu'une procédure. Exemple : Function Calcul(Nbre1 As Integer, Nbre2 As Integer) Calcul = Nbre1 + Nbre2 End Function

Page 7: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

VBA et EXCEL

• Macro

• Enregistreur de Macros (démo)

• Programmes VBA (démo)

Page 8: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Variables et constantes

Page 9: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Notion de variable

• Une variable = {identificateur, type, valeur}

– Identificateur : nom par lequel la variable est manipulée dans le programme

– Type : type des valeurs possibles que la variable peut contenir

– Valeur : valeur stockée dans la variable

Page 10: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Identificateur d’une variable

• doit commencer par un caractère alphabétique et ne pas comporter les caractères suivants : . % ! # @ $

• il ne peut pas excéder 255 caractères.

• Pour faciliter la lisibilité des programmes, on s'efforcera d'utiliser des minuscules pour les variables utilisées par le programme.

Page 11: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Déclaration des variables

• Par défaut, il n'est pas nécessaire de déclarer les variables utilisées. On peut donc utiliser n'importe quelle variable sans se préoccuper de sa déclaration préalable

• Les variables sont alors de type Variant

• pas d’optimisation

• déclarer explicitement les variables

– Syntaxe Dim identificateur As Type

Page 12: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Les types de données

• VBA autorise la création de la plupart des types de données classiques : – Integer : entier court ; – Long : entier long ; – Single : réel simple ; – Double : réel en double précision ; – Currency : nombre monétaire ; – Date : date et heure; – String : chaîne de caractères ; – Boolean : booléen (True ou False) ; – Object : référence quelconque à un objet ; – Variant : type particulier pouvant être n'importe quel autre type.

• Outre ces types élémentaires, il est également possible de créer des tableaux et des types personnalisés (voir plus loin).

Page 13: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Conversion de types

• Il est parfois nécessaire d'opérer des conversions de types.

• VBA permet d'effectuer ces opérations grâce à une série d'instructions, dont voici quelques exemples : – CInt : conversion en type de données entier ;

– CStr : conversion en type de données string ;

– CBdl : conversion en type de données double ;

– CDate : conversion en type de données date ;

– CVar : conversion en type de données variant.

Page 14: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Structures de contrôle

Page 15: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Structures conditionnelles

• If … Then …Else … ElseIf – permet d'écrire une structure conditionnelle – syntaxe : If <condition> then <instructions> Else <instructions> End If – Dans le cas où il est nécessaire d'imbriquer plusieurs structures conditionnelles, on

peut utiliser l'instruction ElseIf : If <condition> Then <instructions> ElseIf <condition> <instructions> End If

Page 16: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Structures conditionnelles (2)

• Select…case – permet d'écrire une structure conditionnelle dans laquelle une expression doit être

comparée à plusieurs valeurs. – La syntaxe est la suivante :

Select Case <variable> Case valeur1: <instructions> Case valeur2: <instructions> ... Case Else: <instructions> End Select

• Lorsque la variable est égale à une valeur répertoriée, les instructions correspondantes sont exécutées, et l'instruction Select Case se termine. La ligne Case Else permet d'inclure toutes les occurrences de la variable non répertoriées auparavant. Elle est facultative.

Page 17: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Boucles

• Do While Loop

– permet de réaliser une boucle conditionnelle.

– La syntaxe est la suivante :

Do While <condition>

<instructions>

Loop

– La condition est évaluée au début du traitement. Si elle est vraie, les instructions sont exécutées. Ensuite la condition est réévaluée, et ainsi de suite.

Page 18: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Boucles (2)

• Do Until Loop – similaire à Do While Loop. Cependant, les

instructions contenues dans le corps de l'instruction sont d'abord exécutées, à la suite de quoi la condition est évaluée.

– La syntaxe est donc la suivante : Do

<instructions>

Loop Until <condition>

Page 19: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Boucles (3)

• For Step Next – utilisée pour répéter une action selon un nombre

d'itérations déterminé.

– La syntaxe est la suivante : For <variable> = valeur1 To valeur2 Step <pas>

<instructions>

Next <variable>

– Step sert à indiquer le pas d'itération. Cette précision est toutefois facultative : par défaut, la valeur du pas utilisé est 1.

Page 20: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Boucles (4)

• For Each In Next

– est une variante de l'instruction For Step Next.

– permet de réaliser une itération en parcourant tous les objets contenus dans une collection.

– La syntaxe est la suivante :

For Each <objet> In <collection>

<instructions>

Next <object>

Page 21: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Boucles (5)

• Exemple : – Le code suivant permet de renommer toutes les feuilles de

calcul du classeur actif : Dim i As Integer

Dim feuille As sheet

...

i = 0

For Each feuille In ActiveWorkbook.Sheets

i = i + 1

'Cstr (i) permet de convertir l'entier i en une chaîne de caractères

feuille.Name = "Feuil" + CStr(i)

Next feuille

– Remarque : la ligne de commentaire introduite par une apostrophe.

Page 22: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Arrêt du programme

• Exit – permet de sortir de la séquence en cours.

– Exemple : pour terminer prématurément une procédure, on écrira :

Sub essai()

...

If <condition> Then

Exit Sub

End If

...

End Sub

– De même, les commandes Exit Do et Exit Next permettent de quitter une structure conditionnelle et une boucle For Next.

Page 23: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Arrêt du programme (4)

• Exemple : Sub essai() Dim i As Integer On Error GoTo erreur 'ouverture du fichier 'classeur1.xls' Workbooks.Open ("classeur1.xls") ... erreur: 'message d'information i = MsgBox("Impossible d'ouvrir le fichier 'classeur1.xls'!",

vbCritical) 'reprise du programme Resume End Sub

Page 24: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Interaction entre VBA et EXCEL

• Première solution : – La feuille est un objet

– Constitué de plusieurs cellules

– Feuil1.Cells(i,j) désigne la cellule de coordonnées (i,j) dans la feuille de nom Feuil1.

– Tous les objets Excel (classeur, feuilles, fonctions, …) correspondent à des objets (au sens programmation du terme) et peuvent être manipulés dans VBA (à voir dans le chapitre suivant).

Page 25: Programmation en VBA - labri.fr · •Modalités de contrôle : Projet + Examen sur table . Plan •VBA et Excel •Variables et constantes •Structures de contrôle (syntaxe du

Exercices

1. Écrire un programme qui demande à l’utilisateur de saisir son nom et affiche le message « Bonjour nom ».

2. Écrire un programme qui demande à l’utilisateur de saisir un nombre positif n et calcule la somme des nombres compris entre 1 et n.

3. Écrire un programme qui calcule le somme des valeurs se trouvant dans les cellules A1, A2, A3 et A4. Le résultat est inscrit dans la cellule A6.

4. Réaliser une facture