Tableur – Éditeur VBA

Transcription

Tableur – Éditeur VBA
Tableur – Éditeur VBA
Olivier Losson
Master GI, Spécialités PM et II, UE Tableur et Bases de Données
http://lagis-vi.univ-lille1.fr/~lo/ens/gi/#TBD
Master Génie Industriel – Tableur
1
Introduction
Généralités
Lancement : Outils/Macro/Visual Basic Editor ou Alt+F11
Fait partie d'Excel, ce n'est pas une application indépendante
Le code VBA est enregistré soit
dans le classeur courant (cas par défaut)  enregistré avec lui
dans un classeur de macros personnelles (Perso.xls), situé dans le répertoire
XLOuvrir (ou XLStart)
Master Génie Industriel – Tableur
2
Vue générale
Fenêtre Code
Fenêtre Exécution
cf. menu
Affichage
Fenêtre
Projet
Objets Excel
●Formulaires
●Modules
●
Fenêtre
Propriétés
Fenêtre Espions
Master Génie Industriel – Tableur
3
Fenêtre Projet
Nom du projet et du classeur
Objets Excel du classeur
Feuilles de calcul
Nom Code (Nom Feuille)
Classeur lui-même
Formulaires (UserForms)
Boîtes de dialogue utilisateur
Menu Insertion/UserForm
Modules
Code VBA (Déclarations,
Fonctions et Procédures)
Menu Insertion/Module
Master Génie Industriel – Tableur
4
Fenêtre Code
Affiche le code attaché à un objet
4 types d'objets peuvent contenir du code
Objet Excel Événement
Feuilles de calcul et Classeur
Le code correspond aux
événements de ces objets
Formulaires (UserForms)
Élément de formulaire Événement
Le code correspond aux
éléments du formulaire
Modules
Contiennent des fonctions Section "Déclarations", Fonctions et Procédures
et procédures utilisateur
Modules de classe
Master Génie Industriel – Tableur
5
Fenêtre Exécution
Permet d'entrer des commandes directes pour
Afficher ponctuellement la valeur d'une expression
Ex. print 2^8
Ex. ? sin(Atn(1)*2)
Ex. ? ActiveWorkbook.Name
Exécuter des instructions VBA ponctuelles
Ex. Call msgBox("Etes-vous sur ?", vbYesNo)
Voir la valeur d'une variable/expression. Ex. ? i
Peut être utilisée
Depuis le code dans un but de débogage, avec Debug.Print
Pour saisir plusieurs instructions (en les séparant par ":")
Ex. For Each elt in Array(1,2,3):print elt:Next
Master Génie Industriel – Tableur
6
Déboguer (1)
Exécuter du code
Procédure sans paramètre (="Macros")
Placer le curseur dans son code et cliquer sur
Ou : dans Excel, menu Outils/Macro/Macros...
Procédure avec paramètre(s) ou fonction
Y faire appel dans une macro dédiée, ex. Sub appel()
Ou : y faire appel dans la fenêtre Exécution
Stopper l'exécution
d'un programme qui « boucle » : Échap ou Ctrl+Pause
en plaçant (avant exécution) un point d'arrêt sur une ligne exécutable du
code (pour déboguer ensuite) :
clic dans la marge grise ou touche F9 (à l'endroit du curseur)
Master Génie Industriel – Tableur
7
Déboguer (2)
Déboguer le code
Éliminer les erreurs de syntaxe
Corriger les lignes dont le code figure en rouge
Vérifier globalement : Débogage/Compiler VBAProject
Trouver les erreurs d'exécution : possibilités
Exécuter le code
ligne à ligne : F8 ou Shift+F8
en sortant de la fonction appelée : Ctrl+Shift+F8
jusqu'au curseur : Ctrl+F8
Visualiser les variables
pointeur souris sur un nom de variable
dans le code  valeur dans bulle d'aide
fenêtre Exécution : print nbValUniques
ajout d'un espion sur la variable  valeur et type
Master Génie Industriel – Tableur
8
Déboguer (3)
Exécution du code
1
2
3
Function principale()
instruction1
instruction2
4
nomVar = appelée()
Shift+F8 5
instructions suivantes
F8
6 End Function
_____________________________________________
10 Function appelée()
Ctrl+Shift+F8
11
instructionA
(Pas à pas sortant)
12
instructionB
13
appelée = résultat
14 End Function
Pas à pas détaillé (F8) : 1-2-3 - {10-11-12-13-14}=4 - 5-6
Pas à pas principal (Shift+F8) : 1-2-3-4-5-6
Master Génie Industriel – Tableur
9
Déboguer (4)
Fenêtre Espions
Utilité : suivre l'évolution des valeurs des variables
Description
Variable espionnée
Valeur
Type Fonction concernée
Possibilité
d'espionner
les tableaux
et les objets
Ajouter une variable à espionner
Glisser-déposer son nom dans la fenêtre
Ou : clic sur son nom puis Débogage/Ajouter un espion
Ou : clic droit sur son nom puis Ajouter un espion
Master Génie Industriel – Tableur
10