Guide du modèle objet Microsoft Office Excel 2003 pour débutants

Frank C. Rice
Microsoft Corporation

S'applique à :
    Microsoft® Office Excel 2003

Résumé : Apprenez, en toute simplicité, à manipuler le modèle objet Excel pour personnaliser votre utilisation d'Excel. Cet article vous guidera à travers la création de sous-routines et l'utilisation des boîtes de dialogue et vous enseignera les bases des objets, des méthodes et des propriétés. (29 pages imprimées.)

Sommaire

Introduction
À quoi peut bien servir le modèle objet Excel ?
Utilisation du guide
Connaissances préalables
Objectifs des leçons
Installation
Leçon 1 : Démarrage
Leçon 2 : Concepts de programmation : Sub. . . End Sub et procédures
Leçon 3 : Concepts de programmation : objets, méthodes et propriétés
Leçon 4 : Application concrète n° 1
Leçon 5 : Création de vos propres boîtes de dialogue
Leçon 6 : Concept de programmation : collections
Leçon 7 : Concept de programmation : If ceci, Then cela
Leçon 8 : Application concrète n° 2
Et ensuite ?
Annexe A : Réponses aux exercices pratiques

Introduction

La personnalisation de Microsoft® Office Excel 2003 devient un vrai jeu d'enfant avec le modèle objet Excel. Sincèrement. Vous n'avez pas besoin d'être bardé de diplômes informatiques ou de maîtriser sur le bout des doigts C ou C++ (ni même un autre langage de programmation) pour y parvenir. Inutile également d'avoir des connaissances préalables sur les modèles objet.

La preuve, jetez donc un coup d'œil aux lignes de code suivantes.

Sub ColorEverySecondRow()
 Const Gray = 15
 Range("A2").EntireRow.Select
 Do While ActiveCell.Value <> ""
 Selection.Interior.ColorIndex = Gray
 ActiveCell.Offset(2,0).EntireRow.Select
 Loop
End Sub

Essayez de deviner ce qu'exécute ce code dans Excel.

Ces quelques lignes de code permettent d'ajouter de l'ombrage à chaque ligne remplie de la feuille de calcul active. ColorEverySecondRow commence par déclarer une constante appelée gray de valeur 15. Nous expliquerons la signification de cette constante un peu plus tard. La ligne 2 est ensuite sélectionnée. Lorsque toute la ligne est sélectionnée, la cellule la plus à gauche dans la colonne A devient automatiquement la cellule active. Les instructions Do...Loop sont répétées tant que la cellule active reste remplie. Dans cette boucle, le code définit la couleur de fond de la cellule sélectionnée sur 15, qui correspond à la valeur de la constante Gray. Ensuite, le code sélectionne la ligne entière, deux lignes sous la cellule active. Cette opération est répétée jusqu'à ce que la cellule active se vide. La condition While n'est alors plus vraie et la boucle se termine.

Vous avez donc pu constater qu'en six lignes de code, il était possible d'ajouter rapidement de la couleur à vos feuilles de calcul pour les rendre plus attrayantes.

À quoi peut bien servir le modèle objet Excel ?

Le modèle objet Excel vous permet de personnaliser Excel selon vos besoins et vos préférences. Il s'avère particulièrement utile pour ajouter rapidement une fonctionnalité supplémentaire dans Excel.

Par exemple, l'un des dirigeants de votre entreprise se plaint de la lourdeur administrative qu'entraîne le traitement des notes de frais sur papier des commerciaux. Or, vous connaissez un moyen rapide de recréer les notes de frais dans Excel et de les convertir ensuite en schéma XML. Ainsi, les commerciaux pourront remplir leurs notes de frais directement sur leurs portables et les envoyer sur-le-champ.

Utilisation du guide

Ce guide est découpé en huit leçons. Chaque leçon porte sur des exercices pratiques à réaliser pas à pas dans Excel. Nous vous déconseillons de lire ce guide seul, mais plutôt installé devant votre ordinateur, prêt à vous exercer dans Excel.

Connaissances préalables

Vous devez simplement avoir une connaissance pratique des systèmes d'exploitation Microsoft® Windows® et être familier avec Microsoft Excel. Et c'est tout.

Si vous maîtrisez déjà les principes de programmation, vous pouvez éventuellement survoler les sections « Technique de programmation ». Néanmoins, le reste du document vous sera certainement utile.

Objectifs des leçons

Après avoir pris connaissance de ce guide, étudié tous les exemples et réalisé les exercices fournis, vous serez capable de développer des applications via le modèle objet Excel. Vous pourrez également découvrir par vous-même les outils appropriés du modèle objet Excel qui vous permettront de résoudre un problème particulier. Enfin, vous aurez la possibilité de lire certains concepts de programmation clés et d'enrichir vos connaissances en apprenant le langage de programmation Microsoft Visual Basic®. En clair, grâce à ce guide, vous saurez appliquer le modèle objet Excel aux usages et besoins de votre entreprise.

Installation

Pour pouvoir utiliser ce guide et réaliser les exemples inclus, vous devez disposer de Microsoft Office Excel 2003 (version Bêta 2 ou ultérieure). Aucun outil de développement spécial n'est nécessaire pour utiliser le modèle objet Excel.

Leçon 1 : Démarrage

Nous aurons recours, tout au long de ce guide, à Microsoft Visual Basic for Applications (VBA). VBA est une version de Microsoft Visual Basic intégrée dans les applications Microsoft Office, dont Microsoft Excel. Les solutions créées dans VBA sont également appelées macros. Une macro est une série d'instructions en langage Visual Basic qui exécutent une tâche utile. Lorsque vous écrivez des macros pour exécuter des tâches dans Excel, vous écrivez, en fait, des instructions Visual Basic qui utilisent le modèle objet Excel. Dans Excel, vous pouvez créer une macro soit en l'écrivant, soit en l'enregistrant.

Pour commencer l'écriture d'une macro :
  1. Démarrez Microsoft Office Excel 2003.
  2. Dans le menu Outils, sélectionnez Macro, puis Macros.
  3. Donnez un nom à votre macro. Conseil : Les espaces ne sont pas autorisées pour les noms de macros, vous devez donc taper MyMacro.
  4. Cliquez sur Créer.

Excel lance automatiquement Visual Basic Editor, comme illustré dans la capture d'écran ci-dessous :

Affichage par défaut de Visual Basic Editor

Figure 1. Affichage par défaut de Visual Basic Editor

Par défaut, trois fenêtres s'ouvrent dans Visual Basic Editor :

  • La fenêtre Code   Fenêtre intitulée « Classeur1 - Module1 (Code) ». Il s'agit de la fenêtre dans laquelle vous écrivez votre code.
  • La fenêtre Explorateur de projets   Fenêtre intitulée « Projet - VBAProject ». Cette fenêtre affiche tous les objets et les modules Excel à votre disposition. Ne paniquez pas si vous ne savez pas encore ce qu'est un objet Excel, nous allons y venir. Dans cette fenêtre, vous pourrez facilement visualiser et gérer plusieurs fichiers VBA.
  • La fenêtre Propriétés   Fenêtre intitulée « Propriétés - Module1 ». Cette fenêtre affiche l'ensemble des propriétés actives pour l'élément sélectionné. Par défaut, l'élément sélectionné est Module1.

Utilisons maintenant chacune de ces fenêtres :

  • Et si nous commencions par changer le nom « Module1 » ? Il est un peu trop impersonnel à mon goût ! Dans la fenêtre Propriétés, allez sur la zone intitulée « (Name) Module ». Double-cliquez sur le texte « Module1 » et saisissez « MyFirstModule ». Vous remarquez que le nom a également changé dans la fenêtre Projet et dans la barre de titre de la fenêtre Module.
  • Maintenant, dans la fenêtre Explorateur de projets, cliquez sur le SIGNE PLUS (+) en regard de Microsoft Excel Objets pour développer le nœud de l'arborescence et afficher le contenu. Par défaut, quatre objets sont inclus : Feuil1, Feuil2, Feuil3 et ThisWorkbook. L'objet principal ici est ThisWorkbook.

Visualisez la fenêtre Code de votre module, renommé « MyFirstModule ». Conseil : Pour l'ouvrir, double-cliquez sur le nom « MyFirstModule » dans la fenêtre Explorateur de projets.

Pour écrire la macro :
  1. Saisissons maintenant le code dans la routine MyMacro.

  2. Dans la fenêtre Code, tapez les lignes de code suivantes :

    Sub MyMacro()
    Dim wrkSheet As Worksheet
    
    Set wrkSheet = ActiveWorkbook.Worksheets.Add
    Range("B1").Value = "My New Sheet"
    End Sub
    

    Laissons de côté, pour l'instant, la signification et le fonctionnement de ce code, cela fera l'objet de prochaines leçons. Mais voyons plutôt la macro en action.

  3. Tout d'abord, fermez Visual Basic Editor. Dans le menu Fichier, cliquez sur Fermer et retourner à Microsoft Excel.

  4. Ensuite, dans le menu Outils d'Excel, sélectionnez Macro, puis Macros.

  5. La boîte de dialogue Macros s'ouvre avec la macro MyMacro déjà sélectionnée. Cliquez sur Exécuter.

Bravo ! Vous venez de créer une nouvelle feuille de calcul avec le titre My New Sheet inséré dans la cellule B1. Vous voilà officiellement programmeur de modèles objet Excel.

Remarque Il est possible qu'une fenêtre de message d'erreur apparaisse. Rien de grave, fermez-la simplement. Vérifiez que le code que vous avez saisi est correct et recommencez les étapes 2 à 4.

Outre la possibilité de créer des macros manuellement en tapant le code dans Visual Basic Editor, vous pouvez également créer une macro via l'enregistreur de macros. Grâce à l'enregistreur, Excel crée la macro en enregistrant chaque commande du menu, chaque frappe du clavier et chaque action nécessaire à l'exécution d'une tâche.

L'enregistrement d'une macro se déroule en trois étapes. Premièrement, vous lancez l'enregistreur de macros et attribuez un nom à votre macro. Deuxièmement, vous effectuez les actions à enregistrer. Et troisièmement, vous arrêtez l'enregistreur.

Pour commencer l'enregistrement de la macro :

Pour expliquer le fonctionnement, créons une macro toute simple qui insère le nom et l'adresse de l'entreprise dans une feuille de calcul. Commencez par enregistrer et fermer tous les classeurs, puis ouvrez un nouveau classeur.

  1. Dans le menu Outils, sélectionnez Macro, puis Nouvelle macro. La boîte de dialogue Enregistrer une macro apparaît dans Excel.

    Boîte de dialogue Enregistrer une macro

    Figure 2. Boîte de dialogue Enregistrer une macro

  2. Dans la zone Nom de la macro, saisissez un nom de type AdresseEntreprise.

  3. Dans la zone Touche de raccourci, saisissez une combinaison de touches pour exécuter la macro. Tapez, par exemple, A.

  4. Dans la zone Enregistrer la macro dans, choisissez Ce classeur.

  5. Dans la zone Description, écrivez une description de la macro, par exemple, Saisir l'adresse de l'entreprise.

  6. Pour lancer l'enregistrement, cliquez sur OK. Le message Enregistrement s'affiche dans la barre d'état et la barre d'outils Arrêt de l'enregistrement apparaît dans Excel.

    Barre d'outils Arrêt de l'enregistrement

    Figure 3. Barre d'outils Arrêt de l'enregistrement

  7. Cliquez sur la cellule A1, puis saisissez Les Comptoirs. Dans la cellule A2, saisissez 1, rue du monde. Et dans A3, saisissez 75000 Paris.

  8. Cliquez sur le bouton Arrêter l'enregistrement.

  9. Pour tester cette nouvelle macro, effacez la feuille de calcul et appuyez sur Ctrl+Maj+A. Excel exécute la macro et remplit la feuille de calcul en répétant les étapes enregistrées.

Sécurité

Au démarrage, Excel vérifie si des macros sont déjà enregistrées. C'est pourquoi la boîte de dialogue suivante peut s'afficher lorsque vous lancez Excel :

Boîte de dialogue Sécurité des macros

Figure 4. Boîte de dialogue Sécurité des macros

Lorsque cette boîte de dialogue apparaît, cliquez sur le bouton Activer les macros. Excel exécute ainsi les macros que vous avez créées. Bien que cela ne soit pas recommandé en condition réelles, vous pouvez choisir de ne pas afficher cette boîte de dialogue en réduisant le niveau de sécurité de vos macros. Pour cela, dans le menu Outils, sélectionnez Macros, puis Sécurité. Sélectionnez l'option de sécurité Moyen (ou Bas) et validez par OK.

Important   En réduisant le niveau de sécurité des macros, vous n'êtes plus protégé contre les macros dangereuses. N'utilisez ce paramètre que si un antivirus est installé ou que si vous avez vérifié la sécurité des documents que vous ouvrez.

Exercice pratique n° 1 (Pour les réponses, consultez l'Annexe A)

Modifiez votre macro MyMacro dans Visual Basic Editor et adaptez le code pour qu'il affiche votre nom dans la cellule A2.

Leçon 2 : Concepts de programmation : Sub. . . End Sub et procédures

Maintenant que vous vous êtes essayé à l'écriture de code, il est temps de comprendre comment cela fonctionne. Analysons le code que vous avez écrit :

Sub MyMacro()
 Dim wrkSheet As Worksheet
 
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("B1").Value = "My New Sheet"
End Sub

Les mots clés Sub...End Sub débutent et terminent une macro, en respectant le modèle suivant :

Sub AnyNameHere()
 Some of that cool object model code here
End Sub

AnyNameHere est le nom de la macro ou de la procédure. Une procédure est un ensemble restreint d'instructions de code créées pour exécuter une action quelconque. MyMacro est un exemple de procédure. Toutefois, une procédure ne doit pas nécessairement être une macro. Vous pouvez créer une procédure et l'appeler ensuite à partir d'une autre procédure. Par exemple, dans votre feuille de calcul Excel d'exercice, créez une autre macro appelée MyOtherMacro et ajoutez le code suivant :

Sub MyOtherMacro()
 MyMacro
End Sub

Si vous exécutez MyOtherMacro, la procédure MyMacro s'exécute et crée une nouvelle feuille :

Sub MyMacro()
 Dim wrkSheet As Worksheet
 
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("B1").Value = "My New Sheet"
End Sub

À quoi cela sert-il ? En créant des procédures séparées, il devient plus facile d'organiser votre code et de réaliser des procédures standard. Supposons, par exemple, que vous souhaitiez créer et afficher trois feuilles de calcul différentes. Changez alors le code de MyOtherMacro comme suit :

Sub MyOtherMacro()
 MyMacro
 MyMacro
 MyMacro
End Sub
Exercice pratique n° 2

Ajoutez une ligne supplémentaire au code de MyOtherMacro qui permettra de créer une nouvelle feuille et d'insérer le message « C'est facile » dans la cellule C1.

Leçon 3 : Concepts de programmation : objets, méthodes et propriétés

Vous n'avez certainement pas pu passer à côté de la programmation orientée objet mania. Comme vous le savez, la programmation orientée objet est le concept clé derrière les langages C++ et C#. Mais ce que vous ignorez sans doute, c'est que ces deux premières leçons ont déjà fait de vous un programmeur orienté objet !

Exactement. Le modèle objet Excel utilise la programmation orientée objet. Et heureusement, comprendre et utiliser un modèle objet Excel ne vous demande aucun effort de formation supplémentaire. Il vous suffit juste de connaître et d'assimiler trois concepts :

Concept Description Exemple
Objet Une « chose » Feuille de calcul
Méthode Ce que peut faire une « chose » Ajouter une « chose »
Propriété Caractéristique d'une « chose » Nom

Vous pouvez classer tout ce qui vous entoure en objets, méthodes et propriétés. Par exemple, considérons qu'une voiture est un objet. Un objet Voiture dispose de méthodes ou de choses qu'il peut faire, comme Conduire, Démarrer, Tourner à gauche ou Tourner à droite. Un objet Voiture dispose également de propriétés qui le décrivent : sa couleur est rouge et le nombre de phares est deux.

Une voiture

Figure 5. Une voiture

Regardons de plus près le code que vous avez créé et identifions les objets, les méthodes et les propriétés :

Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("B1").Value = "My New Sheet"

Ce code contient trois objets. Le premier est wrkSheet, qui représente un objet Worksheet (Feuille de calcul). Le second est l'objet ActiveWorkbook, qui représente le classeur actif. Le troisième est l'objet Range, qui représente une plage de cellules de la feuille de calcul. Ces objets peuvent facilement être comparés à des « choses ». En fait, le modèle objet Excel correspond à une simple liste d'objets utilisables pour la programmation Excel.

À chaque première utilisation d'un objet, commencez par écrire le mot clé Set. Étant donné que les objets occupent beaucoup de mémoire dans l'ordinateur, le mot clé Set alloue l'espace mémoire requis pour l'objet.

Vous pouvez nommer les objets à votre guise. Dans l'exemple ci-dessus, j'ai nommé mon objet Worksheet wrkSheet , mais vous pouvez bien entendu changer de nom. Excel a ensuite créé l'objet ThisWorkbook. Cet objet apparaît maintenant dans la liste de la fenêtre Projet, sous Microsoft Excel Objets.

La macro MyMacro contient la méthode Add. À chaque objet est associée une méthode. Dans notre exemple, la méthode Add est associée à l'objet wrkSheet. Pour utiliser une méthode, il suffit d'ajouter un point entre l'objet et la méthode. Par exemple, Worksheets.Add. Comme décrit précédemment, une méthode est « ce qu'une chose peut faire ». Dans notre cas, une nouvelle feuille de calcul est ajoutée à l'objet ActiveWorkbook.

Le code de MyFirstMacro contient la propriété Value. Comme pour la méthode, une propriété est toujours associée à un objet. Ici, Value est associée à l'objet Range. Pour utiliser une propriété, il suffit d'ajouter un point entre l'objet et la propriété. Par exemple, Range.RowHeight.

Là encore, nous pouvons considérer la propriété comme étant la « caractéristique d'une chose ». Par exemple, ColumnWidth (largeur de colonne) est la caractéristique d'un élément de la plage. Ou encore : Name (nom) est une autre caractéristique de l'objet Range.

Une dernière chose à savoir : chaque objet correspond à un type d'objet spécifique, qui dispose de ses propres méthodes et propriétés. Dans notre exemple, wrkSheet représente un objet Worksheet. Les feuilles de calcul disposent de méthodes, telles que Visible, et de propriétés, telles que Count, non nécessairement partagées par les autres types d'objet. Réciproquement, les autres types d'objet peuvent avoir des méthodes ou des propriétés non partagées par l'objet Worksheet. Prenons l'instruction suivante :

Worksheet.Value = "Hello"

Cette instruction n'est pas valide, car le type d'objet Worksheet ne prend pas en charge la propriété Value.

Exercice pratique n° 3

Étudiez l'exemple suivant et identifiez les objets, les méthodes et les propriétés. Conseil : il en existe trois de chaque :

Set PetStore = ShoppingMall.GetStore(aPetStore)
PetStore.OpeningTime = 9 AM
Set Dog = PetStore.GetPet(aDog)
Dog.Breed = "Cocker Spaniel"
Dog.Color = "Blond"
Dog.WagTail

Leçon 4 : Application concrète n° 1

Imaginons que votre responsable souhaite distribuer une feuille de présence quotidienne à tous les membres de votre équipe. Elle vous a donc chargé de mettre au point un programme qui créerait un modèle Excel simple qu'elle pourrait ensuite envoyer électroniquement à ses employés.

Faites appel à vos nouvelles connaissances et lancez-vous dans la création d'une macro :

Pour créer la macro TimeSheet :
  1. Créez un module appelé TimeSheet (Feuille de présence). Dans le menu Outils d'Excel, sélectionnez Macro, puis Macros. Saisissez TimeSheets et cliquez sur Créer. Visual Basic Editor s'ouvre avec une nouvelle macro TimeSheet prête à être écrite.
  2. Dans la fenêtre Propriétés, double-cliquez sur (Name) et saisissez TimeSheets.
  3. Dans la fenêtre Code, saisissez les lignes de code suivantes :
Sub TimeSheet()
 Dim wrkSheet As Worksheet
 
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("A1").Value = "Department"
 Range("B2").Value = "Employees Name"
 Range("D2").Value = "Day of the Week
 Range("B4").Value = "Regular Hours
 Range("B5").Value = "Sick Time
 Range("B6").Value = "Vacation Hours
 Range("B7").Value = "Overtime Hours
 Range("B9").Value = "Totals
End Sub
  1. Cliquez sur Enregistrer, attribuez un nom à votre fichier exemple, comme Exemple2, puis cliquez sur Enregistrer. Le fichier Excel est alors enregistré.
  2. Exécutez votre macro pour la voir en action. Elle crée un modèle de feuille de présence que vous pouvez ensuite envoyer à chaque employé, via la messagerie électronique.
  3. Et voilà, c'est terminé. Cette macro a été créée sans avoir introduit de nouveaux objets ou commandes. Nous nous sommes contentés de développer les concepts des précédents exemples.

Utilisation des événements

Vous disposez désormais d'une macro qui crée un modèle de feuille de présence dont vous pouvez vous servir pour imprimer les feuilles de chaque employé. Néanmoins, pour qu'elle fonctionne, vous devez la lancer manuellement. Supposons maintenant que, dès que vous arrivez au bureau le matin, vous commencez par démarrer Excel. Et que la dernière chose que vous faites avant de quitter le bureau est de fermer Excel. Ne serait-il pas plus pratique que la macro soit exécutée automatiquement au démarrage d'Excel ? Vous pourriez alors créer le modèle de feuille de présence quotidien sans remuer le petit doigt !

L'objet event vous le permet. Un événement est déclenché à chaque action lancée pour un objet. Par exemple, lorsque vous cliquez sur le bouton d'un formulaire, un événement Click se produit pour l'objet Bouton. Lorsque vous démarrez Excel, un événement Auto_Open se produit.

Mais revenons à notre comparaison automobile pour bien saisir de quoi il s'agit. Vous souhaitez que l'objet Voiture fasse quelque chose dès que quelqu'un insère la clé de contact. Vous devez donc utiliser un événement Voiture qui s'appellerait ChauffeurInsèreCléContact. Ensuite, lorsque cet événement est appelé, vous voulez que le moteur s'allume et que la voiture soit prête à partir. Bien entendu, le moteur peut répondre à plusieurs événements possibles. Ces événements seraient, entre autres, tourner la clé de contact, passer une vitesse, appuyer sur la pédale d'accélérateur et appuyer sur la pédale de frein. Et la voiture réagira différemment selon l'événement déclenché.

Pour exécuter votre macro au démarrage d'Excel :
  1. Démarrez Visual Basic Editor (s'il n'a pas encore été ouvert) dans Excel. Conseil : Vous pouvez appuyer sur les touches ALT + F11.

  2. Cliquez sur le SIGNE PLUS (+) en regard de Microsoft Excel Objet, dans la fenêtre Explorateur de projets. L'élément intitulé « ThisWorkbook » doit apparaître dans la liste.

  3. Double-cliquez sur « ThisWorkbook ». La fenêtre de code apparaît avec le titre « ThisWorkbook ».

  4. Vous remarquez que cette fenêtre comporte, en haut, deux listes déroulantes. La première liste, appelée Objet, inclut tous les objets associés à ThisWorkbook. Dans la liste Objet, cliquez sur Workbook.

    Visual Basic Editor crée alors la procédure Sub Workbook_Open à votre place. Il s'agit du conteneur de l'événement Open qui s'exécute automatiquement au démarrage d'Excel.

  5. Pour appeler votre macro, saisissez son nom dans la procédure. Par exemple :

    Private Sub Workbook_Open()... 
    TimeSheet
    End Sub
    

Et voilà, c'est terminé. Enregistrez votre macro, fermez Visual Basic Editor, redémarrez Excel, puis ouvrez votre fichier exemple pour vérifier que la macro a bien fonctionné.

Exercice pratique n° 4

En utilisant la macro qui contient le modèle de feuille de présence hebdomadaire (en supposant que vous quittiez Excel uniquement à la fin de la journée), programmez votre macro de façon à ce qu'elle soit exécutée à chaque fermeture d'Excel.

Leçon 5 : Création de vos propres boîtes de dialogue

Abordons maintenant la partie la plus amusante de VBA, les formulaires. Un formulaire est un objet de type boîte de dialogue que vous créez et concevez dans VBA. Vous avez la possibilité d'y ajouter des cases à cocher, du texte, des images et plein d'autres fonctions sans écrire une seule ligne de code.

À quoi servent les formulaires ? Dans certains cas, votre macro a besoin de communiquer des informations aux utilisateurs ou d'en obtenir de leur part. Notamment, lorsque vous souhaitez afficher une boîte de dialogue de progression au cours de l'exécution de votre macro ou lorsque vous souhaitez que les utilisateurs choisissent des options spécifiques avant de lancer la macro.

Pour étayer ce concept, revenons à la macro TimeSheet que vous avez créée à la Leçon 4. Cette macro TimeSheet crée un modèle de feuille de présence chaque fois que vous ouvrez votre fichier exemple. Mais que se passera-t-il si vous démarrez Excel à un autre moment de la journée ? Ou si vous revenez travailler le week-end et avez besoin d'utiliser Excel ? Il est peu probable que créer un modèle de feuille de présence plusieurs fois par jour vous amuse longtemps... La solution consiste, en fait, à proposer une option pour créer le modèle à chaque démarrage d'Excel.

Pour créer une boîte de dialogue :
  1. Dans le menu Outils d'Excel, sélectionnez Macro, puis Macros. Écrivons maintenant notre macro.
  2. Saisissez « TimeSheetPrompt » et cliquez sur Créer. Visual Basic Editor s'ouvre.
  3. Dans le menu Insertion, cliquez sur UserForm.

Formulaire UserForm vide

Figure 6. Formulaire UserForm vide

Votre formulaire apparaît avec la boîte à outils Contrôles. Utilisez ce formulaire pour concevoir la boîte de dialogue à laquelle l'utilisateur devra répondre.

  1. Cliquez sur le formulaire pour le sélectionner. Dans la fenêtre Propriétés, changez la propriété (Name) en « PromptDialog ». Appuyez sur Entrée.

  2. Changez ensuite la propriété Caption en « Feuilles de présence pour vos collègues ? ». Appuyez sur Entrée. Le titre de votre formulaire change également pour refléter ce que vous venez d'entrer.

  3. Pointez sur les différents contrôles utilisateur de la boîte à outils pour afficher les infos-bulles et obtenir la description de chaque contrôle.

    Mais avant de continuer, récapitulons ce dont nous avons besoin pour notre macro TimeSheetPrompt. Nous voulons offrir le choix à l'utilisateur d'accepter ou de refuser la création de la feuille de présence. Il suffit simplement d'ajouter un texte explicatif et deux boutons : « Créer feuille de présence » et « Ne pas créer feuille de présence ».

  4. Dans la boîte à outils, cliquez sur Intitulé (élément A).

  5. Dans la fenêtre PromptDialog, cliquez et faites glisser la souris pour sélectionner la zone où le texte explicatif doit apparaître. Conseil : Vous avez toujours la possibilité de déplacer ou de redimensionner votre sélection après l'avoir créée.

    Remarque   L'intitulé que vous venez de créer est un objet. Des méthodes et des propriétés lui sont donc associées, comme pour une feuille de calcul ou un bouton.

  6. Dans la fenêtre Propriétés, vous devez voir apparaître une liste des propriétés disponibles pour l'intitulé, commençant par (Name), Accelerator et AutoSize.

  7. Cliquez sur Caption et saisissez une nouvelle valeur pour la propriété Caption, par exemple, « Souhaitez-vous créer une feuille de présence ? », puis appuyez sur Entrée. La fenêtre Module actualise l'intitulé pour refléter ce que vous avez entré.

    Il vous reste maintenant à créer vos deux boutons.

  8. Cliquez sur le formulaire pour faire réapparaître la boîte à outils.

  9. Cliquez sur le bouton Bouton de commande (rectangle vide).

  10. Dans la fenêtre Feuilles de présence pour vos collègues ?, cliquez et faites glisser la souris pour sélectionner la zone où le texte explicatif doit apparaître.

  11. Pour créer le second bouton, cliquez sur Bouton de commande dans la boîte à outils et faites glisser un autre bouton sur le formulaire.

  12. Cliquez sur le premier bouton et définissez les propriétés suivantes : Définissez la propriété (Name) sur « Yes » et la propriété Caption sur « Créer feuille de présence ».

  13. Cliquez sur le second bouton et définissez les propriétés suivantes : Définissez la propriété (Name) sur « No » et la propriété Caption sur « Ne pas créer feuille de présence ».

Boîte de dialogue terminée

Figure 7. Boîte de dialogue terminée

Exécution de votre boîte de dialogue

Vous pouvez être fier de votre boîte de dialogue, même si elle ne sait toujours rien faire. Pour la rendre opérationnelle, vous devez ajouter quatre lignes de code. Le seul hic, c'est que ces lignes doivent apparaître à trois endroits différents. Voici comment procéder :

Nous devons tout d'abord faire en sorte que la boîte de dialogue apparaisse lorsque l'utilisateur ouvre Excel. Dans la fenêtre Projet de ThisWorkbook, sous Microsoft Excel Objets, double-cliquez sur ThisWorkbook.

Allez dans l'événement Workbook_Open et saisissez la ligne « PromptDialog.Show ». Le code doit ressembler à ceci :

Private Sub Workbook_Open()... 
 PromptDialog.Show
End Sub

Remarque   PromptDialog est un objet. Show est une méthode de cet objet.

Fermez la fenêtre de code ThisWorkbook. Ouvrez le formulaire PromptDialog, en double-cliquant sur PromptDialog sous Feuilles dans la fenêtre Explorateur de projets.

Ensuite, nous voulons que la macro exécute des tâches spécifiques en fonction du bouton sur lequel l'utilisateur appuie. Double-cliquez sur le bouton Créer feuille de présence.

La fenêtre Code s'ouvre pour la macro PromptDialog. VBA crée un événement qui est appelé lorsque l'utilisateur appuie sur le bouton Créer feuille de présence. À cet instant, nous voulons que la macro exécute deux tâches. Elle doit créer la feuille de présence et masquer la boîte de dialogue. Nous reprendrons ici la macro TimeSheet que vous avez dû créer à la Leçon 4. Le code doit ressembler à ceci :

Private Sub Yes_Click()
 TimeSheet
 PromptDialog.Hide
End Sub

Remarque   PromptDialog est le nom que vous avez attribué à l'objet de la boîte de dialogue dans la fenêtre Propriétés. Hide est une méthode de cet objet.

Fermez la fenêtre Code. Double-cliquez ensuite sur le bouton Ne pas créer feuille de présence. Dans cette procédure, vous souhaitez uniquement que la macro masque la boîte de dialogue. Par exemple :

Private Sub No_Click()
 PromptDialog.Hide
End Sub

Et voilà, c'est terminé. Enregistrez vos modifications, redémarrez Excel, puis ouvrez votre fichier exemple pour relancer la macro et voir apparaître la boîte de dialogue.

Leçon 6 : Concept de programmation : collections

Ces cinq leçons vous ont permis de découvrir les objets, les propriétés, les méthodes et les événements. Il vous reste encore une dernière catégorie à maîtriser pour pouvoir utiliser le modèle objet Excel : les collections.

Une collection est un type d'objet particulier, puisqu'il s'agit, en fait, d'un groupe d'objets. Par exemple, si Voiture est un objet, Voitures est une collection, à savoir une collection de voitures.

Une collection peut également être une propriété d'un autre objet. Pour continuer notre analogie automobile, Portières peut être une propriété de l'objet Voiture et une collection d'objets Portière. Nous pouvons donc comprendre la relation ainsi :

La collection Voitures est une collection d'objets Voiture. Chaque objet Voiture a une propriété appelée Portières. La collection Portières est une collection d'objets Portière.

Les collections dans Excel

Le modèle objet Excel contient plusieurs types de collections. Voici un exemple de collection pris dans le tout premier exemple de ce guide :

Set wrkSheet = ActiveWorkbook.Worksheets.Add

Worksheets est une collection d'objets Worksheet. Worksheets est également une propriété de l'objet ActiveWorkbook. Les avantages d'une collection sont très faciles à démontrer. Un classeur peut contenir plusieurs feuilles de calcul. La collection Worksheets nous fournit donc un moyen efficace pour gérer ces feuilles en toute simplicité.

Les autres collections d'Excel sont, notamment :

Sheets   Collection de toutes les feuilles du classeur parent.

Workbooks   Collection de tous les classeurs ouverts.

Charts   Collection des feuilles de graphique d'un classeur.

Méthodes et propriétés des collections

Toutes les collections disposent de méthodes et de propriétés qui vous permettent d'accéder à chacun des objets d'une collection. Nous détaillerons, ici, trois des principales méthodes et propriétés.

Propriété Count   Cette propriété indique le nombre d'objets contenus dans une collection. Par exemple :

Dim numberOfWorksheets
numberOfWorksheets = ActiveWorkbook.Worksheets.Count

Dans cet exemple, numberOfWorksheets est une variable. Une variable est ce que l'on définit pour enregistrer des informations et les utiliser ultérieurement. Dans cet exemple, la variable numberOfWorksheets équivaut au nombre d'objets Worksheet contenus dans l'objet ActiveWorkbook.

Avant d'utiliser une variable, nous devons la définir via le mot clé Dim. Le nom des variables est entièrement libre. Par exemple :

Dim myDogBitMe
myDogBitMe = ActiveWorkbook.Worksheets.Count

Remarque   Une collection peut être vide et, dans ce cas, la propriété Count est nulle.

Méthode Item   Cette méthode permet d'accéder à un objet spécifique dans une collection. Par exemple :

Set myWorksheet = ActiveWorkbook.Worksheets.Item(2)

Le nombre entre parenthèses renvoie à la feuille de calcul à laquelle le code doit accéder. Dans cet exemple, le second objet Worksheet de la collection Worksheets est affecté à la variable myWorksheet.

Vous avez également la possibilité d'utiliser une variable entre parenthèses. Par exemple :

Dim numberOfWorksheets
numberOfWorksheets = ActiveWorkbook.Worksheets.Count
Set theLastWorksheet = ActiveWorkbook.Worksheets.Item(numberOfWorksheets)

Commencez par définir la variable numberOfWorksheets qui correspond au nombre d'objets Worksheet contenus dans la collection Worksheets. Accédez ensuite à la dernière feuille de calcul. Par exemple, si le classeur contient cinq feuilles, vous pouvez définir le dernier élément sur le nombre 5. Traduit en code, cela donne :

ActiveWorkbook.Worksheets.Item(5)

Méthode Add   Cette méthode vous permet d'ajouter de nouveaux objets dans une collection. Par exemple :

Set anotherWorksheet = ActiveWorkbook.Worksheets.Add("Sheet6")

L'utilisation de la méthode Add varie selon le type de collection auquel vous ajoutez un élément. Généralement, comme dans l'exemple précédent, vous devez attribuer un nom au nouvel objet, tel que Sheet6.

Un dernier détail à savoir sur les variables : étant donné qu'une variable enregistre des informations, sa valeur change uniquement si vous la modifiez. Pour plus de clarté, comparons la variable à une cassette audio :

Imaginons que nous enregistrons, sur une cassette intitulée TopChansons2003, toutes les chansons en vogue aujourd'hui. Cinq années plus tard, nous décidons de réécouter cette cassette. Et qu'entendons-nous alors ? Ce ne sont plus les chansons du top d'aujourd'hui, mais celles qui ont fait fureur il y a cinq ans ! Ce concept est fondamental et vous pouvez l'appliquer pour résoudre l'Exercice pratique n° 5.

Exercice pratique n° 5

Étudiez le code Visual Basic ci-dessous et répondez aux questions qui suivent. Supposez que, au début, la collection Papers est vide et que sa propriété Count est égale à zéro. Conseil   Analysez le code ligne par ligne et observez comment évoluent la variable numberOfPapers et les objets dans la collection Papers.

Dim numberOfPapers
Set paper1 = MyDesk.Papers.Add("The Foofle Report")
Set paper2 = MyDesk.Papers.Add("The Mooble Report")
numberOfPapers= MyDesk.Papers.Count
Set paper3 = MyDesk.Papers.Add("The Garble Report")
Set paper4 = MyDesk.Papers.Item(currentNumber)
Set paper5 = MyDesk.Papers.Item(1)
Set paper6 = MyDesk.Papers.Item(currentNumber + 1)
  1. Quelle est la valeur de la variable numberOfPapers ?
  2. Quelle est la valeur de paper3 ?
  3. Quelle est la valeur de paper4 ?
  4. Quelle est la valeur de paper5 ?
  5. Quelle est la valeur de paper6 ?

Leçon 7 : Concept de programmation : If ceci, Then cela

Il peut parfois être utile de préciser quel code doit être exécuté selon les situations. Dans la macro TimeSheet, par exemple, la création d'une feuille de présence quotidienne est justifiée uniquement les jours de la semaine du lundi au vendredi. Ou alors, nous pouvons adapter la macro pour qu'elle s'exécute seulement pour certains utilisateurs ou pour un groupe spécifique d'utilisateurs.

Il est possible de créer des procédures qui répondent aux différentes situations via l'instruction de contrôle If...Then. L'instruction de contrôle If...Then constitue l'un des nombreux outils Visual Basic qui orientent la direction de votre code. Le format de l'instruction de contrôle If...Then se présente comme suit :

If <expression> Then
<code here>
End If

Dans ce code, <expression> correspond à quelque chose qui peut être soit Vrai, soit Faux. <code here> correspond au code qui est exécuté si <expression> est définie sur Vraie.

Le tableau ci-dessous fournit quelques exemples de <expression> :

Expression Description
Papers.Count = 3 Définie sur Vraie si trois objets Paper sont contenus dans la collection Papers.
numEmployees > 0 Définie sur Vraie si la variable numEmployees est supérieure à 0.
numEmployees <> 5 Définie sur Vraie si la variable numEmployees n'est pas égale à 5.

Les deux exemples suivants démontrent parfaitement comment utiliser l'instruction de contrôle If...Then :

Dim numberOfTimeSheets
numberOfWorksheets = ActiveWorkbook.Worksheets.Count
If numberOfTimeSheets > 0 Then
Set myWorksheet = ActiveWorkbook.Worksheets.Item(numberOfTimeSheets)
MsgBox "Le nom du dernier employé est " &amp;_
 myWorksheet.Name &amp; "."
End If
If numberOfTimeSheets = 0 Then
MsgBox "There are no time sheets in this workbook."
End If

Cet exemple affiche une boîte de dialogue qui indique à l'utilisateur, soit le nom inscrit sur la feuille de présence du dernier employé, soit qu'aucune feuille de présence n'est disponible dans ce classeur.

Remarque   MsgBox est une instruction Visual Basic utilisée pour afficher des messages simples. Cette instruction vous permet d'afficher une chaîne unique ou plusieurs chaînes reliées par le signe « & ». Dans l'exemple précédent, si le nom du dernier employé qui figure sur la feuille de présence est « Françoise Davieux », le message suivant apparaît pour l'utilisateur :

Message d'information

Figure 8. Message d'information

Exemple 2 If. . .Then : Si cette option est sélectionnée, alors. . .

Étudiez la boîte de dialogue suivante :

Boîte de dialogue avec option pour enregistrer la feuille de présence

Figure 9. Boîte de dialogue avec option pour enregistrer la feuille de présence

Lorsque l'utilisateur clique sur le bouton OK, la macro exécute un code différent selon si l'utilisateur a activé ou non la case intitulée « Non, l'enregistrer dans mon dossier Brouillons ». Si cette case n'est pas activée, la feuille de présence sera imprimée. Si elle est activée, elle est enregistrée et l'utilisateur pourra la terminer et l'imprimer ultérieurement.

Pour bien comprendre le fonctionnement, précisons tout d'abord qu'une case à cocher est un objet qui peut être créé directement dans un formulaire, comme pour le bouton ou l'intitulé créé à la Leçon 5. Elle dispose donc de propriétés. Et l'une de ses propriétés est appelée « Value ». La propriété Value peut être Vraie (case activée) ou Fausse (case désactivée).

Le code doit être exécuté lorsque l'utilisateur clique sur le bouton OK. Nous ajoutons donc le code suivant à l'événement Click du bouton OK. Dans cet exemple, PromptDialog est le nom du formulaire, OK est le nom du bouton et justSaveDraft est le nom de la case à cocher :

Private Sub OK_Click()
If PromptDialog.justSaveDraft.Value = True Then
 MyItem.Save
End If
If PromptDialog.justSaveDraft.Value = False Then
 MyItem.Print
End If
PromptDialog.Hide
End Sub

Si l'utilisateur décide d'activer la case, Excel enregistre la feuille de présence dans le dossier par défaut de l'utilisateur. S'il décide de ne pas activer la case, Excel imprime une version papier du message.

Exercice pratique n° 6

Améliorez la macro TimeSheet créée à la Leçon 5 en ajoutant un élément. Dans la boîte de dialogue, ajoutez une case à cocher permettant à l'utilisateur de modifier la feuille de présence avant de l'imprimer. Cette case à cocher peut inclure une légende, telle que « Modifier la feuille de présence avant de l'imprimer ». Lorsque cette case est activée, la macro ne doit pas imprimer la feuille de présence, mais la créer et l'afficher pour l'utilisateur.

Leçon 8 : Application concrète n° 2

Imaginons que vous êtes l'assistant du responsable des Ressources Humaines. L'une de vos fonctions consiste à imprimer les feuilles de présence pour différents groupes dans l'entreprise. Vous vous occupez plus particulièrement des feuilles de présence de deux groupes. Vous avez parfois besoin d'imprimer les feuilles d'un groupe, et parfois les feuilles de l'autre groupe uniquement.

Comment pouvez-vous simplifier cette tâche au maximum ? En utilisant le modèle objet Excel pour créer une boîte de dialogue dans laquelle vous pourrez spécifier le groupe pour lequel imprimer les feuilles de présence.

Étape 1 : Création de la boîte de dialogue

Nous devons commencer par créer une boîte de dialogue qui nous permettra de spécifier le groupe pour lequel imprimer les feuilles de présence et le nombre de feuilles par service :

  1. Dans Visual Basic Editor, cliquez sur UserForm dans le menu Insertion.

  2. Ajoutez un intitulé, deux cases à cocher et un bouton ; le formulaire doit alors ressembler à ceci :

    Boîte de dialogue avec deux options

    Figure 10. Boîte de dialogue avec deux options

    Rappelez-vous que la propriété Caption définit le texte qui s'affiche dans les cases à cocher par l'utilisateur.

  3. Pour les cases à cocher, les zones de texte, le bouton et le formulaire, spécifiez une description pour la propriété Name, de la façon suivante :

    Contrôle Nom
    Formulaire PrintTimesheets
    Bouton OK cmdOK
    Compteur copies Serv Ventes Sales
    Compteur copies Serv Marketing Mrktng
  4. Bonus : Spécifiez, pour chaque case à cocher et chaque zone de texte, la propriété ControlTipText pour inclure une description du contrôle. Par exemple, Saisissez le nombre de copies pour les zones de texte.

Étape 2 : Exécution de la boîte de dialogue

Pour rendre la boîte de dialogue opérationnelle, écrivez tout d'abord le code de l'événement qui se déclenche lorsque l'utilisateur clique sur le bouton OK ajouté à la boîte de dialogue.

Dans le formulaire Visual Basic Editor, double-cliquez sur le bouton OK. Ajoutez ensuite le code suivant à la procédure cmdOK_Click :

Private Sub cmdOK_Click()
 Set wrkSheet = ActiveWorkbook.Worksheets.Add

 If Sales Then
 Range("B1").Value = "Ventes"
 AddFields
 End If
 If Mrktng Then
 Range("B1").Value = "Marketing"
 AddFields
 End If
 
 PrintTimesheets.Hide
 
End Sub

Cette procédure d'événement commence par créer une nouvelle feuille de calcul dans le classeur actif. Testez-la ensuite pour vérifier si la zone de texte SalesCnt contient une valeur. Si oui, la macro affiche le nom du service dans la cellule B1. Appelez alors la sous-routine AddFields que nous aborderons bientôt.

Ajoutez ensuite la ligne suivante au-dessus de l'instruction Private Sub cmdOK_Click() :

Public wrkSheet As Worksheet

Cette instruction alloue de l'espace mémoire pour la feuille de calcul utilisée dans la procédure d'événement cmdOK_Click. Si nous ne désignons aucun espace mémoire, nous ne pourrons pas utiliser correctement la feuille de calcul dans notre code.

Étape 3 : Fin de l'écriture du code

Pour terminer, ajoutez la sous-routine suivante après l'instruction End Sub de la procédure d'événement cmdOK_Click. Cette procédure écrit les champs qui composent la feuille de présence :

Sub AddFields()
 Range("A1").Value = "Department:"
 Range("B2").Value = "Employees Name:"
 Range("D2").Value = "Day of the Week:"
 Range("B4").Value = "Regular Hours"
 Range("B5").Value = "Sick Time"
 Range("B6").Value = "Vacation Hours"
 Range("B7").Value = "Overtime Hours"
 Range("B9").Value = "Totals"
End Sub

Et ensuite ?

Grâce à cette introduction au modèle objet Excel, vous voilà prêt à créer vos propres solutions Excel personnalisées. Bien entendu, ce guide s'est contenté d'effleurer les fonctionnalités performantes offertes par le modèle objet Excel. Pour approfondir vos connaissances sur les collections, les objets, les méthodes et les événements qui sont à votre disposition, consultez l'Aide en ligne.

Pour utiliser l'Aide en ligne de Visual Basic for Applications, dans le menu Affichage de Microsoft Visual Basic Editor, cliquez sur Explorateur d'objets.

Explorateur d'objets

Figure 11. Explorateur d'objets

Pour afficher les outils spécifiques d'Excel, dans la liste déroulante Projet/bibliothèque, cliquez sur Excel. La liste des objets, collections, méthodes et propriétés propres à Excel s'affiche. Par exemple, dans la case Rechercher un texte, saisissez Worksheets, puis cliquez sur Rechercher (icône jumelles).

Les résultats de votre recherche s'affichent dans la fenêtre Résultats de la recherche. Lorsque vous cliquez sur un objet, la fenêtre met à jour la liste des objets et des méthodes pouvant s'appliquer à cet objet. Le dernier volet de la fenêtre affiche une aide contextuelle qui vous fournit des informations sur le membre sélectionné.

Cliquez sur l'objet Worksheets dans la fenêtre supérieure. Observez les membres qui s'affichent dans la fenêtre Membres de 'Worksheets'. Le symbole placé en regard de chaque membre spécifie son type, à savoir s'il s'agit d'une méthode ou d'une propriété.

Toutes les informations utiles sont fournies ici. L'aide contextuelle affichée dans le dernier volet inclut des liens qui vous permettent de naviguer rapidement parmi les rubriques associées. Vous pouvez, notamment, utilisez ces liens pour identifier les éléments ou les méthodes d'un objet spécifique. La majorité des fichiers de l'aide contextuelle incluent également des exemples instructifs que vous pourrez réexploiter dans votre propre code.

C'est ici que s'achève votre formation sur le modèle objet Excel. Bravo, vous voilà programmeur ! À vous de jouer maintenant pour dynamiser les procédures de votre entreprise avec le modèle objet Excel.

Annexe A : Réponses aux exercices pratiques

Exercice pratique n° 1

Remplacez le corps du message par votre nom.

Sub MyMacro()
 Dim wrkSheet As Worksheet
 
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("A2").Value = "<your name here>"
End Sub
Exercice pratique n° 2

Modifiez MyMacro via Visual Basic Editor et adaptez le code pour qu'il ressemble à ceci :

Sub MyMacro()
 Dim wrkSheet As Worksheet
 
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("B1").Value = "My New Sheet"
 Set wrkSheet = ActiveWorkbook.Worksheets.Add
 Range("C1").Value = "This is easy"
End Sub
Exercice pratique n° 3

Étudiez le code du modèle objet suivant et identifiez les objets, les méthodes et les propriétés. Il en existe trois de chaque :

Set PetStore = ShoppingMall.GetStore(aPetStore)
PetStore.OpeningTime = 9 AM
Set Dog = PetStore.GetPet(aDog)
Dog.Breed = "Cocker Spaniel"
Dog.Color = "Blond"
Dog.WagTail
Objets Méthodes Propriétés
ShoppingMall GetStore OpeningTime
PetStore GetPet  
Dog WagTail Color
Breed
Exercice pratique n° 4

Pour créer la macro qui contient le modèle de feuille de présence hebdomadaire, ajoutez le code comme suit :

Sub TimeSheet()

   Dim wrkSheet As Worksheet

   

   Set wrkSheet = ActiveWorkbook.Worksheets.Add

   Range("A1").Value = "Department"

   Range("B2").Value = "Employees Name"

   Range("C3").Value = "Monday"

   Range("D3").Value = "Tuesday"

   Range("E3").Value = "Wednesday"

   Range("F3").Value = "Thursday"

   Range("G3").Value = "Friday"

   Range("B4").Value = "Regular Hours"

   Range("B5").Value = "Sick Time"

   Range("B6").Value = "Vacation Hours"

   Range("B7").Value = "Overtime Hours"

   Range("B9").Value = "Totals"

End Sub

Ensuite, pour que ce code soit exécuté chaque fois que vous quittez Excel, vous devez appeler la macro TimeSheet pendant l'événement Deactivate de l'objet Worksheet. Conseil : Modifiez cet événement dans la fenêtre ThisWorkbook Module :

Private Sub Workbook_Deactivate()

   TimeSheet

End Sub

Exercice pratique n° 5

Étudiez le code Visual Basic ci-dessous et répondez aux questions qui suivent. Supposez que, au début, la collection Papers est vide et que sa propriété Count est égale à zéro. Conseil : Analysez le code ligne par ligne et observez comment évoluent la variable numberOfPapers et les objets dans la collection Papers.

Dim numberOfPapers
Set paper1 = MyDesk.Papers.Add("The Foofle Report")
Set paper2 = MyDesk.Papers.Add("The Mooble Report")
currentNumber = MyDesk.Papers.Count
Set paper3 = MyDesk.Papers.Add("The Garble Report")
Set paper4 = MyDesk.Papers.Item(currentNumber)
Set paper5 = MyDesk.Papers.Item(1)
Set paper6 = MyDesk.Papers.Item(currentNumber + 1)
  1. Quelle est la valeur de la variable currentNumber ?

    Réponse : 2

    Explication : Au moment où nous définissons la valeur de currentNumber, il existe seulement deux variables paper1 et paper2, dans la collection MyDesk.Papers.

  2. Quelle est la valeur de paper3 ?

    Réponse : The Garble Report

  3. Quelle est la valeur de paper4 ?

    Réponse : The Mooble Report

    Explication : Étant donné que currentNumber est égale à 2, paper4 est alors définie sur la deuxième variable paper dans la collection, à savoir The Mooble Report.

  4. Quelle est la valeur de paper5 ?

    Réponse : The Foofle Report

  5. Quelle est la valeur de paper6 ?

    The Garble Report

    Explication : Étant donné que (currentNumber + 1) est égale à 3, paper6 est alors définie sur la troisième variable paper dans la collection, à savoir The Garble Report.

Exercice pratique n° 6

Vous devez, tout d'abord, ajouter une case à cocher nommée « EditSheet » au formulaire PromptDialog.

Boîte de dialogue terminée

Figure 12. Boîte de dialogue terminée

Modifiez ensuite la macro Yes_Click qui permet de ne pas créer ni d'imprimer la feuille de présence. Nous devons lancer un test pour savoir si la case EditSheet a été activée ou non. Si elle a été activée, la macro doit créer la feuille de présence. Dans le cas contraire, la macro doit créer et imprimer la feuille de présence comme suit :

Private Sub Yes_Click()
 If EditSheet = True Then
 TimeSheet
 End If
 If EditSheet = False Then
 TimeSheet
 ActiveWorkbook.Worksheets.Item(ActiveWorkbook.Worksheets.Count).PrintOut
 PromptDialog.Hide
End Sub

Nous avons ajouté une instruction pour imprimer la dernière feuille de calcul qui correspond à la feuille de présence que nous venons de créer. Pour s'assurer qu'il s'agit bien de la dernière feuille, spécifiez-la dans la collection Worksheets.

Ainsi, lorsque l'utilisateur clique sur Create the time sheet avec la case à cocher activée, la feuille de présence est créée, mais pas imprimée.

Dernière mise à jour le vendredi 14 novembre 2003