VBA Programmation

Transcription

VBA Programmation
Excel
2002
VBA
Programmation
SOMMAIRE
Débuter la programmation........................................................................................................ 3
A) Cahier des charges........................................................................................................................ 3
1 - Quel(s) est(sont) le(s) résultat(s) à obtenir ? .............................................................................................. 3
2 - Quelles sont les données initiales à fournir ? ............................................................................................. 3
3 - Quel(s) est(sont) le(s) traitement(s) ........................................................................................................... 3
B) Analyse........................................................................................................................................... 3
C) Ecrire le code VBA ....................................................................................................................... 4
D) Tester le code VBA ....................................................................................................................... 5
1 - Dans Visual Basic Editor ........................................................................................................................... 5
2 - Dans Excel ................................................................................................................................................. 5
3 - En cas de dysfonctionnement ..................................................................................................................... 6
E) Variante avec concaténation de texte ......................................................................................... 6
F) Variante avec entrée les données dans une boite de saisie ........................................................ 7
G) Variante avec ajout de la nature de la pièce .............................................................................. 8
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 2
Débuter la programmation
Exemple : réaliser le programme permettant de calculer et d'afficher le périmètre
d'une pièce d'habitation rectangulaire.
A) Cahier des charges
1 - Quel(s) est(sont) le(s) résultat(s) à obtenir ?
Calcul et affichage du périmètre d'un rectangle
2 - Quelles sont les données initiales à fournir ?
- la longueur de la pièce
- la largeur de la pièce
remarque:
pour simplifier, dans un 1er temps, les valeurs seront mises dans le programme.
3 - Quel(s) est(sont) le(s) traitement(s)
La formule de calcul est : perimetre=(longueur+largeur) * 2
B) Analyse
a) Déclarer les variables (données et résultats)
Longueur
vLongPiece
type : numérique avec décimales
Largeur
vLargPiece
type : numérique avec décimales
Périmètre
VPeriPiece
type : numérique avec décimales
b) Initialiser les variables (données et résultats)
La longueur reçoit 2,1
La largeur reçoit 3
Le périmètre reçoit 0
c) Calculer le résultat
Le perimetre=(longueur+largeur) * 2
d) Afficher le résultat
On utilisera l'instruction msgbox() du VBA
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 3
C) Ecrire le code VBA
Il s'agit de traduire tous les éléments spécifiés ci-dessus dans un langage de
programmation donné (ici VBA).
Créer un classeur vide et l'enregistrer sous le nom IniProgrammation.xls
Appeler le menu Outils puis la commande Macro
Cliquer sur la commande Visual Basic Editor
Appeler le menu Insertion
Sélectionner la commande Module
Un module peut contenir plusieurs macrocommandes créées par apprentissage, par
saisie au clavier, par copier/coller…
Si la fenêtre de code n'apparaît pas, appeler le menu Affichage >
Code
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 4
Saisir le code
Sub perimetre1()
'Entrée des données par initialisation en "dur"
'Calcul le périmètre d'un rectangle
'Affiche le résultat dans une boite de dialogue
'Déclaration des variables
Dim vLongPiece As Single
Dim vLargPiece As Single
Dim vPeriPiece As Single
'Initialisation des variables
vLongPiece = 2.1
vLargPiece = 3
vPeriPiece = 0
'Traitement
vPeriPiece = (vLongPiece + vLargPiece) * 2
'Affichage du résultat
MsgBox (vPeriPiece)
End Sub
D) Tester le code VBA
Il existe plusieurs manières de lancer le programme.
1 - Dans Visual Basic Editor
Cliquer sur le bouton
de la barre d'outil
ou appuyer sur la touche F5
ou par le menu Exécution puis Exécuter Sub/userForm
2 - Dans Excel
Appeler le menu Outils puis Macro puis Macros
Cliquer sur le nom de la macro
Cliquer sur le bouton Exécuter
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 5
3 - En cas de dysfonctionnement
Nous allons maintenant simuler une erreur dans le programme.
Lorsqu'Excel constate une erreur dans le programme, il arrête la procédure et affiche
l'écran suivant :
L'éditeur VBA est ouvert.
La1ère ligne de programme erronée est surlignée
Un message d'erreur s'affiche
Cliquer sur le bouton OK du message d'erreur
Rectifier le programme
Pour relancer la procédure interrompue, appeler le menu Exécution
Sélectionner la commande Réinitialiser
Fermer l'éditeur VBA
Relancer la macrocommande
E) Variante avec concaténation de texte
Modifier le code pour améliorer l'affichage : un texte précède le résultat.
Le symbole & permet de concaténer (mettre bout à bout) des données de type
chaine de caractères.
Le texte "Le périmètre de la pièce est de " est concaténé à vPeriPiece.
VBA utilise alors la variable numérique vPeriPiece comme une chaine de
caractères.
'Affichage du résultat
MsgBox "Le périmètre de la pièce est de " & vPeriPiece
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 6
F) Variante avec entrée les données dans une boite de saisie
Sélectionner tout le code et le copier dessous.
Modifier le code pour obtenir un programme "perimetre2" qui demande à
l'utilisateur d'entrer les données par boite de saisie inputbox().
Pour tester ce code, il faut cliquer dans une des lignes de ce code.
Sub perimetre2()
'Affiche une boite de saisie pour entrer les données
'Calcule le périmètre d'un rectangle
'Affiche le résultat dans une boite de dialogue
'Déclaration des variables
Dim vLongPiece As Single
Dim vLargPiece As Single
Dim vPeriPiece As Single
'Initialisation des variables
vLongPiece = 0
vLargPiece = 0
vPeriPiece = 0
'Saisie des données et affectation dans la variable correspondante
vLongPiece = InputBox("Entrez la longueur de la pièce")
vLargPiece = InputBox("Entrez la largeur de la pièce")
'Traitement
vPeriPiece = (vLongPiece + vLargPiece) * 2
'Affichage du résultat
MsgBox "Le périmètre de la pièce est de " & vPeriPiece
End Sub
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 7
G) Variante avec ajout de la nature de la pièce
Exemple : La pièce devra être précisée (cuisine, chambre, etc.) dans les données
initiales et dans le message de résultat.
On ajoute une variable vPiece de type chaîne de caractères qui
correspond à la nature de la pièce
La nature de la pièce est initialisée par une chaîne de caractères vide ""
Sub perimetre3()
'Affiche une boite de saisie pour entrer les données
'Calcule le périmètre d'un rectangle
'Affiche le résultat dans une boite de dialogue
'Déclaration des variables
Dim vLongPiece As Single
Dim vLargPiece As Single
Dim vPeriPiece As Single
Dim vPiece As String
'Initialisation des variables
vLongPiece = 0
vLargPiece = 0
vPeriPiece = 0
vPiece = ""
'Saisie des données et affectation dans la variable correspondante
vLongPiece = InputBox("Entrez la longueur de la pièce")
vLargPiece = InputBox("Entrez la largeur de la pièce")
vPiece = InputBox("Entrez la nature de la pièce")
'Traitement
vPeriPiece = (vLongPiece + vLargPiece) * 2
'Affichage du résultat
MsgBox "Le périmètre de la pièce " & vPiece & " est de " & vPeriPiece
End Sub
Université de Marne-la-Vallée
Informatique / F. Petit
Excel 2002
Programmation VBA
mai 2008
Page 8

Documents pareils