Pris en main avec VBA dans OfficeGetting started with VBA in Office

Êtes-vous confronté à un nettoyage répétitif de 50 tableaux dans Word ?Are you facing a repetitive clean up of fifty tables in Word? Souhaitez-vous inviter l’utilisateur saisir des données lorsqu’il ouvre un document spécifique ?Do you want a particular document to prompt the user for input when it opens? Rencontrez-vous des difficultés pour déterminer comment récupérer efficacement vos contacts à partir de Microsoft Outlook dans une feuille de calcul Microsoft Excel ?Are you having difficulty figuring out how to get your contacts from Microsoft Outlook into a Microsoft Excel spreadsheet efficiently?

Vous pouvez effectuer ces tâches, et bien plus encore, à l’aide de Visual Basic pour Applications (VBA) pour Office, —un langage de programmation simple mais puissant que vous pouvez utiliser pour étendre des applications Office.You can perform these tasks and accomplish a great deal more by using Visual Basic for Applications (VBA) for Office—a simple, but powerful programming language that you can use to extend Office applications.

Cet article est destiné aux utilisateurs Office expérimentés qui souhaitent en savoir plus sur VBA et sur la manière dont la programmation peut les aider à personnaliser Office.This article is for experienced Office users who want to learn about VBA and who want some insight into how programming can help them to customize Office.

La suite d’applications Office inclut un ensemble complet de fonctionnalités.The Office suite of applications has a rich set of features. Il existe plusieurs façons de créer, mettre en forme et manipuler des documents, courrier, bases de données, formulaires, feuilles de calcul et présentations.There are many different ways to author, format, and manipulate documents, email, databases, forms, spreadsheets, and presentations. La puissance de programmation VBA dans Office est que pratiquement chaque opération que vous pouvez effectuer avec une souris, clavier ou une boîte de dialogue peut également être automatisée à l’aide de VBA.The great power of VBA programming in Office is that nearly every operation that you can perform with a mouse, keyboard, or a dialog box can also be done by using VBA. De plus, si cette opération peut être effectuée une fois avec VBA, elle peut être répétée facilement une centaine de fois.Further, if it can be done once with VBA, it can be done just as easily a hundred times. (En effet, l’automatisation des tâches répétitives est une des utilisations les plus courantes de VBA dans Office.)(In fact, the automation of repetitive tasks is one of the most common uses of VBA in Office.)

Au-delà de la capacité de scripter VBA pour accélérer les tâches quotidiennes, vous pouvez utiliser VBA pour ajouter de nouvelles fonctionnalités pour les applications Office ou pour inviter et interagir avec l’utilisateur de vos documents d’une manière qui est spécifique aux besoins de votre entreprise.Beyond the power of scripting VBA to accelerate every-day tasks, you can use VBA to add new functionality to Office applications or to prompt and interact with the user of your documents in ways that are specific to your business needs. Par exemple, vous pouvez écrire du code VBA qui affiche un message qui rappelle aux utilisateurs d’enregistrer un document sur un lecteur réseau particulier la première fois qu’ils essaient de l’enregistrer.For example, you could write some VBA code that displays a pop up message that reminds users to save a document to a particular network drive the first time they try to save it.

Cet article décrit les raisons principales de tirer parti de la puissance de programmation VBA.This article explores some of the primary reasons to leverage the power of VBA programming. Il explore le langage VBA et les outils prêts à l’emploi que vous pouvez utiliser pour manipuler vos solutions.It explores the VBA language and the out-of-the-box tools that you can use to work with your solutions. Enfin, il inclut des conseils et méthodes pour éviter certaines frustrations et erreurs de programmation courantes.Finally, it includes some tips and ways to avoid some common programming frustrations and missteps.

Notes

Vous voulez développer des solutions qui étendent l’expérience Office sur plusieurs plateformes ?Interested in developing solutions that extend the Office experience across multiple platforms? Découvrez le nouveau modèle de compléments Office.Check out the new Office Add-ins model. Les compléments Office ont une faible taille par rapport aux compléments et solutions VSTO, et vous pouvez les créer à l’aide de la quasi-totalité des technologies de programmation Web, telles que HTML5, JavaScript, CSS3 et XML.Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Quand et pourquoi utiliser VBAWhen to use VBA and why

Il existe trois principales raisons d’utiliser la programmation VBA dans Office.There are several principal reasons to consider VBA programming in Office.

Automatisation et répétitionAutomation and repetition

VBA est efficace en ce qui concerne les solutions répétitives aux problèmes de mise en forme ou correction.VBA is effective and efficient when it comes to repetitive solutions to formatting or correction problems. Par exemple, avez-vous déjà modifié le style du paragraphe en haut de chaque page dans Word ?For example, have you ever changed the style of the paragraph at the top of each page in Word? Avez-vous déjà dû mettre en forme plusieurs tableaux collés à partir d’Excel dans un document Word ou un courrier Outlook ?Have you ever had to reformat multiple tables that were pasted from Excel into a Word document or an Outlook email? Avez-vous déjà dû apporter la même modification pour plusieurs contacts Outlook ?Have you ever had to make the same change in multiple Outlook contacts?

Si vous avez une modification que vous devez effectuer plus de dix ou vingt fois, cela peut valoir le coup de mettre en place une automatisation avec VBA.If you have a change that you have to make more than ten or twenty times, it may be worth automating it with VBA. S’il s’agit d’une modification que vous avez à faire des centaines de fois, cela vaut définitivement le coup.If it is a change that you have to do hundreds of times, it certainly is worth considering. N’importe quel changement de mise en forme ou modification que vous pouvez effectuer à la main peut être effectué dans VBA.Almost any formatting or editing change that you can do by hand, can be done in VBA.

Extensions de l’interaction utilisateurExtensions to user interaction

Il arrive parfois que l’on souhaite encourager ou forcer les utilisateurs à interagir avec l’application ou le document Office d’une manière particulière qui ne fait pas partie de l’application standard. There are times when you want to encourage or compel users to interact with the Office application or document in a particular way that is not part of the standard application. Par exemple, vous pourriez vouloir inviter les utilisateurs à effectuer une action spécifique lorsqu’ils ouvrent, enregistrent ou impriment un document.For example, you might want to prompt users to take some particular action when they open, save, or print a document.

Interaction entre les applications OfficeInteraction between Office applications

Vous voulez copier tous vos contacts à partir d’Outlook dans Word et mettre en forme d’une certaine manière ?Do you need to copy all of your contacts from Outlook to Word and then format them in some particular way? Ou vous devez déplacer des données à partir d’Excel vers un ensemble de diapositives PowerPoint ?Or, do you need to move data from Excel to a set of PowerPoint slides? Parfois un simple copier-coller ne fait pas ce que vous souhaitez faire, ou est trop lent.Sometimes simple copy and paste does not do what you want it to do, or it is too slow. Vous pouvez utiliser la programmation VBA pour interagir avec les détails de deux ou plusieurs applications Office en même temps, puis modifier le contenu dans une application en fonction du contenu dans une autre.You can use VBA programming to interact with the details of two or more Office applications at the same time and then modify the content in one application based on the content in another.

Procéder autrementDoing things another way

La programmation VBA est une solution puissante, mais n’est pas toujours une approche optimale.VBA programming is a powerful solution, but it is not always the optimal approach. Parfois, il vaut mieux utiliser d’autres méthodes pour atteindre vos objectifs.Sometimes it makes sense to use other ways to achieve your aims.

La question critique à se poser est s’il existe une méthode plus facile.The critical question to ask is whether there is an easier way. Avant de commencer un projet VBA, tenez compte des outils intégrés et des fonctionnalités standard.Before you begin a VBA project, consider the built-in tools and standard functionalities. Par exemple, si vous avez une modification qui prend du temps ou une tâche de mise en page, vous pouvez utiliser des styles ou des touches d’accès rapide pour résoudre le problème.For example, if you have a time-consuming editing or layout task, consider using styles or accelerator keys to solve the problem. Pouvez-vous effectuer une fois la tâche, puis utilisez CTRL + Y (Rétablir) pour la répéter ?Can you perform the task once and then use CTRL+Y (Redo) to repeat it? Pouvez-vous créer un nouveau document avec le bon modèle ou au bon format puis copier le contenu dans ce nouveau document ?Can you create a new document with the correct format or template, and then copy the content into that new document?

Les applications Office sont puissantes ; la solution dont vous avez besoin existe déjà peut-être.Office applications are powerful; the solution that you need may already be there. Prenez le temps d’en savoir plus sur Office avant de vous lancer dans la programmation.Take some time to learn more about Office before you jump into programming.

Avant de commencer un projet VBA, assurez-vous que vous avez le temps de travailler avec VBA.Before you begin a VBA project, ensure that you have the time to work with VBA. La programmation nécessite de la concentration et peut être imprévisible.Programming requires focus and can be unpredictable. En particulier en tant que débutant, ne vous tournez pas vers la programmation, sauf si vous disposez de temps pour l’utiliser avec soin.Especially as a beginner, never turn to programming unless you have time to work carefully. Essayez d’écrire un « script rapide » pour résoudre un problème lorsqu’une date d’échéance approche peut entraîner une situation très stressante.Trying to write a "quick script" to solve a problem when a deadline looms can result in a very stressful situation. Si vous êtes pressé, vous devriez utiliser des méthodes conventionnelles, même si elles sont monotones et répétitives.If you are in a rush, you might want to use conventional methods, even if they are monotonous and repetitive.

Programmation VBA 101VBA Programming 101

Utilisation de code pour faire exécuter des tâches par des applicationsUsing code to make applications do things

Vous pourriez penser que l’écriture de code est abstraite ou difficile, mais les principes de base s’inspirent du raisonnement utilisé pour accomplir vos tâches quotidiennes et sont tout à fait accessibles.You might think that writing code is mysterious or difficult, but the basic principles use every-day reasoning and are quite accessible. Les applications Microsoft Office permettent de montrer des éléments, appelés objets, qui peuvent recevoir des instructions. Ces éléments peuvent être comparés aux touches d’un téléphone grâce auxquelles vous pouvez interagir avec l’appareil.Microsoft Office applications are created in such a way that they expose things called objects that can receive instructions, in much the same way that a phone is designed with buttons that you use to interact with the phone. Lorsque vous appuyez sur un bouton, le téléphone reconnaît l’instruction et inclut le numéro correspondant dans l’ordre que vous composez.When you press a button, the phone recognizes the instruction and includes the corresponding number in the sequence that you are dialing. En programmation, vous interagissez avec l’application en envoyant des instructions vers les différents objets de l’application.In programming, you interact with the application by sending instructions to various objects in the application. Ces objets sont vastes, mais ont leurs limites.These objects are expansive, but they have their limits. Ils peuvent uniquement faire ce pour quoi ils sont conçus, et feront seulement ce que vous leur apprenez à faire.They can only do what they are designed to do, and they will only do what you instruct them to do.

Par exemple, imaginez l’utilisateur qui ouvre un document dans Word, effectue quelques modifications, enregistre le document et le ferme.For example, consider the user who opens a document in Word, makes a few changes, saves the document, and then closes it. Dans le monde de programmation VBA, Word expose un objet Document.In the world of VBA programming, Word exposes a Document object. En utilisant le code VBA, vous pouvez demander à l’objet Document d’effectuer des actions telles qu’Ouvrir, Enregistrer, ou Fermer.By using VBA code, you can instruct the Document object to do things such as Open, Save, or Close.

La section suivante traite de la manière dont les objets sont organisés et décrits.The following section discusses how objects are organized and described.

Le modèle objetThe Object Model

Les développeurs organisent les objets de programmation selon une hiérarchie, qui est appelée modèle objet de l’application.Developers organize programming objects in a hierarchy, and that hierarchy is called the object model of the application. Word, par exemple, comporte un objet Application de niveau supérieur qui contient un objet Document.Word, for example, has a top-level Application object that contains a Document object. L’objet Document contient des objets Paragraphe et ainsi de suite.The Document object contains Paragraph objects and so on. Les modèles objet reflètent à peu près ce que vous voyez dans l’interface utilisateur.Object models roughly mirror what you see in the user interface. Il s’agit d’une carte conceptuelle de l’application et de ses capacités.They are a conceptual map of the application and its capabilities.

La définition d’un objet est appelée une classe, ce qui explique que vous verrez peut-être ces deux expressions utilisées indifféremment.The definition of an object is called a class, so you might see these two terms used interchangeably. D’un point de vue technique, une classe est la description ou le modèle utilisé pour créer, ou instancier, un objet.Technically, a class is the description or template that is used to create, or instantiate, an object.

Une fois qu’un objet existe, vous pouvez le manipuler en définissant ses propriétés et en dénommant ses méthodes.Once an object exists, you can manipulate it by setting its properties and calling its methods. Si vous pensez à l’objet sous la forme d’un nom, les propriétés sont alors les adjectifs décrivant le nom, et les méthodes sont les verbes qui animent le nom.If you think of the object as a noun, the properties are the adjectives that describe the noun and the methods are the verbs that animate the noun. La modification d’une propriété altère la qualité de l’apparence ou le comportement de l’objet.Changing a property changes some quality of appearance or behavior of the object. L’appel à l’une des méthodes d’objet conduit l’objet à effectuer une action.Calling one of the object methods causes the object to perform some action.

Le code VBA dans cet article s’exécute par rapport à une application Office ouverte où bon nombre d’objets que le code manipule sont déjà opérationnels ; par exemple, l’Application elle-même, la feuille de calcul dans Excel, le Document dans Word, la Présentation dans PowerPoint, l’Explorateur et les Objets de Dossier dans Outlook.The VBA code in this article runs against an open Office application where many of the objects that the code manipulates are already up and running; for example, the Application itself, the Worksheet in Excel, the Document in Word, the Presentation in PowerPoint, the Explorer and Folder objects in Outlook. Une fois que vous connaissez la disposition du modèle d’objet de base et les propriétés principales de l’Application qui donnent accès à son état actuel, vous pouvez commencer à étendre et manipuler cette application Office avec VBA dans Office.Once you know the basic layout of the object model and some key properties of the Application that give access to its current state, you can start to extend and manipulate that Office application with VBA in Office.

MéthodesMethods

Dans Word, par exemple, vous pouvez modifier les propriétés et les méthodes du document en cours d’appel à l’aide de la propriété ActiveDocument de l’objet Application.In Word, for example, you can change the properties and invoke the methods of the current Word document by using the ActiveDocument property of the Application object. Cette propriété ActiveDocument renvoie une référence à l’objet Document qui est actuellement actif dans l’application Word.This ActiveDocument property returns a reference to the Document object that is currently active in the Word application. « Renvoie une référence à » signifie « vous donne accès à. »"Returns a reference to" means "gives you access to."

Le code suivant effectue exactement ce qu’il dit ; c’est-à-dire enregistre le document actif dans l’application.The following code does exactly what it says; that is, it saves the active document in the application.

Application.ActiveDocument.Save

Lire le code de gauche à droite, « Dans cette Application, avec le Document référencé par ActiveDocument, appelez la méthode Enregistrer. »Read the code from left to right, "In this Application, with the Document referenced by ActiveDocument, invoke the Save method." N’oubliez pas que la méthode la plus simple est Enregistrer. Cela ne nécessite aucune instruction détaillée de votre part.Be aware that Save is the simplest form of method; it does not require any detailed instructions from you. Vous donnez l’instruction à un objet Document d’Enregistrer, aucune autre entrée n’étant requise de votre part.You instruct a Document object to Save and it does not require any more input from you.

Si une méthode requiert plus d’informations, celles-ci sont appelées paramètres.If a method requires more information, those details are called parameters. Le code suivant exécute la méthode SaveAs, ce qui nécessite un nouveau nom de fichier.The following code runs the SaveAs method, which requires a new name for the file.

Application.ActiveDocument.SaveAs ("New Document Name.docx")

Les valeurs figurant entre parenthèses après un nom de méthode sont les paramètres.Values listed in parentheses after a method name are the parameters. Dans ce cas, le nouveau nom de fichier est un paramètre pour la méthode SaveAs.Here, the new name for the file is a parameter for the SaveAs method.

PropriétésProperties

On utilise la même syntaxe pour définir une propriété et pour la lire. You use the same syntax to set a property that you use to read a property. Le code suivant exécute une méthode pour sélectionner la cellule A1 dans Excel, puis pour définir une propriété afin de placer quelque chose dans cette cellule.The following code executes a method to select cell A1 in Excel and then to set a property to put something in that cell.

    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

Le premier défi de programmation VBA consiste à obtenir un ressenti pour le modèle d’objet de chaque application Office et à lire la syntaxe de la propriété, objet et méthode.The first challenge in VBA programming is to get a feeling for the object model of each Office application and to read the object, method, and property syntax. Les modèles d’objet sont similaires dans toutes les applications Office, mais chacun est spécifique au type de documents et objets qu’elles manipulent.The object models are similar in all Office applications, but each is specific to the kind of documents and objects that it manipulates.

À la première ligne de l’extrait de code figure l’objet Application, sous Excel cette fois-ci, puis ActiveSheet, permettant d’accéder à la feuille de calcul active.In the first line of the code snippet, there is the Application object, Excel this time, and then the ActiveSheet, which provides access to the active worksheet. Vient ensuite un terme moins familier, Plage, qui signifie « définir une plage de cellules de cette façon. »After that is a term not as familiar, Range, which means "define a range of cells in this way." Le code demande à l’élément Plage de se créer avec simplement A1 comme étant son ensemble défini de cellules.The code instructs Range to create itself with just A1 as its defined set of cells. En d’autres termes, la première ligne de code définit un objet, la Plage, et exécute une méthode sur celui-ci pour le sélectionner.In other words, the first line of code defines an object, the Range, and runs a method against it to select it. Le résultat est automatiquement archivé dans une autre propriété de l’ Application appelée Sélection.The result is automatically stored in another property of the Application called Selection.

La deuxième ligne de code affecte la propriété Valeur de Selection au texte « Hello World » et cette valeur apparaît dans la cellule A1.The second line of code sets the Value property of Selection to the text "Hello World", and that value appears in cell A1.

Le code VBA le plus simple pourrait simplement obtenir l’accès à des objets dans l’application Office dans laquelle vous travaillez, et définir des propriétés.The simplest VBA code that you write might simply gain access to objects in the Office application that you are working with and set properties. Par exemple, vous pourriez accéder aux lignes d’un tableau dans Word et modifier leur mise en forme dans votre script VBA.For example, you could get access to the rows in a table in Word and change their formatting in your VBA script.

Cela semble simple, mais cela peut être très utile ; une fois que vous pouvez écrire ce code, vous pouvez exploiter toute la puissance de programmation pour apporter les mêmes modifications dans plusieurs tableaux ou documents, ou les accorder selon une certaine logique ou condition.That sounds simple, but it can be incredibly useful; once you can write that code, you can harness all of the power of programming to make those same changes in several tables or documents, or make them according to some logic or condition. Pour un ordinateur, apporter 1000 modifications revient au même que d’en apporter 10, il y a donc une économie d’échelle avec des documents plus grands et des problèmes, et c’est là où VBA peut vous faire gagner du temps.For a computer, making 1000 changes is no different from making 10, so there is an economy of scale here with larger documents and problems, and that is where VBA can really shine and save you time.

Macros et Visual Basic EditorMacros and the Visual Basic Editor

Maintenant que vous en savez plus sur la manière dont les applications Office exposent leurs modèles d’objet, vous avez probablement hâte d’essayer d’appeler des méthodes de l’objet, définir des propriétés de l’objet et répondre aux événements d’un objet.Now that you know something about how Office applications expose their object models, you are probably eager to try calling object methods, setting object properties, and responding to object events. Pour ce faire, vous devez écrire votre code dans un emplacement et d’une manière qu’Office peut comprendre ; en règle générale, à l’aide de Visual Basic Editor.To do so, you must write your code in a place and in a way that Office can understand; typically, by using the Visual Basic Editor. Même s’il est installé par défaut, certains utilisateurs ne savent pas qu’il est disponible jusqu'à ce qu’il soit activé dans le ruban.Although it is installed by default, many users do not know that it is even available until it is enabled on the ribbon.

Toutes les applications Office utilisent le ruban.All Office applications use the ribbon. L’un des onglets du ruban est l’onglet Développeur, qui vous permet d’accéder à Visual Basic Editor et aux autres outils du développeur.One tab on the ribbon is the Developer tab, where you access the Visual Basic Editor and other developer tools. Office n’affichant pas l’onglet Développeur par défaut, vous devez l’activer via la procédure suivante :Because Office does not display the Developer tab by default, you must enable it by using the following procedure:

Pour activer l’onglet DéveloppeurTo enable the Developer tab

  1. Sous l’onglet Fichier, sélectionnez Options pour ouvrir la boîte de dialogue Options.On the File tab, choose Options to open the Options dialog box.

  2. Cliquez sur Personnaliser le ruban sur le côté gauche de la boîte de dialogue.Choose Customize Ribbon on the left side of the dialog box.

  3. Sous Choisir les commandes de sur le côté gauche de la boîte de dialogue, sélectionnez Commandes courantes.Under Choose commands from on the left side of the dialog box, select Popular Commands.

  4. Sous Personnaliser le Ruban sur le côté droit de la boîte de dialogue, sélectionnez Onglets principaux dans la zone de liste déroulante, puis activez la case à cocher Développeur.Under Customize the Ribbon on the right side of the dialog box, select Main Tabs in the drop down list box, and then select the Developer checkbox.

  5. Sélectionnez OK.Choose OK.

Notes

Dans Office 2007, pour afficher l’onglet Développeur, il fallait cliquer sur le bouton Office, cliquer sur Options, puis activer la case à cocherAfficher l’onglet Développeur dans le ruban dans la catégorie Populaire de la boîte de dialogue Options.In Office 2007, you displayed the Developer tab by choosing the Office button, choosing Options, and then selecting the Show Developer tab in Ribbon check box in the Popular category of the Options dialog box.

Une fois l’onglet Développeur activé, il est facile de trouver les boutons Visual Basic et Macros.After you enable the Developer tab, it is easy to find the Visual Basic and Macros buttons.

Figure 1. Boutons de l’onglet DéveloppeurFigure 1. Buttons on the Developer tab

Boutons de l’onglet Développeur

Problèmes de sécuritéSecurity issues

Pour protéger les utilisateurs d’Office contre les virus et les code macros dangereux, vous ne pouvez pas enregistrer le code macro dans un document Office standard qui utilise une extension de fichier standard.To protect Office users against viruses and dangerous macro code, you cannot save macro code in a standard Office document that uses a standard file extension. Au lieu de cela, vous devez enregistrer le code dans un fichier avec une extension spéciale.Instead, you must save the code in a file with a special extension. Par exemple, vous ne pouvez pas enregistrer les macros dans un document Word standard avec une extension .docx ; au lieu de cela, vous devez utiliser un Document Word spécial prenant en charge les macros avec une extension .docm.For example you cannot save macros in a standard Word document with a .docx extension; instead, you must use a special Word Macro-Enabled Document with a .docm extension.

Lorsque vous ouvrez un fichier .docm, la sécurité Office peut empêcher les macros de s’exécuter dans le document, avec ou sans notification.When you open a .docm file, Office security might still prevent the macros in the document from running, with or without telling you. Examiner les paramètres et les options dans le centre de gestion de la confidentialité sur toutes les applications Office.Examine the settings and options in the Trust Center on all Office applications. Le paramètre par défaut désactive l’exécution de macros, mais vous avertit que macros ont été désactivées et vous offre la possibilité de les réactiver pour ce document.The default setting disables macro from running, but warns you that macros have been disabled and gives you the option to turn them back on for that document.

Vous pouvez désigner des dossiers spécifiques dans lesquels les macros peuvent s’exécuter en créant des emplacements approuvés, des documents approuvés ou des éditeurs approuvés.You can designate specific folders where macros can run by creating Trusted Locations, Trusted Documents, or Trusted Publishers. L’option la plus portable consiste à utiliser des Éditeurs approuvés, ce qui fonctionne avec les documents signés numériquement que vous distribuez.The most portable option is to use Trusted Publishers, which works with digitally signed documents that you distribute. Pour plus d’informations sur les paramètres de sécurité dans une application Office spécifique, ouvrez la boîte de dialogue Options, cliquez sur Centre de gestion de la confidentialité, puis cliquez sur Paramètres du centre de gestion de la confidentialité.For more information about the security settings in a particular Office application, open the Options dialog box, choose Trust Center, and then choose Trust Center Settings.

Notes

Certaines applications Office, comme Outlook, enregistrent des macros par défaut dans un modèle de base sur votre ordinateur local.Some Office applications, like Outlook, save macros by default in a master template on your local computer. Bien que cette stratégie permette de réduire les problèmes de sécurité local sur votre ordinateur lorsque vous exécutez vos propres macros, cela nécessite une stratégie de déploiement si vous souhaitez distribuer votre macro.Although that strategy reduces the local security issues on your own computer when you run your own macros, it requires a deployment strategy if you want to distribute your macro.

Enregistrement d’une macroRecording a macro

Lorsque vous cliquez sur le bouton Macro situé dans l’onglet Développeur, cela ouvre la boîte de dialogue Macros, ce qui vous donne accès à des sous-routines ou à des macros VBA depuis un document ou une application en particulier.When you choose the Macro button on the Developer tab, it opens the Macros dialog box, which gives you access to VBA subroutines or macros that you can access from a particular document or application. Le bouton Visual Basic ouvre Visual Basic Editor, dans lequel vous créez et modifiez le code VBA.The Visual Basic button opens the Visual Basic Editor, where you create and edit VBA code.

Un autre bouton de l’onglet Développeur dans Word et Excel, dénommé Enregistrer une Macro, génère automatiquement un code VBA reproduisant les actions que vous exécutez dans l’application.Another button on the Developer tab in Word and Excel is the Record Macro button, which automatically generates VBA code that can reproduce the actions that you perform in the application. Le bouton Enregistrer une Macro est un outil formidable que vous pouvez utiliser pour en savoir plus sur VBA.Record Macro is a terrific tool that you can use to learn more about VBA. La lecture du code généré peut vous permettre d’en savoir plus sur VBA, fournissant une passerelle entre vos connaissances sur Microsoft Office en tant qu’utilisateur et vos connaissances en tant que programmeur.Reading the generated code can give you insight into VBA and provide a stable bridge between your knowledge of Office as a user and your knowledge as a programmer. Le seul inconvénient est que le code généré peut être source de confusion, car l’éditeur de la macro doit émettre des hypothèses sur vos intentions qui ne sont pas nécessairement précises.The only caveat is that the generated code can be confusing because the Macro editor must make some assumptions about your intentions, and those assumptions are not necessarily accurate.

Pour enregistrer une macroTo record a macro

  1. Ouvrez Excel dans un nouveau classeur et cliquez sur l’onglet Développeur dans le ruban.Open Excel to a new Workbook and choose the Developer tab in the ribbon. Cliquez sur Enregistrer une Macro et acceptez tous les paramètres par défaut dans la boîte de dialogue Enregistrer une macro, en incluant Macro1 comme nom de la macro et Ce Classeur en tant qu’emplacement.Choose Record Macro and accept all of the default settings in the Record Macro dialog box, including Macro1 as the name of the macro and This Workbook as the location.

  2. Cliquez sur OK pour commencer l’enregistrement de la macro.Choose OK to begin recording the macro. Le texte du bouton devient le suivant : Arrêter l’enregistrement.Note how the button text changes to Stop Recording. Cliquez sur ce bouton dès que vous avez terminé les actions que vous souhaitez enregistrer.Choose that button the instant you complete the actions that you want to record.

  3. Sélectionnez la cellule B1 et entrez la première chaîne classique du programmeur : Hello World.Choose cell B1 and type the programmer's classic first string: Hello World. Arrêtez la saisie et examinez le bouton Arrêter l’enregistrement; il est grisé car Excel attend que vous ayez fini d’entrer la valeur dans la cellule.Stop typing and look at the Stop Recording button; it is grayed out because Excel is waiting for you to finish typing the value in the cell.

  4. Cliquez sur la cellule B2 pour terminer l’action dans la cellule B1, puis cliquez sur Arrêter l’enregistrement.Choose cell B2 to complete the action in cell B1, and then choose Stop Recording.

  5. Cliquez sur Macros sous l’onglet Développeur, sélectionnez Macro1si ce n’est déjà fait, puis cliquez sur Modifier pour afficher le code de Macro1 dans Visual Basic Editor.Choose Macros on the Developer tab, select Macro1 if it is not selected, and then choose Edit to view the code from Macro1 in the Visual Basic Editor.

Figure 2. Code de macro dans Visual Basic EditorFigure 2. Macro code in Visual Basic Editor

Code de macro dans Visual Basic Editor

Consultation du codeLooking at the code

La macro que vous avez créée doit ressembler au code suivant.The macro that you created should look similar to the following code.

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

Gardez à l’esprit les similitudes à l’extrait de code antérieur qui a sélectionné le texte dans la cellule A1, et les différences.Be aware of the similarities to the earlier code snippet that selected text in cell A1, and the differences. Dans ce code, la cellule B1 est sélectionnée et la chaîne «Hello World» est ensuite appliquée à la cellule qui a été activée.In this code, cell B1 is selected, and then the string "Hello World" is applied to the cell that has been made active. Les guillemets autour du texte spécifient une valeur de chaîne par opposition à une valeur numérique.The quotes around the text specify a string value as opposed to a numeric value.

Vous souvenez-vous de la façon dont vous avez sélectionné la cellule B2 pour afficher à nouveau le bouton Arrêter l’enregistrement ?Remember how you chose cell B2 to display the Stop Recording button again? Cette action s’affiche également sous la forme d’une ligne de code.That action shows up as a line of code as well. L’enregistreur de macro sauvegarde chaque combinaison de touches.The macro recorder records every keystroke.

Les lignes de code qui commencent par une apostrophe et la couleur vert par l’éditeur sont des commentaires qui donnent des explications sur le code ou vous rappelle ainsi qu’autres programmeurs l’objectif du code.The lines of code that start with an apostrophe and colored green by the editor are comments that explain the code or remind you and other programmers the purpose of the code. VBA ignore toute ligne ou partie d’une ligne qui commence par un guillemet simple.VBA ignores any line, or portion of a line, that begins with a single quote. Écrire des commentaires clairs et appropriés dans votre code est important, mais cette discussion est en dehors de l’étendue de cet article.Writing clear and appropriate comments in your code is an important topic, but that discussion is out of the scope of this article. Les références à ce code dans l’article n’incluent pas ces quatre lignes de commentaire.Subsequent references to this code in the article do not include those four comment lines.

Lorsque l’enregistreur de macro génère le code, un algorithme complexe est utilisé pour déterminer les méthodes et les propriétés que vous avez choisies.When the macro recorder generates the code, it uses a complex algorithm to determine the methods and the properties that you intended. Si vous ne connaissez pas une propriété donnée, il existe de nombreuses ressources disponibles pour vous aider.If you do not recognize a given property, there are many resources available to help you. Par exemple, dans la macro que vous avez enregistrée, l’enregistreur de macro a généré du code qui fait référence à la propriété FormulaR1C1.For example, in the macro that you recorded, the macro recorder generated code that refers to the FormulaR1C1 property. Vous n’êtes pas certain de ce que cela signifie ?Not sure what that means?

Notes

Sachez que l’objet Application est sous-entendu dans toutes les macros VBA.Be aware that Application object is implied in all VBA macros. Le code que vous avez enregistré fonctionne avec Application.The code that you recorded works with Application. au début de chaque ligne.at the beginning of each line.

Utilisation de l’Aide au développementUsing Developer Help

Sélectionnez FormulaR1C1 dans la macro enregistrée, puis appuyez sur F1.Select FormulaR1C1 in the recorded macro and press F1. Le système d’aide exécute une recherche rapide, détermine que les sujets appropriés se trouvent dans la section Développeur Excel de l’Aide pour Excel, puis affiche la liste des propriétés FormulaR1C1.The Help system runs a quick search, determines that the appropriate subjects are in the Excel Developer section of the Excel Help, and lists the FormulaR1C1 property. Vous pouvez cliquer sur le lien pour en savoir plus sur la propriété, mais auparavant, sachez que le lien Référence du modèle objet Excel se trouve dans la partie inférieure de la fenêtre.You can choose the link to read more about the property, but before you do, be aware of the Excel Object Model Reference link near the bottom of the window. Cliquez sur le lien pour afficher une longue liste d’objets utilisés par Excel dans son modèle d’objet pour décrire les Feuilles de calcul et leurs composants.Choose the link to view a long list of objects that Excel uses in its object model to describe the Worksheets and their components.

Cliquez sur l’une d'entre elles pour afficher les propriétés et les méthodes qui s’appliquent à cet objet particulier, avec des références croisées à différentes options associées.Choose any one of those to see the properties and methods that apply to that particular object, along with cross references to different related options. De nombreuses entrées d’Aide comportent également de brefs exemples de code qui peuvent vous aider.Many Help entries also have brief code examples that can help you. Par exemple, vous pouvez suivre les liens dans l’objet Bordures pour savoir comment définir une bordure en langage VBA.For example, you can follow the links in the Borders object to see how to set a border in VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Modification du codeEditing the code

Le code de Bordures est différent de la macro enregistrée.The Borders code looks different from the recorded macro. Une des choses qui peuvent prêter à confusion avec un modèle objet est le fait qu’il existe plusieurs manières d’adresser un objet donné, dans notre exemple, la cellule A1. One thing that can be confusing with an object model is that there is more than one way to address any given object, cell A1 in this example.

Parfois la meilleure façon de découvrir la programmation consiste à apporter des modifications mineures à un code fonctionnant et d’observer le résultat.Sometimes the best way to learn programming is to make minor changes to some working code and see what happens as a result. Essayez maintenant.Try it now. Ouvrir Macro1 dans Visual Basic Editor et modifier le code de la manière suivante.Open Macro1 in the Visual Basic Editor and change the code to the following.

Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

Conseil

Utilisez dans la mesure du possible les opérations Copier et Coller lorsque vous travaillez sur du code, afin d’éviter toute erreur de frappe. Use Copy and Paste as much as possible when working with code to avoid typing errors.

Vous n’avez pas besoin d’enregistrer le code pour faire un essai, alors revenez au document Excel, cliquez sur Macros dans l’onglet Développeur, cliquez sur Macro1, puis cliquez sur **Exécuter **.You do not need to save the code to try it out, so return to the Excel document, choose Macros on the Developer tab, choose Macro1, and then choose Run. La cellule A1 contient désormais le texte Wow !Cell A1 now contains the text Wow! avec une bordure de ligne double.and has a double-line border around it.

Figure 3. Résultats de votre première macroFigure 3. Results of your first macro

Résultats de votre première macro

Vous venez de combiner l’enregistrement de macro, la lecture de la documentation du modèle objet et la programmation simple pour créer un programme VBA qui effectue une action.You just combined macro recording, reading the object model documentation, and simple programming to make a VBA program that does something. Félicitations !Congratulations!

Cela n’a pas fonctionné ?Did not work? Lisez la suite pour en savoir plus sur le débogage dans VBA.Read on for debugging suggestions in VBA.

Conseils et astuces de programmationProgramming tips and tricks

Commencer par des exemplesStart with examples

La Communauté VBA est très importante ; une recherche sur le Web résulte presque toujours en un exemple de code VBA qui effectue une opération semblable à ce que vous voulez faire.The VBA community is very large; a search on the Web can almost always yield an example of VBA code that does something similar to what you want to do. Si vous ne trouvez pas de bon exemple, essayez de diviser la tâche en unités plus petites et effectuez une recherche pour chacun d’entre elles, ou essayez de penser à un problème plus courant, mais similaire.If you cannot find a good example, try to break the task down into smaller units and search on each of those, or try to think of a more common, but similar problem. Commencer par un exemple peut vous faire gagner des heures.Starting with an example can save you hours of time.

Cela ne signifie pas que du code gratuit et bien pensé est disponible sur le Web, n’attendant que vous.That does not mean that free and well-thought-out code is on the Web waiting for you to come along. En fait, certains exemples de code que vous trouverez peuvent comporter des erreurs ou bugs.In fact, some of the code that you find might have bugs or mistakes. L’idée est que les exemples que vous trouvez en ligne ou dans la documentation VBA peuvent vous donner une longueur d’avance.The idea is that the examples you find online or in VBA documentation give you a head start. N’oubliez pas que l’apprentissage de la programmation nécessite du temps et de la réflexion.Remember that learning programming requires time and thought. Avant de vous précipiter pour utiliser une autre solution pour résoudre votre problème, demandez-vous si VBA est le bon choix pour ce problème.Before you get in a big rush to use another solution to solve your problem, ask yourself whether VBA is the right choice for this problem.

Simplifier le problèmeMake a simpler problem

Programmation peut devenir rapidement complexe.Programming can get complex quickly. Il est essentiel, en particulier en tant que débutant, de diviser le problème en unités logiques les plus petites possibles, puis écrire et tester chaque partie séparément.It is critical, especially as a beginner, that you break the problem down to the smallest possible logical units, then write and test each piece in isolation. Si vous avez trop de code sous les yeux, et que vous êtes confus, arrêtez et mettez le problème de côté.If you have too much code in front of you and you get confused or muddled, stop and set the problem aside. Lorsque vous revenez au problème, copiez une petite partie du problème dans un nouveau module, résolvez cette portion, faites en sorte que le code fonctionne et testez-le pour vous assurer qu’il fonctionne.When you come back to the problem, copy out a small piece of the problem into a new module, solve that piece, get the code working, and test it to ensure that it works. Puis passez à l’étape suivante.Then move on to the next part.

Bogues et débogageBugs and debugging

Il existe deux principaux types d’erreurs de programmation : les erreurs de syntaxe, qui enfreignent les règles grammaticales du langage de programmation, et les erreurs de runtime, où le code semble correcte du point de vue syntaxique mais échoue lorsque VBA tente de l’exécuter.There are two main types of programming errors: syntax errors, which violate the grammatical rules of the programming language, and run-time errors, which look syntactically correct, but fail when VBA attempts to execute the code.

Bien qu’elles puissent être frustrantes à résoudre, les erreurs de syntaxe sont faciles à repérer ; Visual Basic Editor fait bip et clignote si vous tapez une erreur de syntaxe dans votre code.Although they can be frustrating to fix, syntax errors are easy to catch; the Visual Basic Editor beeps and flashes at you if you type a syntax error in your code.

Par exemple, les valeurs de chaîne doivent être entourées par des guillemets doubles dans VBA.For example, string values must be surrounded by double quotes in VBA. Pour savoir ce qui se passe lorsque vous utilisez des guillemets simples à la place, retournez dans l’éditeur Visual Basic et remplacezTo find out what happens when you use single quotes instead, return to the Visual Basic Editor and replace the "Wow!" la chaîne « Wow ! » dans l’exemple de code par 'Wow!'string in the code example with 'Wow!' (autrement dit, le mot Wow placé entre des guillemets simples).(that is, the word Wow enclosed in single quotes). Si vous cliquez sur la ligne suivante, Visual Basic Editor réagit.If you choose the next line, the Visual Basic Editor reacts. L’erreur « Erreur de compilation : Prévu : expression » n’est pas vraiment utile, mais la ligne qui génère l’erreur devient rouge pour indiquer que vous avez une erreur de syntaxe dans cette ligne et que ce programme ne fonctionnera donc pas.The error "Compile error: Expected: expression" is not that helpful, but the line that generates the error turns red to tell you that you have a syntax error in that line and as a result, this program will not run.

Cliquez sur OK et retapez le texte correct « Wow ! ».Choose OK and change the text back to"Wow!".

Les erreurs d’exécution sont plus difficiles à identifier car la syntaxe de programmation semble correcte, mais le code échoue lorsque VBA tente de l’exécuter.Runtime errors are harder to catch because the programming syntax looks correct, but the code fails when VBA tries to execute it.

Par exemple, ouvrez Visual Basic Editor et remplacez le nom de propriété Value par ValueX dans votre macro, introduisant délibérément une erreur d’exécution car l’objet Plage ne comporte aucune propriété dénommée ValueX.For example, open the Visual Basic Editor and change the Value property name toValueX in your Macro, deliberately introducing a runtime error since the Range object does not have a property called ValueX. Retournez dans le document Excel, ouvrez la boîte de dialogue Macros et exécutez Macro1 à nouveau.Go back to the Excel document, open the Macros dialog box and run Macro1 again. Vous devriez voir un message de Visual Basic qui décrit l’erreur au moment de l’exécution avec le texte « Objet ne prenant pas en charge cette propriété de méthode. »You should see a Visual Basic message box that explains the run-time error with the text, "Object doesn't support this property of method." Bien que ce texte soit clair, cliquez sur Déboguer pour en savoir plus.Although that text is clear, choose Debug to find out more.

Lorsque vous rebasculez vers Visual Basic Editor, il est dans un mode débogage spécial qui utilise la surbrillance en jaune pour identifier la ligne de code ayant échoué. When you return to the Visual Basic Editor, it is in a special debug mode that uses a yellow highlight to show you the line of code that failed. Comme prévu, la ligne qui contient la propriété ValueX est mise en surbrillance.As expected, the line that includes the ValueX property is highlighted.

Puisqu’il est possible de modifier un code VBA en cours d’exécution, remplacez ValueX par Valeur et cliquez sur le petit bouton de lecture vert sous le menu Déboguer. You can make changes to VBA code that is running, so change ValueX back to Value and choose the little green play button underneath the Debug menu. Le programme doit maintenant s’exécuter normalement.The program should run normally again.

Il est judicieux d’apprendre à utiliser le débogueur plus délibérément pour les programmes plus longs et plus complexes.It is a good idea to learn how to use the debugger more deliberately for longer, more complex programs. Au minimum, apprenez à définir des seuils pour arrêter l’exécution lorsque vous souhaitez examiner le code, à ajouter des moniteurs pour voir les valeurs de variables différentes et de propriétés en tant que l’exécution de code, et à parcourir le code ligne par ligne.At a minimum, learn a how to set break-points to stop execution at a point where you want to take a look at the code, how to add watches to see the values of different variables and properties as the code runs, and how to step through the code line by line. Ces options sont disponibles dans le menu Déboguer et les utilisateurs sérieux du débogueur mémorisent généralement les raccourcis clavier d’accompagnement.These options are all available in the Debug menu and serious debugger users typically memorize the accompanying keyboard shortcuts.

Utiliser la documentation de référence à bon escientUsing reference materials well

Pour ouvrir la Référence développeur intégrée à l’Aide dans Office, ouvrez la référence de l’Aide à partir de n’importe quelle application Office, en cliquant sur le point d’interrogation dans le ruban ou en appuyant sur F1.To open the Developer Reference that is built into Office Help, open the Help reference from any Office application by choosing the question mark in the ribbon or by pressing F1. Ensuite, à droite du bouton Recherche, cliquez sur la flèche déroulante pour filtrer le contenu.Then, to the right of the Search button, choose the dropdown arrow to filter the contents. SélectionnezRéférence du développeur.Choose Developer Reference. Si vous ne voyez pas la table des matières dans le volet gauche, cliquez sur la petite icône de carnet pour l’ouvrir, puis développez la Référence du modèle objet à partir de là.If you do not see the table of contents in the left panel, choose the little book icon to open it, and then expand the Object Model Reference from there.

Figure 5. Le filtrage de l’Aide du développeur s’applique à toutes les applications OfficeFigure 5. Filtering on developer Help applies to all Office applications

Le filtrage de l’Aide du développeur s’applique à toutes les applications Office

Le temps passé à parcourir la référence de modèle objet finira par payer. Time spent browsing the Object Model reference pays off. Une fois que vous aurez compris les notions de base de la syntaxe VBA et le modèle objet de l’application Office sur laquelle vous travaillez, vous progresserez vers une programmation plus méthodique.After you understand the basics of VBA syntax and the object model for the Office application that you are working with, you advance from guesswork to methodical programming.

Bien entendu, le Centre pour développeurs Microsoft Office est un excellent portail contenant de nombreux articles, conseils et informations communautaires.Of course the Microsoft Office Developer Center is an excellent portal for articles, tips, and community information.

Recherche dans les forums et les groupes de discussionSearching forums and groups

Tous les développeurs se retrouvent inévitablement coincés, un jour ou l’autre, même après avoir lu tous les articles de référence disponibles et avoir perdu des heures de sommeil à réfléchir à différentes manières de résoudre le problème. All programmers get stuck sometimes, even after reading every reference article they can find and losing sleep at night thinking about different ways to solve a problem. Fort heureusement, Internet a donné naissance à une communauté de développeurs qui s’entraident à résoudre leurs problèmes de programmation.Fortunately, the Internet has fostered a community of developers who help each other solve programming problems.

Toute recherche sur le Web pour « forum office développeur » révèlera plusieurs groupes de discussion.Any search on the Web for "office developer forum" reveals several discussion groups. Vous pouvez rechercher « développement office » ou une description de votre problème pour découvrir des forums, des billets de blog et également des articles.You can search on "office development" or a description of your problem to discover forums, blog posts, and articles as well.

Si vous avez effectué tout que vous pouvez pour résoudre un problème, n’hésitez pas à publier votre question sur un forum dédié aux développeurs.If you have done everything that you can to solve a problem, do not be afraid to post your question to a developers forum. Ces forums accueillent avec plaisir des questions de programmeurs amateurs et les développeurs expérimentés seront heureux de vous aider.These forums welcome posts from newer programmers and many of the experienced developers are glad to help.

Voici quelques règles de savoir-vivre à respecter lors de la publication d’un message sur un forum de développeurs :The following are a few points of etiquette to follow when you post to a developer forum:

  • Avant de publier, rechercher sur le site s’il existe un forum aux questions ou des instructions que les membres souhaitent que vous suiviez.Before you post, look on the site for an FAQ or for guidelines that members want you to follow. Vérifiez que vous publiez du contenu qui est cohérent avec ces recommandations et dans la section correcte du forum.Ensure that you post content that is consistent with those guidelines and in the correct section of the forum.

  • Incluez un exemple de code clair et complet, et modifiez éventuellement votre code afin de le clarifier, s’il fait partie d’une section de code plus longue.Include a clear and complete code sample, and consider editing your code to clarify it for others if it is part of a longer section of code.

  • Décrivez votre problème de manière claire et concise et synthétisez les étapes que vous avez effectuées pour résoudre le problème.Describe your problem clearly and concisely, and summarize any steps that you have taken to solve the problem. Prenez le temps de rédiger votre billet aussi bien que vous pouvez, en particulier si vous êtes énervé ou pressé.Take the time to write your post as well as you can, especially if you are flustered or in a hurry. Présentez la situation d’une manière qui aura un sens pour les lecteurs la première fois qu’ils lisent l’énoncé du problème.Present the situation in a way that will make sense to readers the first time that they read the problem statement.

  • Soyez poli et faites part de votre reconnaissance.Be polite and express your appreciation.

Aller plus loin dans la programmationGoing further with programming

Même si cet article est relativement court et n’aborde pas de manière approfondie VBA et la programmation, nous espérons qu’il fournit suffisamment d’informations pour une bonne prise en main.Although this article is short and only scratches the surface of VBA and programming, it is hopefully enough to get you started.

Cette section traite brièvement de quelques autres sujets d’importance.This section briefly discusses a few more key topics.

VariablesVariables

Dans les exemples simples de cet article , vous avez manipulé des objets que l’application avait déjà créés.In the simple examples in this article you manipulated objects that the application had already created. Vous souhaitez peut-être créer vos propres objets pour stocker des valeurs ou des références à d’autres objets pour un usage temporaire dans votre application.You might want to create your own objects to store values or references to other objects for temporary use in your application. Ils sont appelés des variables.These are called variables.

Pour utiliser une variable dans VBA, il faut indiquer à VBA le type d’objet représenté par la variable, à l’aide de la déclaration Dim.To use a variable in VBA, must tell VBA which type of object the variable represents by using the Dim statement. Ensuite, définissez sa valeur et utilisez-la pour définir d’autres variables ou propriétés.You then set its value and use it to set other variables or properties.

    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

Branches et bouclesBranching and looping

Les programmes simples dans cet article exécutent une ligne à la fois, du haut vers le bas.The simple programs in this article execute one line at a time, from the top down. La réelle puissance de la programmation vient des options dont vous disposez pour déterminer les lignes de code à exécuter, basées sur une ou plusieurs conditions que vous spécifiez.The real power in programming comes from the options that you have to determine which lines of code to execute, based on one or more conditions that you specify. Vous pouvez étendre ces fonctionnalités lorsque vous pouvez répéter une opération plusieurs fois.You can extend those capabilities even further when you can repeat an operation many times. Par exemple, le code suivant étend Macro1.For example, the following code extends Macro1.

Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub

Saisissez ou collez le code dans Visual Basic Editor, puis exécutez-le.Type or paste the code into the Visual Basic Editor and then run it. Suivez les instructions fournies dans la messagerie qui s’affiche et modifiez le texte dans la cellule A1 en remplaçant Wow !Follow the directions in the message box that appears and change the text in cell A1 from Wow! par Oui !to Yes! puis exécutez à nouveau pour voir la puissance de bouclage.and run it again to see the power of looping. Cet extrait de code montre les variables, l’arborescence et le bouclage.This code snippet demonstrates variables, branching and looping. Lisez-le attentivement après l’avoir vu en action, et essayez de déterminer ce qui se produit à mesure que chaque ligne s’exécute.Read it carefully after you see it in action and try to determine what happens as each line executes.

Toutes mes applications Office : exemple de codeAll of my Office applications: example code

Voici quelques exemples de scripts ; chacun résout un problème Office tiré du monde réel.Here are a few scripts to try; each solves a real-world Office problem.

Créer un message électronique dans OutlookCreate an email in Outlook

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

Il existe des situations dans lesquelles il peut être nécessaire d’automatiser le courrier électronique dans Outlook ; vous pouvez également utiliser des modèles.Be aware that there are situations in which you might want to automate email in Outlook; you can use templates as well.

Supprimer des lignes vides dans une feuille de calcul ExcelDelete empty rows in an Excel worksheet

Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

Il est possible de sélectionner une colonne de cellules et d’exécuter cette macro pour supprimer toutes les lignes de la colonne sélectionnée contenant une cellule vide.Be aware that you can select a column of cells and run this macro to delete all rows in the selected column that have a blank cell.

Supprimer des zones de texte vides dans PowerPointDelete empty text boxes in PowerPoint

Sub RemoveEmptyTextBoxes()
    Dim SlideObj As Slide
    Dim ShapeObj As Shape
    Dim ShapeIndex As Integer
    For Each SlideObj In ActivePresentation.Slides
        For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
            Set ShapeObj = SlideObj.Shapes(ShapeIndex)
            If ShapeObj.Type = msoTextBox Then
                If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
                    ShapeObj.Delete
                End If
            End If
        Next ShapeIndex
    Next SlideObj
End Sub

Ce code parcourt en boucle toutes les diapositives et supprime toutes les zones de texte qui ne contiennent aucun texte.Be aware that this code loops through all of the slides and deletes all text boxes that do not have any text. La variable de décompte décrémente au lieu d’incrémenter car chaque fois que le code supprime un objet, il le supprime de la collection, ce qui réduit le nombre.The count variable decrements instead of increments because each time the code deletes an object, it removes that object from the collection, which reduces the count.

Copie d’un contact Outlook vers WordCopy a contact from Outlook to Word

Sub CopyCurrentContact()
   Dim OutlookObj As Object
   Dim InspectorObj As Object
   Dim ItemObj As Object
   Set OutlookObj = CreateObject("Outlook.Application")
   Set InspectorObj = OutlookObj.ActiveInspector
   Set ItemObj = InspectorObj.CurrentItem
   Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

Ce code copie le contact ouvert dans Outlook dans le document Word ouvert.Be aware that this code copies the currently open contact in Outlook into the open Word document. Ce code ne fonctionne que si un contact est actuellement ouvert pour inspection dans Outlook.This code only works if there is a contact currently open for inspection in Outlook.

Assistance et commentairesSupport and feedback

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ?Have questions or feedback about Office VBA or this documentation? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.