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