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