Chapitre 11 : Langage VBA

Documents pareils
Formation VBA 3 Interagir

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

FORMATION au VBA Pour EXCEL. Version 2007 & +

Visual Basic for Applications


Comment créer et utiliser une fonction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Algorithmique et programmation : les bases (VBA) Corrigé

TABLEAU CROISE DYNAMIQUE

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Initiation à VBA pour Excel. Philippe Bernard Ingénierie Economique et Financière Université Paris-Dauphine

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Cours Informatique Master STEP

Guide de formation avec cas pratiques. Programmation. Philippe Moreau Patrick Morié. Daniel-Jean David

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Préparation à l examen EFA en Macro

1 TD 2 : Construction d'une chier Acrobat et envoi par

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Cours d algorithmique pour la classe de 2nde

TABLEAU CROISE DYNAMIQUE

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Algorithmique et Programmation, IMA

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Initiation à la programmation en Python

1. Introduction Création d'une requête...2

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

MODE OPERATOIRE OPENOFFICE BASE

Débuter avec Excel. Excel

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation Visual Basic. Visite guidée d'un programme Visual Basic 6.0

Bases de programmation. Cours 5. Structurer les données

Uniformiser la mise en forme du document. Accélère les mises à jour. Permets de générer des tables de matières automatiquement.

Microsoft Excel Présentation du tableur Excel

SOMMAIRE. Travailler avec les requêtes... 3

Microsoft Excel. Tableur

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

Créer une base de données

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Programmation VBA. Excel Daniel-Jean David. et Groupe Eyrolles, 2014, ISBN :

Publipostage avec Calc

Créer le schéma relationnel d une base de données ACCESS

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

L ORDINATEUR FACILE D ACCÈS!

TD3 - Facturation avec archivage automatisé

EXCEL TUTORIEL 2012/2013

Initiation à LabView : Les exemples d applications :

Formation Excel. Introduction Les Bases du Logiciel Le comportement des cellules. Calculs élaborés. Les feuilles de calculs élaborées

PRÉSENTÉ PAR : NOVEMBRE 2007

Cours d Informatique

GUIDE Excel (version débutante) Version 2013

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

1. Structure d'un programme FORTRAN 95

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

AFTEC SIO 2. Christophe BOUTHIER Page 1

TIC INFORMATIQUE Ce que je dois retenir

Access 2007 FF Access FR FR Base

Note de cours. Introduction à Excel 2007

Stockez et organisez vos données sous Excel. Une approche systématique, structurée et simplifiée

Traitement de texte : Quelques rappels de quelques notions de base

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

Corrigé des TD 1 à 5

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

1. Installation de COMPTINE

3 : créer de nouveaux onglets dans Netvibes Cliquer sur le bouton «+» et renommer le nouvel onglet (par exemple Encyclopédies en ligne)

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Mon aide mémoire traitement de texte (Microsoft Word)

Programmation C++ (débutant)/instructions for, while et do...while

Manuel utilisateur Netviewer one2one

Application 1- VBA : Test de comportements d'investissements

STAGE IREM 0- Premiers pas en Python

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Algorithmique avec Algobox

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Notions fondamentales du langage C# Version 1.0

Rapport de Mini-Projet en ArcGIS Engine

TAGREROUT Seyf Allah TMRIM

Calc 2 Avancé. OpenOffice.org. Guide de formation avec exercices et cas pratiques. Philippe Moreau

LE TABLEUR OPENOFFICE CALC : CONTRÔLES DE FORMULAIRES ACCÈS AUX BASES DE DONNÉES

CAPTURE DES PROFESSIONNELS

Organigramme / Algorigramme Dossier élève 1 SI

COURS AUTOCAD. Création et utilisation des blocs. b leclerc. ERP Jean Moulin METZ

Administration du site (Back Office)

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

La saisie d un texte

MO-Call pour les Ordinateurs. Guide de l utilisateur

Notice d utilisation

"Indy\Source\Fulld7.bat" 6. Lancer à présent Delphi. Allez dans le menu "Composant" puis sur "Installer des paquets...".

Conventions d écriture et outils de mise au point

Examen Médian - 1 heure 30

Transcription:

Chapitre 11 : Langage VBA I. Introduction à la programmation objet VBA est un langage orienté objet. C'est à dire qu'il fonctionne avec des objets qui possèdent des propriétés et des méthodes. I.1. Les objets Un objet représente un élément d'une application. La figure 1 montre quelques exemples d objets utilisés dans la programmation VBA. Objet Excel Classeur Feuille de calcul Cellule Graphique Tableau Croisé Nom en programmation VBA Application Workbook Worksheet Range Chart PivotTable Figure 1 : Exemples d objets utilisés dans le code VBA

Excel, Macros et langage VBA Tous les objets de même type forment une collection (exemple : l'ensemble des feuilles d'un classeur). Au sein d'une collection, on identifie chaque élément par un index (numéro) ou un nom. Exemple : Pour faire référence à la feuille (Feuil1), on va utiliser Worksheets(1) qui identifie la 1 ère feuille du classeur ou Worksheets("Feuil1") qui identifie la feuille dont l'intitulé de l'onglet est feuil1. Chaque objet peut avoir ses propres objets. Par exemple, l objet Excel possède des classeurs. Les classeurs possèdent des feuilles. Les feuilles possèdent des cellules. Pour faire référence à la cellule A1 de la feuille1 du classeur1, on pourrait ainsi utiliser le code suivant : Application.Workbooks(1).Worksheets("Feuil1").Range("A1") I.2. Les propriétés Une propriété est une caractéristique d'un objet telle que la taille, la couleur, ou un aspect de son comportement, par exemple s'il est activé ou visible. Objet.Propriété = valeur Exemple : Mettre la valeur 28 dans la cellule A1. Worksheets("Feuil1").Range("A1").Value = 28 Exemple : Masquez la feuille de calcul "Feuil1". Worksheets("Feuil1").Visible = False Exemple : Modifiez la couleur de fond de la cellule A1 en jaune clair. Worksheets("Feuil1").Range("A1").Interior.ColorIndex = 19 Ou bien Worksheets("Feuil1").Range("A1").Interior.Color=RGB(255, 255, 204) 138

Chapitre 11 : Langage VBA I.3. Les méthodes Une méthode est une action que l'objet peut exécuter, telle que ouvrir, fermer, sélectionner, enregistrer, imprimer, effacer, etc. Objet.Méthode Exemple : Fermer le classeur actif ActiveWorkbook.Close Exemple : Sélectionner la plage de cellule A1:D5. Worksheets("Feuil1").Range("A1:D5").Select I.4. Les Évènements Pour qu'une macro se déclenche, il faut qu'un évènement se produise telle qu'un clic sur un bouton, l'ouverture d'un classeur, activation d une feuille etc. Dans la fenêtre de code, pour chaque objet, ou chaque contrôle vous avez une liste de procédures événementielles dans lesquelles vous pouvez ajouter le code qui s exécutera lors de la détection de l événement correspondant. Exemple : Affichez le message «Bonjour» à l ouverture du classeur. Pour créer une procédure évènementielle liée à un classeur : Sélectionnez l objet ThisWorkbook, puis cliquez sur le bouton Afficher le code ou bien faire un double-clic sur l objet ThisWorkbook. Vous accédez ainsi au module lié à l'objet classeur. Dans la fenêtre de code du classeur, sélectionnez Workbook dans la liste objet puis sur l'évènement Open dans la Liste des procédures événementielles. Voir la figure 2. 139

Excel, Macros et langage VBA Figure 2 : Liste d objets et liste des procédures événementielles Ecrire le code suivant à l intérieur de la procédure créée par Visual Basic Editor : Private Sub Workbook_Open() MsgBox "Bonjour" Remarque : Activer les macros Lorsque vous chargez un fichier Excel comportant des macros. Excel vous informe que les macros sont désactivées. Pour enlever cette sécurité, il faut aller dans le menu Outils puis Macro puis Sécurité puis choisir le niveau de sécurité le plus bas dans l'onglet Niveau de sécurité. 140

Chapitre 11 : Langage VBA II. Variables, constantes et types de données II.1. Variables Une variable est identifiée par un nom qui sert à stocker des données (nombre, texte, valeur logique, date, etc) qui sont susceptibles d être modifiées lors de l exécution. Le nom de la variable doit respecter quelques règles : Le premier caractère est obligatoirement une lettre. Ne peut contenir que des chiffres, des lettres et du caractère souligné «_» (underscore). Les espaces ou les ponctuations ne sont pas permis. Les lettres majuscules et minuscules sont équivalentes, et les caractères accentués sont acceptés. La longueur maximale d'un nom est de 255 caractères. Le nom ne peut être un nom réservé de VBA (tels que IF, Const, while ). Déclaration d une variable La déclaration d'une variable se fait par le mot Dim Dim nom_variable [As type] Note : L expression entre crochets «[]» est optionnelle ; n est pas obligatoire. Exemple : Déclaration d une variable x de type entier. Dim x as integer L affectation consiste à donner une valeur à une variable. Elle s écrit à l aide du signe «=». Nom_variable = valeur Exemple : Affecter à x la valeur 2. 141

Excel, Macros et langage VBA x = 2 Exercice : Ecrire une macro qui calcule la somme de deux entiers x = 16 et y = 25. Solution : Lancez VBE en utilisant le raccourci clavier ALT + F11. Dans l environnement VBE, insérez un module et saisir les instructions suivantes dans la fenêtre de code de ce module : Sub Macro_somme() Dim s As Integer Dim x As Integer Dim y As Integer x = 16 y = 25 s = x + y MsgBox s Dans l environnement VBE, cliquez sur la touche F5 pour exécuter cette Macro. La somme est affichée dans la boite de dialogue suivante : Sur le CD-ROM Les exemples de ce chapitre sont disponibles sur le CD-ROM de ce livre dans le classeur exemples\corr_chapitre11.xls. Les variables peuvent également faire référence à des objets comme des cellules, des feuilles de calcul, des graphiques, des classeurs, etc. Elles sont déclarées de la même façon qu'une variable normale. Exemple : 142

Chapitre 11 : Langage VBA Ecrire une macro dont le nom est Macro_objet permettant d affecter à la cellule B2 de la feuille Objet la valeur 10. Solution : Dans un module saisir et exécuter le code suivant : Sub Macro_objet() 'La variable X fait référence à une plage de cellule Dim X As Range 'Le mot Set lui affecte la cellule "B2" de la feuille objet Set X = worksheets("objet").range("b2") 'La cellule "B2" prend comme valeur 10 X.Value = 10 II.2. Constante Une constante est une donnée définie initialement et ne peut pas être modifiée lors de l exécution de l application. La déclaration d une constante se fait à l aide de l instruction Const. Const nom_constante [As type] = expression Exemple: Const Pi as single = 3.14 Const titre = Application Excel II.3. Types de données Un type de données peut être attribué à une variable, ce qui permet de déterminer le type d information que la variable peut stocker. Les principaux types de données de VBA sont illustrés dans la figure 3. Type Algorithmique Mémoire nécessaire Byte Octet 1 octet Boolean logique 2 octets 143

Excel, Macros et langage VBA Integer Entier 2 octets Long Entier long 4 octets Single Réel simple (nombre en virgule 4 octets flottante) Double Réel double (nombres en virgule 8 octets flottante) Date date 8 octets Currency Monétaire 8 octets String Chaîne de longueur variable 10 + nombre de caractères String*x Chaîne de longueur x fixe x Object Objet 4 octets Figure 3 : Les principaux types de données II.4. Portée des variables La portée d'une variable définit les procédures de l'application en mesure d'utiliser cette variable. Une variable déclarée à l'intérieur d'une procédure est dite Locale. Elle est déclarée avec le mot clé Dim. Elle n est accessible qu à la procédure à l intérieur de laquelle elle est définie, les autres procédures n y ont pas accès. La durée de vie d une variable locale est limitée à la durée d exécution de la procédure. Exemple : Utilisation d une variable locale. Sub Variable_locale() Dim Var1 As String Var1 = "Ceci est le contenu de Var1" MsgBox Var1 Une variable peut être "Locale au module" si celle-ci est déclarée en haut d'un module (juste en dessous d'option Explicit). Toutes les procédures du module peuvent alors lui faire appel. Elle est déclarée par le mot Private. 144

Chapitre 11 : Langage VBA Exemple : Déclaration des variables avec le mot private. ' La déclaration des variables est obligatoire Option Explicit 'Les variables Var1, Var2 et Var3 peuvent être utilisées dans toutes les procédures du module Private Var1 As Integer Private Var2 As Integer Private S as integer Private P as long ' Calcul est affichage de la somme de deux variables Sub Somme() Var1 = 5 Var2 = 10 S= Var1 + Var2 Msgbox S ' Calcul est affichage du produit de deux variables Sub Produit() P = Var1 * Var2 Msgbox P Une variable peut également être accessible à tous les modules d'un projet. On dit alors qu'elle est publique. Elle est déclarée par le mot Public dans un module. Une variable publique ne peut pas être déclarée dans un module de feuille ou dans un module de UserForm. 145

Excel, Macros et langage VBA III. Procédures et fonctions III.1. Procédure Une procédure est une série d'instructions effectuant des actions, elle est délimitée par les instructions Sub et. [Private] [Public] Sub Nom_Procédure([arguments]) Insrtuction(s) Note : L expression entre crochets «[]» est optionnelle ; n est pas obligatoire. Sub et déterminent le début et la fin de la procédure Private / Public : indique si la procédure est privée ou publique Une procédure générale est par défaut publique (Public) Une macro est une procédure sans arguments (paramètres) Une procédure renvoie plus d une valeur ou aucune valeur. Exemple : Créer une procédure qui affiche Bonjour. Dans VBE (Visual Basic Editor), créez un nouveau module par le menu Insertion. Saisissez le code suivant dans ce module : Sub Essai() MsgBox "Bonjour" Remarque : Pour déclarer une procédure, taper Sub et son nom puis taper Entrée. VBE ajoute automatiquement les parenthèses et la ligne. A l'intérieur de vos procédures, écrivez vos instructions en minuscules, VBE se chargera de transformer votre code par des majuscules. 146

Chapitre 11 : Langage VBA Exécuter une procédure Pour exécuter une procédure (une macro), vous avez deux possibilité : A partir du VBE Cliquez à l'intérieur de ce code. Exécutez le code en cliquant sur le bouton exécuter d outils ou en appuyant sur la touche F5. de la barre A partir d Excel Dans le menu Outils, pointez sur Macro, puis cliquez sur la commande Macros puis sélectionnez la macro à exécuter, dans ce cas Essai et cliquez sur le bouton Exécuter. III.2. Fonction Une fonction est une procédure qui renvoie une valeur (une seule valeur). Elle est délimitée par les instructions Function et End Function. [Private] [Public] Function nom_fonct ([arguments]) as type Instructions nom_fonct = expression End Function Exercice : Soit la feuille de calcul suivante : 1. Ecrire une fonction permettant de calculer la somme de deux entiers. 2. Utiliser cette fonction pour calculer la somme de X et Y dans la cellule B3. Solution : 1. Fonction qui calcul la somme : 147

Excel, Macros et langage VBA Function Addition(X As Integer, Y As Integer) as integer Addition = X + Y End Function 2. Utilisation de cette fonction sous Excel : Sélectionner la cellule B3. Cliquer sur le menu Insertion, puis cliquer sur la commande Fonction. Une boîte de dialogue Insérer une fonction s affiche (figure 4). Dans la liste déroulante Catégorie sélectionnez Personnalisées et dans la liste Sélectionnez une fonction, sélectionnez la fonction à exécuter dans ce cas c est la fonction Addition. Figure 4 : Boite de dialogue insérer une fonction Validez par le bouton OK. 148

Chapitre 11 : Langage VBA Une nouvelle boîte de dialogue apparaît (figure 5). Dans la zone X, sélectionner la cellule B1 et dans la zone Y sélectionner la cellule B2. Figure 5 : Boîte de dialogue pour saisir les arguments de la fonction personnalisée Addition Validez par le bouton OK. III.3. L appel d une procédure ou d une Fonction Appeler une procédure ou une fonction consiste à demander à une procédure ou à une fonction de s exécuter à partir d une autre procédure. La procédure appelée est exécutée et la procédure appelante reprend la main. Pour appeler une procédure ou une fonction on ajoute dans le code de la partie appelante l instruction suivante : Note : [Call] nom_proc ([arguments]) 149

Excel, Macros et langage VBA Si le mot Call est employé, il faut placer les arguments entre parenthèses. IV. Les opérateurs Les opérateurs accomplissent des fonctions mathématiques, des fonctions de comparaison ou des fonctions logiques entre deux nombres ou deux expressions numériques dans un programme. IV.1. Les opérateurs arithmétiques Les opérateurs arithmétiques (figure 6) permettent d'effectuer des calculs. Opérateur Signification Exemple Résultat + Addition 4 + 6 10 - Soustraction 6-4 2 * Multiplication 6 * 4 24 \ Division entière 6 \ 4 1 / Division 6/4 1,5 Mod Modulo (reste de la 6 Mod 4 2 division entière) ^ Puissance 2^4 16 Figure 6 : Opérateurs arithmétiques IV.2. Les opérateurs de comparaison Les opérateurs de comparaison (figure 7) comparent deux expressions. Ils retournent une valeur booléenne, Vrai ou Faux. Opérateur Signification Exemple Résultat < Inférieur 4 < 6 True <= Inférieur ou égal 4<=6 True > Supérieur 4 > 6 False 150

Chapitre 11 : Langage VBA >= Supérieur ou égal 4 >= 6 False = Egal 4 = 6 False <> Différent 4 <> 6 True Figure 7 : Opérateurs de comparaison IV.3. L opérateur de concaténation L opérateur de concaténation & concatène deux opérandes. Exemple : MsgBox "Sabir" & " " & "Ahmed" Cette commande affiche le résultat : Sabir Ahmed Vous pouvez aussi concaténer des nombres et des chaînes de caractères, dans ce cas le résultat sera une chaîne de caractères. La commande suivante affiche le résultat : 2 chaînes Msgbox 2 & " chaînes" Exemple : MsgBox 2 & 3 Cette commande affiche le résultat «23», mais il s agit d une chaîne de caractères et non pas d un nombre. IV.4. Les opérateurs logiques Les opérateurs logiques (figure 8) permettent de vérifier si une ou plusieurs conditions sont vraies. Voici une liste d opérateurs logiques : Opérateur Signification Exemple Résultat est vrai si Not Négation Not (exp) L expression (exp) est fausse And Et logique (exp1) and (exp2) Les deux expressions sont vraies Or Ou logique (exp1) or Une expression au moins 151

Excel, Macros et langage VBA (exp2) Xor Ou exclusif (exp1) Xor (exp2) Exemple : MsgBox Not (5 = 8) Figure 8 : Opérateurs logiques est vraie Une seule expression est vrai mais pas les deux Cette commande affichera le résultat Vrai parce que 5 n est pas égal à 8. V. Les boîtes de message Les boîtes de message servent à communiquer avec l'utilisateur. Il existe des boîtes qui affichent de l'information et d'autres qui en demandent. V.1. MsgBox MsgBox est une fonction qui affiche un message dans une boîte de dialogue, attend que l utilisateur clique sur un bouton, puis renvoie une valeur de type entier qui indique le bouton choisi par l utilisateur. Retour = MsgBox (Message [, Bouton] [, Titre]) Les arguments passés à la fonction MsgBox sont : Retour : Variable de type Entier (Integer) recevant la valeur du bouton. Message : c est le message qui sera affiché dans la boîte de dialogue Bouton : détermine le type des boutons (OK, cancel, ignorer,..). Par défaut c est le bouton OK. Titre : spécifie le libellé qui apparaîtra dans la barre de titre de la boîte de dialogue. Remarque : Si l affichage du message n a pour but que d informer l utilisateur d un fait ou d une situation, le stockage de la valeur retournée par MsgBox et les parenthèses deviennent inutiles. 152

Chapitre 11 : Langage VBA MsgBox Message [, Bouton] [, Titre] Exemple : Sub message1() MsgBox "Bonjour, vous venez de lancer l'application de gestion de stock" Résultat : Figure 9 : Message affiché par la fonction MsgBox Vous pouvez ajouter dans la boîte de dialogue une icône qui donne une indication visuelle sur la nature du message. MsgBox message [, bouton [+ code_icone]] [, titre] Il existe quatre icônes (figure 10) que vous pouvez utiliser en fonction des valeurs ou des constantes, voir le tableau suivant : Constante Valeur Icône Utilisation vbcritical 16 Erreur fatale vbquestion 32 Question vbexclamation 48 Remarque 153

Excel, Macros et langage VBA vbinformation 64 Information Figure 10 : les icônes affichés par la fonction MsgBox Exemple : Sub message2() MsgBox "Bonjour", vbinformation Résultat : Pour spécifier le type du bouton on peut utiliser une valeur entière ou une constante nommée, voir la figure 11. Constante Valeur Boutons vbokonly 0 vbokcancel 1 vbabortretryignore 2 vbyesnocancel 3 vbyesno 4 vbretrycancel 5 Figure 11 : Les types de boutons affichés par la fonction MsgBox 154

Chapitre 11 : Langage VBA L exemple suivant affiche une boîte de message avec les boutons Oui et Non, une icône, un titre et un message personnalisés : Sub message3() MsgBox "Voulez-vous fermer l'application?", vbyesno + 32, "application" Résultat : Chaque bouton, lorsqu'il est activé, renvoie une valeur que l'on pourra récupérer dans une variable. Le tableau ci-dessous montre les valeurs renvoyées par l'instruction MsgBox. Constante Valeur Bouton vbok 1 OK vbcancel 2 Annuler vbabort 3 Abandonner vbretry 4 Réessayer vbignore 5 Ignorer vbyes 6 Oui vbno 7 Non L exemple suivant affiche une boîte de message avec deux boutons (Oui et Non). Si le bouton Oui est cliqué, le classeur actif sera fermé. 155

Excel, Macros et langage VBA Sub message4() Dim R As Integer R = MsgBox("Voulez-vous fermer l'application?", vbyesno, "confirmation") If R = 6 Then ActiveWorkbook.Close End If V.2. InputBox InputBox est une fonction qui affiche une invite dans une boîte de dialogue, attend que l'utilisateur tape du texte et/ou clique sur un bouton, puis renvoie le contenu de la zone de texte sous la forme d'une valeur de type String. R= InputBox (message [, titre] [, texte_defaut]) Description des arguments : Message : message qui s affiche dans la boîte de dialogue. Titre : le texte qui apparaîtra dans la barre de titre texte_defaut : c est le contenu par défaut du champ de saisie. Cet exemple affiche une boîte de dialogue qui invite l utilisateur à saisir son nom et affiche ce nom dans la cellule A1 de la feuille active. Résultat : Sub saisir() Dim R As String R = InputBox("Entrez votre nom? ", "Remplir", "votre nom") Range("A1") = R 156

Chapitre 11 : Langage VBA VI. Structures conditionnelles et boucles VI.1. Structures conditionnelles On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. La structure If... Then... Else End If Structure conditionnelle If condition Then [Instructions à exécuter quand la condition est vraie] [Else [Instructions à exécuter quand la condition est fausse]] End If Algorithmique Si condition alors [instructions] [Sinon [instructions]] FinSi La structure If... Then... Else... End If est utilisée pour exécuter une ou plusieurs instructions conditionnelles. La clause Else est facultative, si elle est incluse, elle permet d exécuter une ou plusieurs instructions quand la condition est fausse. Exemple : Ecrire une macro permettant de tester si le contenu de la cellule A1 = 10. 157

Excel, Macros et langage VBA Solution 1 : Sans utilisation de la clause Else Sub structure_cond1() If Worksheets("Feuil1").Range("A1").Value = 10 Then MsgBox "La cellule A1=10" End If Solution 2 : Utilisation de la clause Else Sub structure_cond2() If Worksheets("Feuil1").Range("A1").Value = 10 Then MsgBox "La cellule A1=10" Else MsgBox "La cellule A1<>10" End If L'instruction If... Then... ElseIf... Else End If Structure conditionnelle If condition1 Then Instructions1 Elseif condition2 Then Instructions2 ElseIf condition3 Then Instructions3 Else Instructions End If Exercice : Soit la feuille de calcul suivante : Algorithmique Si condition1 alors Instructions1 SinonSi condition2 alors Instructions2 SinonSi condition3 alors Instructions3.. Sinon Instructions Fin si 158

Chapitre 11 : Langage VBA Ecrire une macro permettant de lire la note saisie dans la cellule B1 de la feuille 5 et affiche la mention dans la cellule B2. Sub structure_cond3() Dim note As Double note = Worksheets("Feuil5").Range("B1").Value If note >= 16 Then Range("B2") = "Trés bien" ElseIf note >= 14 Then Range("B2") ="Bien" ElseIf note >= 12 Then Range("B2") = "Assez bien" ElseIf note >= 10 Then Range("B2") = "Passable" Else Range("B2") = "Mauvais résultat" End If Structure Select Case La structure Select case crée une structure décisionnelle permettant d exécuter un grand nombre de blocs de code différents en fonction de la valeur d une expression. Structure alternative VB Algorithmique 159

Excel, Macros et langage VBA Select Case expression [Case valeur1 [instructions1 à exécuter si expression=valeur1]] [Case valeur2 [instructions2]] [Case valeur n [instructions n]] [Case Else [instructions pour les cas où expression ne correspond à aucune des valeurs]] End Select Exemple : Soit la feuille de calcul suivante : Choisir selon expression vérifiée Cas1 : valeur1 instructions1 Cas 2 : valeur2 instructions1 Cas n : valeur n Instructions n Cas par défaut : Instructions Fin choisir Ecrire une macro permettant de lire la valeur saisie dans la cellule B1 de la feuille 6 et affiche le jour correspondant à cette valeur dans la cellule B2. 160

Chapitre 11 : Langage VBA Sub structure_cond4() Dim n As Integer Dim jour As String n = Worksheets("Feuil6").Range("B1") Select Case n Case 1 jour = "Lundi" Case 2 jour = "Mardi" Case 3 jour = "Mercredi" Case 4 jour = "Jeudi" Case 5 jour = "Vendredi" Case 6 jour = "Samedi" Case 7 jour = "Dimanche" Case Else jour = "La cellule B1 contient un nombre non valide" End Select Worksheets("Feuil6").Range("B2") = jour VI.2. Boucles Les boucles (structures répétitives) permettent de répéter l exécution d un bloc d instructions, soit à un nombre précis de reprises, soit jusqu'à ce qu'une condition devienne vraie. Boucle For Next La boucle For... Next permet de répéter des instructions un nombre précis de fois. Structure répétitive Algorithmique 161

Excel, Macros et langage VBA For compteur = ValeurDepart To ValeurFin [Step valeursaut] [instructions] [Exit For] Next [compteur] Exemple 1 : Utilisation de la boucle for. Sub boucle1() Dim i As Integer For i = 1 To 10 MsgBox i Next Pour compteur = ValeurDepart jusqu à ValeurFin [par pas de valeursaut] [instructions] [Sortir de la boucle] Fin pour [compteur] Dans ce code la boîte de message apparaîtra dix fois en affichant les valeurs de i de 1 jusqu à 10. Exemple 2 : Utilisation de la boucle for avec step. Sub boucle2() Dim i As Integer For i = 2 To 10 Step 2 MsgBox i Next Dans ce code la boîte de message apparaîtra cinq fois en affichant les valeurs 2, 4, 6, 8 et 10, parce que la boucle fonctionne avec un incrément de 2. Remarque : Par défaut, la valeur du compteur s incrémente de 1 Le mot clé Step permet de changer la valeur d incrémentation ou d exécuter un bloc d instruction par décrémentation Vous pouvez forcer un arrêt des répétitions avec l instruction Exit For. 162

Chapitre 11 : Langage VBA Boucle Do While La boucle Do While continue de boucler tant qu une condition logique est vraie. Elle peut avoir deux syntaxes : Syntaxe Do While condition [Instructions] Loop Do [Instructions] Loop While condition Sémantique La condition est testée au début. La boucle est répétée tant que la condition est vraie. Si la condition n est pas vérifiée alors les instructions de la boucle ne sont pas exécutées. La condition est testée à la fin de la boucle. La boucle est répétée tant que la condition est vérifiée. L exécution du bloc d instructions est réalisée au moins une fois Exemple : Réaliser une macro qui invite l utilisateur à saisir un mot de passe. Si le mot de passe saisi est «test», l ordinateur affichera le message «bienvenue». Sub boucle3() Dim MotDePasse As String Dim MotPropose As String MotDePasse = "test" MotPropose = "" Do While MotPropose <> MotDePasse MotPropose = InputBox("Saisir votre mot de passe ") Loop MsgBox "Bienvenue" Exercice : Refaire le travail de l exemple précèdent en utilisant la boucle do.. loop while. 163

Excel, Macros et langage VBA Sub boucle4() Dim MotDePasse As String Dim MotPropose As String MotDePasse = "test" MotPropose = "" Do MotPropose = InputBox("Donnez votre mot de passe") Loop While MotPropose <> MotDePasse MsgBox "Bienvenue " Boucle Do Until Cette structure est très semblable à la structure DO While. La boucle Do Until exécute des actions jusqu à ce qu une condition devienne vraie. La boucle Do Until a aussi deux syntaxes : Syntaxe Do Until condition [Instructions] Loop Do [Instructions] Loop Until condition Sémantique La condition est testée au début La boucle est répétée Jusqu à ce que la condition soit vraie Si la condition est vérifiée au départ alors le bloc d instructions ne sera pas exécuté. La condition est testée à la fin de la boucle La boucle est répétée Jusqu à ce que la condition soit vraie L exécution du bloc d instructions est réalisée au moins une fois 164

Chapitre 11 : Langage VBA Exemple : Sub boucle5() Dim MotDePasse As String Dim MotPropose As String MotDePasse = "test" MotPropose = "" Do Until MotPropose = MotDePasse MotPropose = InputBox("Donnez votre mot de passe ") Loop MsgBox "Bienvenu" VII. Bloc d'instructions WITH Cette instruction permet d'exécuter une série d'instructions se rapportant à un même objet ou à un même type défini par l'utilisateur. Elle permet une exécution du code plus rapide et évite les saisies répétitives. With Objet Instructions End With Exemple : Créer une macro qui affecte à la cellule B1 de la feuille 7 la valeur 15, la couleur noir et la police gras et italique. Sub mise_en_forme() With Worksheets("Feuil7").Range("B1").Value = 15.Font.Color = RGB(0, 0, 0).Font.Bold = True.Font.Italic = True End With 165