Mise en forme de données dans Excel avec différents paramètres régionaux
Vous devez mettre en forme toutes les données possédant un formatage qui dépend des paramètres régionaux, telles que les dates et les devises, à l'aide du format de données Anglais (États-Unis) (ID 1033) avant de les passer à Microsoft Office Excel ou de lire les données du code dans votre projet Office.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document et de niveau application pour Excel 2007 et Excel 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Par défaut, lorsque vous développez une solution Office dans Visual Studio, le modèle objet Excel attend la mise en forme des données avec l'ID de paramètres régionaux 1033 (procédure également appelée verrouillage du modèle objet à l'ID de paramètres régionaux 1033). Ce comportement correspond à la manière dont Visual Basic for Applications fonctionne. Toutefois, vous pouvez modifier ce comportement dans vos solutions Office.
Comment le modèle objet d'Excel attend toujours l'ID de paramètres régionaux 1033
Par défaut, les solutions Office que vous créez à l'aide de Visual Studio ne sont pas affectées par les paramètres régionaux de l'utilisateur final et se comportent toujours comme si les paramètres régionaux étaient Anglais (États-Unis). Par exemple, si vous obtenez ou définissez la propriété Value2 dans Excel, les données doivent être mises en forme comme l'ID de paramètres régionaux 1033 s'y attend. Si vous utilisez un format de données différent, vous pouvez obtenir des résultats inattendus.
Bien que vous utilisiez le format Anglais (États-Unis) pour des données transmises ou manipulées par un code managé, Excel interprète et affiche correctement les données en fonction des paramètres régionaux en vigueur sur l'ordinateur de l'utilisateur final. Excel peut mettre les données en forme correctement parce que le code managé transmet l'ID de paramètres régionaux 1033 avec les données. Cet ID indique que les données sont au format Anglais (États-Unis) et que, par conséquent, elles doivent être reformatées pour correspondre aux paramètres régionaux en vigueur sur l'ordinateur de l'utilisateur.
Par exemple, si les paramètres régionaux des utilisateurs finaux sont définies sur Allemand (Allemagne), ces utilisateurs s'attendent à ce que la date du 29 juin 2005 soit mise en forme de cette façon : 29.06.2005. Toutefois, si votre solution transmet la date à Excel sous la forme d'une chaîne, vous devez mettre cette date en forme selon le format Anglais (États-Unis) : 6/29/2005. Si la cellule est mise en forme en tant que cellule de type Date, Excel affiche la date au format Allemand (Allemagne).
Passage d'autres ID de paramètres régionaux au modèle objet Excel
Dans les projets qui ciblent le .NET Framework 4, le common language runtime (CLR) passe automatiquement l'ID de paramètres régionaux 1033 à toutes les méthodes et propriétés du modèle objet Excel qui acceptent des données qui dépendent des paramètres régionaux. Il n'existe aucun moyen de changer ce comportement automatiquement pour tous les appels du modèle objet. Toutefois, vous pouvez passer un ID de paramètres régionaux différent à une méthode spécifique en utilisant InvokeMember pour appeler la méthode et en passant l'ID de paramètres régionaux au paramètre culture de la méthode.
Dans les projets qui ciblent le .NET Framework 3.5, le Visual Studio Tools pour Office Runtime passe par défaut l'ID de paramètres régionaux 1033 au modèle objet Excel. Vous pouvez cependant modifier ce comportement à l'aide du Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute.
Modification de projets du .NET Framework 3.5 pour utiliser les paramètres régionaux de l'ordinateur de l'utilisateur final
Vous pouvez déverrouiller le comportement de l'ID de paramètres régionaux pour l'ensemble du modèle objet Excel dans les projets Office qui ciblent le .NET Framework 3.5. Le Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute contrôle le comportement du modèle objet Excel dans ces projets. Par défaut, l'attribut a la valeur true, ce qui verrouille le modèle objet Excel sur le format de données de l'ID de paramètres régionaux 1033. Lorsque cet attribut a la valeur true, Visual Studio encapsule chaque objet Excel instancié par la solution dans un objet proxy qui passe toujours l'ID de paramètres régionaux 1033 à Excel. Lorsque vous affectez à l'attribut la valeur false, ces objets proxy ne sont pas utilisés et le modèle objet Excel utilise les paramètres régionaux de l'utilisateur final.
Si vous choisissez d'affecter à l'attribut la valeur false, vous pouvez toujours utiliser la réflexion pour forcer des appels spécifiques vers des propriétés et méthodes Excel afin d'utiliser le format de données Anglais (États-Unis) (ID de paramètres régionaux 1033). Pour plus d'informations, consultez Comment : rendre les littéraux de chaîne sécurisés du point de vue de la région dans Excel à l'aide de la réflexion.
Notes
Si vous affectez à l'attribut la valeur false et si tous les utilisateurs finaux ont des paramètres régionaux autres que Anglais (États-Unis), ces utilisateurs peuvent être confrontés à un comportement inattendu de votre solution.
Pour déverrouiller le modèle objet, affectez au Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute enregistré dans le fichier AssemblyInfo.vb ou AssemblyInfo.cs de votre projet la valeur false.
<Assembly: ExcelLocale1033(False)>
[assembly: ExcelLocale1033(false)]
Notes
Étant donné que le Visual Studio Tools pour Office Runtime encapsule tous les objets Excel natifs dans un objet proxy lorsque Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute a la valeur true, il se peut que vous constatiez un ralentissement dans certaines opérations qui impliquent des objets Excel natifs. Dans ces cas, vous pouvez améliorer les performances en utilisant la méthode Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Unwrap(System.Object) pour obtenir l'objet Excel sans le proxy et effectuez ensuite l'opération utilisant cet objet. Dans ce cas, vous devez être conscient que l'objet retourné par Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Unwrap(System.Object) utilise l'ID de paramètres régionaux du thread actuel, et non l'ID de paramètres régionaux 1033.
Voir aussi
Tâches
Comment : localiser des solutions Excel
Concepts
Extension des métadonnées à l'aide des attributs
Vue d'ensemble de Visual Studio Tools pour Office Runtime