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 :
- Démarrez Microsoft Office Excel 2003.
- Dans le menu Outils, sélectionnez Macro, puis Macros.
- Donnez un nom à votre macro. Conseil : Les espaces ne sont pas autorisées pour les noms de macros, vous devez donc taper MyMacro.
- Cliquez sur Créer.
Excel lance automatiquement Visual Basic Editor, comme illustré dans la capture d'écran ci-dessous :
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 :
Saisissons maintenant le code dans la routine
MyMacro
.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.
Tout d'abord, fermez Visual Basic Editor. Dans le menu Fichier, cliquez sur Fermer et retourner à Microsoft Excel.
Ensuite, dans le menu Outils d'Excel, sélectionnez Macro, puis Macros.
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.
Dans le menu Outils, sélectionnez Macro, puis Nouvelle macro. La boîte de dialogue Enregistrer une macro apparaît dans Excel.
Figure 2. Boîte de dialogue Enregistrer une macro
Dans la zone Nom de la macro, saisissez un nom de type AdresseEntreprise.
Dans la zone Touche de raccourci, saisissez une combinaison de touches pour exécuter la macro. Tapez, par exemple, A.
Dans la zone Enregistrer la macro dans, choisissez Ce classeur.
Dans la zone Description, écrivez une description de la macro, par exemple, Saisir l'adresse de l'entreprise.
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.
Figure 3. Barre d'outils Arrêt de l'enregistrement
Cliquez sur la cellule A1, puis saisissez Les Comptoirs. Dans la cellule A2, saisissez 1, rue du monde. Et dans A3, saisissez 75000 Paris.
Cliquez sur le bouton Arrêter l'enregistrement.
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 :
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.
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 :
- 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. - Dans la fenêtre Propriétés, double-cliquez sur (Name) et saisissez TimeSheets.
- 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
- Cliquez sur Enregistrer, attribuez un nom à votre fichier exemple, comme Exemple2, puis cliquez sur Enregistrer. Le fichier Excel est alors enregistré.
- 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.
- 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 :
Démarrez Visual Basic Editor (s'il n'a pas encore été ouvert) dans Excel. Conseil : Vous pouvez appuyer sur les touches ALT + F11.
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.
Double-cliquez sur « ThisWorkbook ». La fenêtre de code apparaît avec le titre « ThisWorkbook ».
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.
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 :
- Dans le menu Outils d'Excel, sélectionnez Macro, puis Macros. Écrivons maintenant notre macro.
- Saisissez « TimeSheetPrompt » et cliquez sur Créer. Visual Basic Editor s'ouvre.
- Dans le menu Insertion, cliquez sur UserForm.
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.
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.
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.
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 ».Dans la boîte à outils, cliquez sur Intitulé (élément A).
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.
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.
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.
Cliquez sur le formulaire pour faire réapparaître la boîte à outils.
Cliquez sur le bouton Bouton de commande (rectangle vide).
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.
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.
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 ».
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 ».
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)
- Quelle est la valeur de la variable numberOfPapers ?
- Quelle est la valeur de paper3 ?
- Quelle est la valeur de paper4 ?
- Quelle est la valeur de paper5 ?
- 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 " &_
myWorksheet.Name & "."
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 :
Figure 8. Message d'information
Exemple 2 If. . .Then : Si cette option est sélectionnée, alors. . .
Étudiez la boîte de dialogue suivante :
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 :
Dans Visual Basic Editor, cliquez sur UserForm dans le menu Insertion.
Ajoutez un intitulé, deux cases à cocher et un bouton ; le formulaire doit alors ressembler à ceci :
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.
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 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.
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)
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 variablespaper1
etpaper2
, dans la collection MyDesk.Papers.Quelle est la valeur de
paper3
?Réponse : The Garble Report
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.Quelle est la valeur de
paper5
?Réponse : The Foofle Report
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.
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