Monsieur Excel
Pour tout savoir faire sur Excel !

26 janvier 2012

Internationalisation d’un modèle

Comme nous l’avons vu il y a quatre jours avec nos calculs de ratios, certaines formules – en particulier celles qui utilisent des arguments texte – peuvent ne plus fonctionner normalement quand on passe d’un Excel en français à un Excel en anglais, ou vice versa.

J’ai souvent été confronté – lors de mes créations de modèles pour des multinationales – à de tels problèmes d’origine linguistique, ou à d’autres encore pour des clients dont le parc était constitué à la fois de PC sous Windows et de Macs. En effet, le passage d’un modèle sous Windows à un modèle sous Mac, ou vice versa, n’est pas une opération neutre et peut aboutir à des dysfonctionnements.

Il y a donc un certain nombre de précautions à prendre si l’on veut que le même modèle Excel marche tout aussi bien sous Windows que sous Mac, ou en français comme en anglais,…

Nous allons voir aujourd’hui comment remplacer la formule de la cellule C2 – dans le modèle présenté il y a quatre jours – par une formule qui fonctionne indifféremment avec un Excel en français ou en anglais.

Nous voyons en D1 le contenu de la formule en C1. Cette formule utilise le nom « Langue », dont nous voyons la définition dans la fenêtre « Modifier le nom ».

L’astuce repose dans l’évaluation de 1*"0.0". On a en effet, depuis une vingtaine d’années le droit dans Excel de multiplier un nombre par un texte représentant un nombre. Dans les premières versions d’Excel, il fallait utiliser 1*cnum("0.0")

Remarque – Il est aisé de vérifier le bon fonctionnement de cette formule. Il suffit pour cela de passer dans Windows par le panneau de configuration, de lancer le programme « Options régionales et linguistiques », et de remplacer la virgule de décimalisation par le point. Vous vous retrouvez dans ce cas avec un Excel « comme en anglais », et la cellule C2 affiche alors « 0.5 :1 » !

3 Commentaire(s):

  • Je suppose que ceci donne le même résultat (sans l'intermédiaire "Langue") :
    =TEXTE($B$1/$B$2;SI(ESTNUM(0,1);"0,0";"0.0"))&":1"

    By Anonymous cduigou, sur 4:52 PM  

  • Certes, cette solution est plus compacte.

    La raison pour laquelle j'ai proposé de passer par le nom "Langue" est que cela permet d'avoir dans la feuille une formule plus compréhensible.

    En outre, si l'on a plusieurs endroits dans le modèle où il faut élaborer une formule internationale, on ne fait le test qu'une fois, dans la définition du nom.

    By Blogger Hervé Thiriez, sur 9:57 AM  

  • Bonjour,

    Je vous lis depuis déjà longtemps et vous remercie beaucoup pour votre énorme travail et son apport à la communauté des utilisateurs Excel.

    Concernant ces problèmes d'internationalisation, il me semble qu'il est plus simple et surtout plus pur de travailler avec les 2 séparateurs (décimal et milliers) définis au niveau OS. Les formules que je propose ci-dessous vous permettent en effet de couvrir le cas d'utilisateurs qui auraient choisis des séparateurs barbares !

    Decimal : =STXT(CTXT(0;1);2;1)
    Milliers : =STXT(CTXT(1000;1);2;1)

    J'ai cherché un moyen simple de calculer, dans Excel, le séparateur de liste (; par défaut sur OS français) sans succès.
    Si vous avez une solution je suis preneur :)

    Cordialement

    By Blogger Bruno C., sur 2:58 AM  

Enregistrer un commentaire

<< Accueil