Écrire du code dans les solutions OfficeWrite code in Office solutions

Certains aspects de l'écriture de code dans les projets Office diffèrent des autres types de projets dans Visual Studio.There are some aspects of writing code in Office projects that are different from other types of projects in Visual Studio. La plupart de ces différences sont liées à la façon dont les modèles objet Office sont exposés au code managé.Many of these differences are related to the way the Office object models are exposed to managed code. Les autres différences portent sur la conception des projets Office.Other differences are related to the design of Office projects.

S’applique à : les informations contenues dans cette rubrique s’applique au document-projets et ajouter de VSTO de niveau-dans les projets.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects. Consultez fonctionnalités disponibles par type d’application et de projet Office.See Features available by Office application and project type.

Le code managé et programmation OfficeManaged code and Office programming

Automation est la technologie clé qui permet de créer une solution Microsoft Office intégrée. Elle fait partie de la technologie COM (Component Object Model).The key technology that makes creating an integrated Microsoft Office solution possible is Automation, which is part of the Component Object Model (COM) technology. Automation rend possible l'utilisation de code pour créer et contrôler les objets logiciel qui sont exposés par une application, une DLL ou un contrôle ActiveX prenant en charge les interfaces de programmation appropriées.Automation enables you to use code to create and control software objects exposed by any application, DLL, or ActiveX control that supports the appropriate programmatic interfaces.

Comprendre les assemblys PIAUnderstand primary interop assemblies

Les applications Microsoft Office exposent une grande part de leurs fonctionnalités à Automation.Microsoft Office applications expose much of their functionality to Automation. Toutefois, vous ne pouvez pas utiliser du code managé (notamment Visual Basic ou C#) directement pour automatiser des applications Office.However, you cannot use managed code (such as Visual Basic or C#) directly to automate Office applications. Pour automatiser des applications Office avec du code managé, vous devez utiliser les assemblys PIA (Primary Interop Assembly) d'Office.To automate Office applications by using managed code, you must use the Office primary interop assemblies (PIAs). Ces assemblys permettent au code managé d'interagir avec le modèle objet COM des applications Office.The primary interop assemblies enable managed code to interact with the COM-based object model of the Office applications.

Chaque application Microsoft Office possède un assembly PIA.Every Microsoft Office application has a PIA. Quand vous créez un projet Office dans Visual Studio, une référence au PIA approprié est automatiquement ajoutée au projet.When you create an Office project in Visual Studio, a reference to the appropriate PIA is automatically added to the project. Pour automatiser les fonctionnalités d'autres applications Office à partir du projet, vous devez ajouter cette référence manuellement.To automate the features of other Office applications from the project, you must add a reference to the appropriate PIA manually. Pour plus d’informations, consultez Comment : applications Office de cible via les assemblys PIA.For more information, see How to: Target Office applications through primary interop assemblies.

Utiliser des assemblys PIA au runtime et le moment du designUse primary interop assemblies at design time and runtime

Pour que vous puissiez effectuer la plupart des tâches de développement, les assemblys PIA d'Office doivent être installés et inscrits dans le Global Assembly Cache de votre ordinateur de développement.You must have the Office PIAs installed and registered in the global assembly cache on your development computer to perform most development tasks. Pour plus d’informations, consultez configurer un ordinateur pour développer des solutions Office.For more information, see Configure a computer to develop Office solutions.

Sur les ordinateurs des utilisateurs finaux, les assemblys PIA d'Office ne sont pas nécessaires pour exécuter les solutions Office ciblant .NET Framework 4.NET Framework 4 ou une version ultérieure.The Office PIAs are not required on end-user computers to run Office solutions that target the .NET Framework 4.NET Framework 4 or later. Pour plus d’informations, consultez conception et créer des solutions Office.For more information, see Design and create Office solutions.

Utiliser des types dans les assemblys PIAUse types in primary interop assemblies

Les assemblys PIA d'Office fournissent une combinaison de types qui exposent le modèle objet des applications Office et d'autres types d'infrastructure qui ne sont pas prévus pour être utilisés directement dans votre code.The Office PIAs contain a combination of types that expose the object model of the Office applications and additional infrastructure types that are not intended to be used directly in your code. Pour une vue d’ensemble des types dans les assemblys PIA Office, consultez vue d’ensemble des classes et interfaces dans les assemblys PIA Office.For an overview of the types in the Office PIAs, see Overview of classes and interfaces in the Office primary interop assemblies.

Étant donné que les types des assemblys PIA d'Office correspondent aux types des modèles objet COM, la façon dont vous utilisez ces types diffère souvent des autres types managés.Because the types in the Office PIAs correspond to types in the COM-based object models, the way you use these types is often different from other managed types. Par exemple, le mode d'appel des méthodes possédant des paramètres optionnels dans un assembly PIA d'Office dépend du langage de programmation utilisé dans le projet.For example, the way you call methods that have optional parameters in an Office primary interop assembly depends on the programming language you are using in your project. Pour plus d’informations, consultez les rubriques suivantes :For more information, see the following topics:

Modèle de programme des projets OfficeProgram model of Office projects

Tous les projets Office incluent une ou plusieurs classes générées qui fournissent le point d'entrée de votre code.All Office projects include one or more generated classes that provide the entry point for your code. Ces classes fournissent également l'accès au modèle objet de l'application hôte, ainsi qu'aux fonctionnalités telles que les volets Actions et les volets de tâches personnalisés.These classes also provide access to the object model of the host application and access to features like actions panes and custom task panes.

Comprendre les classes généréesUnderstand the generated classes

Dans les projets de niveau document pour Excel et Word, la classe générée ressemble à un objet de niveau supérieur du modèle objet de l'application.In document-level projects for Excel and Word, the generated class resembles a top-level object in the application's object model. Par exemple, la classe ThisDocument générée d'un projet de document Word fournit les mêmes membres que la classe Document du modèle objet Word.For example, the generated ThisDocument class in a Word document project provides the same members as the Document class in the Word object model. Pour plus d’informations sur les classes générées dans les projets au niveau du document, consultez programmer des personnalisations au niveau du document.For more information about the generated classes in document-level projects, see Program document-level customizations.

Les projets de complément VSTO fournissent une classe générée nommée ThisAddIn.VSTO Add-in projects provide a generated class called ThisAddIn. Cette classe ne ressemble pas à une classe du modèle objet de l'application hôte.This class does not resemble a class in the host application's object model. Elle représente le complément VSTO proprement dit et fournit des membres que vous pouvez utiliser pour accéder au modèle objet de l’application hôte et aux autres fonctionnalités disponibles pour les compléments VSTO. Pour plus d’informations, consultez programme VSTO Add-ins.Instead, this class represents the VSTO Add-in itself, and it provides members you can use to access the object model of the host application and access other features available to VSTO Add-ins. For more information, see Program VSTO Add-ins.

Toutes les classes générées dans les projets Office incluent des gestionnaires d'événements Startup et Shutdown .All generated classes in Office projects include Startup and Shutdown event handlers. Pour commencer à écrire du code, vous ajoutez généralement ce code à ces gestionnaires d'événements.To get started writing code, you typically add code to these event handlers. Pour initialiser votre complément VSTO, vous pouvez ajouter du code au gestionnaire d’événements Startup .To initialize your VSTO Add-in, you can add code to the Startup event handler. Pour nettoyer les ressources utilisées par votre complément VSTO, vous pouvez ajouter du code au gestionnaire d’événements Shutdown .To clean up resources used by your VSTO Add-in, you can add code to the Shutdown event handler. Pour plus d’informations, consultez événements dans les projets Office.For more information, see Events in Office projects.

Accéder aux classes générées lors de l’exécutionAccess the generated classes at runtime

Quand une solution Office est chargée, le Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime instancie chacune des classes générées dans votre projet.When an Office solution is loaded, the Visual Studio Tools pour Office RuntimeVisual Studio Tools for Office runtime instantiates each of the generated classes in your project. Vous pouvez accéder à ces objets directement du code de votre projet à l'aide de la classe Globals .You can access these objects from any code in your project by using the Globals class. Par exemple, vous pouvez utiliser la Globals classe d’appeler du code la ThisAddIn classe à partir d’un gestionnaire d’événements d’un bouton de ruban dans un complément, VSTO.For example, you can use the Globals class to call code in the ThisAddIn class from an event handler of a Ribbon button in a VSTO Add-in.

Pour plus d’informations, consultez d’accès Global aux objets dans les projets Office.For more information, see Global access to objects in Office projects.

Considérations relatives à la Namespace dans les solutions OfficeNamespace considerations in Office solutions

Vous ne pouvez pas modifier l' espace de noms par défaut (ou l' espace de noms racine dans Visual Basic) dans un projet Office existant.You cannot change the default namespace (or root namespace in Visual Basic) of an Office project after you create the project. L'espace de noms par défaut correspondra toujours au nom du projet que vous avez spécifié lors de sa création.The default namespace will always match the project name you specified when you created the project. Si vous renommez votre projet, l'espace de noms par défaut ne change pas.If you rename your project, the default namespace does not change. Pour plus d’informations sur l’espace de noms par défaut dans les projets, consultez Application Page, Project Designer (C# ) et Application Page, Project Designer (Visual Basic) .For more information about the default namespace in projects, see Application Page, Project Designer (C#) and Application Page, Project Designer (Visual Basic).

Modifier l’espace de noms de classes d’élément hôte dans les projets c#Change the namespace of host item classes in C# projects

Les classes d'élément hôte (par exemple, ThisAddIn, ThisWorkbooket ThisDocument ) ont leurs propres espaces de noms dans les projets Office Visual C#.Host item classes (for example, the ThisAddIn, ThisWorkbook, or ThisDocument classes) have their own namespaces in Visual C# Office projects. Par défaut, l'espace de noms des éléments hôtes dans votre projet correspond au nom de projet que vous avez spécifié lors de la création de ce dernier.By default, the namespace for host items in your project matches the project name you specified when you created the project.

Pour modifier l'espace de noms des éléments hôtes dans un projet Office Visual C#, utilisez la propriété Espace de noms de l'élément hôte .To change the namespace of the host items in a Visual C# Office project, use the Namespace for Host Item property. Pour plus d’informations, consultez propriétés dans les projets Office.For more information, see Properties in Office projects.

Prise en charge des langages de programmation dans les projets OfficeSupported programming languages in Office projects

Les modèles de projet Office dans Visual Studio prennent uniquement en charge les langages de programmation Visual Basic et Visual C#.The Office project templates in Visual Studio support only the Visual Basic and Visual C# programming languages. Par conséquent, ces modèles de projet sont disponibles uniquement sous les nœuds Visual Basic et Visual C# de la boîte de dialogue Nouveau projet dans Visual StudioVisual Studio.Therefore, these project templates are available only under the Visual Basic and Visual C# nodes of the New Project dialog box in Visual StudioVisual Studio. Pour plus d’informations, consultez Comment : les projets Office de créer dans Visual Studio.For more information, see How to: Create Office projects in Visual Studio.

Choix du langage et programmation OfficeLanguage choice and Office programming

Microsoft Office et Visual Basic pour Applications (VBA) ont été développés pour fonctionner ensemble afin d'optimiser le workflow de la personnalisation d'application.Microsoft Office and Visual Basic for Applications (VBA) were developed to work together to optimize the workflow of application customization. Visual Basic a hérité certains de ces développements, comme la prise en charge des paramètres optionnels.Visual Basic has inherited some of those developments. L'utilisation de ces paramètres vous permet d'appeler certaines méthodes dans les assemblys PIA (Primary Interop Assembly) de Microsoft Office en ayant moins de code à écrire qu'avec Visual C#.For example, Visual Basic supports optional parameters, which means that you can write less code when calling some methods in the Microsoft Office primary interop assemblies than when you use Visual C#.

Programme avec vs de Visual Basic. Visual c# dans les solutions OfficeProgram with Visual Basic vs. Visual C# in Office solutions

Vous pouvez créer des solutions Office à l'aide de Visual Basic ou Visual C#.You can create Office solutions by using either Visual Basic or Visual C#. Étant donné que les modèles objet de Microsoft Office ont été conçus pour être utilisés avec Microsoft Visual Basic pour Applications (VBA), les développeurs en Visual Basic peuvent facilement travailler avec les objets exposés par les applications Microsoft Office.Because the Microsoft Office object models were designed to be used with Microsoft Visual Basic for Applications (VBA), Visual Basic developers can work comfortably with the objects exposed by the Microsoft Office applications. Les développeurs en Visual C# peuvent utiliser la plupart des fonctionnalités disponibles pour les développeurs en Visual Basic, sauf dans certains cas où ils doivent écrire du code supplémentaire pour pouvoir utiliser les modèles objet d'Office.Visual C# developers can use most of the same features as Visual Basic developers, but there are some cases where they must write additional code to use the Office object models. Il existe également quelques différences entre les fonctionnalités de programmation de base dans le développement Office et le code managé écrit en Visual Basic et Visual C#.There are also some differences between basic programming features in Office development and managed code written in Visual Basic and C#.

Principales différences entre Visual Basic et Visual c#Key differences between Visual Basic and Visual C#

Le tableau suivant indique les principales différences entre Visual Basic et Visual C# dans le développement Office.The following table shows key differences between Visual Basic and Visual C# in Office development.

FonctionnalitéFeature DescriptionDescription Prise en charge dans Visual BasicVisual Basic support Prise en charge dans Visual C#Visual C# support
Paramètres optionnelsOptional parameters De nombreuses méthodes Microsoft Office possèdent des paramètres qui ne sont pas obligatoires quand vous les appelez.Many Microsoft Office methods have parameters that are not required when you call the method. Si aucune valeur n'est passée comme paramètre, une valeur par défaut est utilisée.If no value is passed for the parameter, a default value is used. Visual Basic prend en charge les paramètres optionnels.Visual Basic supports optional parameters. Visual C# prend en charge les paramètres optionnels dans la plupart des cas.Visual C# supports optional parameters in most cases. Pour plus d’informations, consultez paramètres optionnels dans les solutions Office.For more information, see Optional parameters in Office solutions.
Passage de paramètres par référencePassing parameters by reference Dans la plupart des assemblys PIA (Primary Interop Assembly) de Microsoft Office, les paramètres optionnels peuvent être passés par valeur.Optional parameters in most of the Microsoft Office primary interop assemblies can be passed by value. Toutefois, dans certains assemblys PIA, les paramètres optionnels qui acceptent les types référence doivent être passés par référence.However, in some primary interop assemblies, optional parameters that accept reference types must be passed by reference.

Pour plus d’informations sur les paramètres de type valeur et référence, consultez passer des arguments par valeur et par référence (Visual Basic) (pour Visual Basic) et passer des paramètres (C# guide de programmation).For more information about value and reference type parameters, see Pass arguments by value and by reference (Visual Basic) (for Visual Basic) and Pass parameters (C# programming guide).
Le passage des paramètres par référence est possible sans codage supplémentaire.No additional work is needed to pass parameters by reference. Le compilateur Visual Basic passe automatiquement les paramètres par référence nécessaires.The Visual Basic compiler automatically passes the parameters by reference when necessary. Le plus souvent, le compilateur Visual C# passe automatiquement les paramètres par référence nécessaires.In most cases, the Visual C# compiler automatically passes the parameters by reference when necessary. Pour plus d’informations, consultez paramètres optionnels dans les solutions Office.For more information, see Optional parameters in Office solutions.
Propriétés paramétrablesParameterized properties Certaines propriétés acceptent des paramètres et agissent comme des fonctions en lecture seule.Some properties accept parameters, and act as read-only functions. Visual Basic prend en charge les propriétés qui acceptent des paramètres.Visual Basic supports properties that accept parameters. Visual C# prend en charge les propriétés qui acceptent des paramètres.Visual C# supports properties that accept parameters.
Liaison tardiveLate binding La liaison tardive implique de déterminer les propriétés d'objets au moment de l'exécution, au lieu d'effectuer un cast de variables en type d'objet au moment du design.Late binding involves determining the properties of objects at run time, instead of casting variables to the object type at design time. Visual Basic effectue la liaison tardive quand Option Strict est désactivé.Visual Basic performs late binding when Option Strict is off. Si Option Strict est activé, vous devez convertir explicitement les objets et utiliser les types figurant dans l'espace de noms System.Reflection pour accéder aux membres à liaison tardive.When Option Strict is on, you must explicitly convert objects and use types in the System.Reflection namespace to access late-bound members. Pour plus d’informations, consultez la liaison tardive dans les solutions Office.For more information, see Late binding in Office solutions. Visual C# effectue la liaison tardive dans les projets qui ciblent .NET Framework 4.NET Framework 4.Visual C# performs late binding in projects that target the .NET Framework 4.NET Framework 4. Pour plus d’informations, consultez la liaison tardive dans les solutions Office.For more information, see Late binding in Office solutions.

Principales différences entre le développement Office et le code managéKey differences between Office development and managed code

Le tableau suivant indique les principales différences entre le développement Office et le code managé écrit en Visual Basic ou Visual C#.The following table shows key differences between Office development and managed code written in Visual Basic or Visual C#.

FonctionnalitéFeature DescriptionDescription Prise en charge dans Visual Basic et Visual C#Visual Basic and Visual C# support
Index de tableauArray indexes La limite de tableau inférieure de collections dans les applications Microsoft Office commencent par 1.The lower array bound of collections in Microsoft Office applications begins with 1. Visual Basic et Visual C# utilisent des tableaux basés sur 0.Visual Basic and Visual C# use 0-based arrays. Pour plus d’informations, consultez tableaux (C# guide de programmation) et tableaux dans Visual Basic.For more information, see Arrays (C# programming guide) and Arrays in Visual Basic. Pour accéder au premier élément d'une collection dans le modèle objet d'une application Microsoft Office, utilisez l'index 1 au lieu de 0.To access the first item of a collection in the object model of a Microsoft Office application, use the index 1 instead of 0.

Voir aussiSee also

Paramètres optionnels dans les solutions Office Optional parameters in Office solutions
Accès global aux objets dans les projets Office Global access to objects in Office projects
Événements dans les projets Office Events in Office projects
Comment : applications Office de cible via les assemblys PIA How to: Target Office applications through primary interop assemblies
Comment : créer des gestionnaires d’événements dans les projets Office How to: Create event handlers in Office projects
Liaison tardive dans les solutions Office Late binding in Office solutions
Développement collaboratif de solutions OfficeCollaborative development of Office solutions