[Calc] Traduction en anglais de fonction en langue locale

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
Avatar de l’utilisateur
Loopingss
InconditiOOnnel
InconditiOOnnel
Messages : 783
Inscription : 17 déc. 2008 02:50

[Calc] Traduction en anglais de fonction en langue locale

Message par Loopingss »

Cette procédure permet de traduire en anglais une fonction de Calc en Langue Locale. Cette traduction est indispensable pour utiliser une fonction Calc dans une procédure Basic. Elle fonctionne avec les formules complexes.
Merci à L Godard et B Marcelly dont j'ai adapté la procédure décrite dans "Programmation OpenOffice.org2 - Macros et API, p 370 et suivantes pour pouvoir être utilisée dans n'importe quel fichier.

Code : Tout sélectionner

REM  *****  BASIC  *****

Option Explicit

Sub NomAnglaisFonctionCalc()
REM **************************************************
REM Cette procédure affiche le nom anglais d'une fonction saisie en Français
REM Pour être utilisée dans n'importe quel fichier, les coordonnées de la feuille
REM et de la cellule où a été saisie la formule en langue locale sont demandées
REM Fonctionne également avec les formules composées
REM par Loopingss - 2009
REM procédure proposée pour Suprème de Code le 29/01/2009
REM **************************************************

Dim oSht as Object, oCell as Object, sFormuleF as String, sFormuleA as String
Dim sShtAdres as String, sCellAdres as String

REM Saisie des coordonnées de Feuille/Cellule où est stockée le formule à traduire
sShtAdres = InputBox("Sur quelle feuille se trouve la fonction [Ex : Feuille1] ?")
sCellAdres = InputBox("Dans quelle cellule se trouve la fonction [Ex : A12] ?")

oSht = ThisComponent.Sheets.getByName(sShtAdres) 'Accès à la Feuille
oCell = oSht.getCellRangeByName(sCellAdres) 'Accès à la cellule
sFormuleF = oCell.FormulaLocal 'Formule en langue locale
sFormuleA = oCell.Formula 'Formule en langue anglaise à utiliser dans Basic
Print "Formule locale : ", sFormuleF, spc(1)
Print "Formule anglaise : ", sFormuleA, spc(1)
End Sub
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 14:42
Contact :

[Calc] N'utilisez plus FormulaLocal

Message par bm92 »

Dans différents codages sur ce forum on remplit une cellule avec une formule en utilisant la propriété FormulaLocal. Par exemple :
maCellule.FormulaLocal = "=SI(A2<100;A2;ARRONDI(A2;1))"
Cette méthode a l'avantage d'être simple, car on exprime la formule telle qu'elle apparaît sur le tableur.
L'alternative est d'utiliser la pseudo-propriété Formula, qui a l'inconvénient d'être -apparemment- en anglais.
maCellule.Formula = "=IF(A2<100;A2;ROUND(A2;1))"
En fait, Formula contient la formule exprimée de manière interne à OpenOffice. Si une fonction de la formule est un add-in, l'expression interne est assez bizarre :
maCellule.FormulaLocal = "=ALEA.ENTRE.BORNES(5;10)"
maCellule.Formula = "=com.sun.star.sheet.addin.Analysis.getRandbetween(5;10)"


Ainsi l'usage de FormulaLocal semble bien plus simple que Formula.
C'est en pratique suffisant dans un environnement français. Par contre dans un contexte multinational, où l'interface utilisateur n'est pas toujours en français, FormulaLocal ne convient pas : un nom de fonction français ne sera pas reconnu sur un Calc en langue allemande ou anglaise.

D'autre part LibreOffice a introduit depuis sa version 3.4 un nouvel onglet d'options pour satisfaire les nostalgiques d’Excel.
Options LibreOffice pour les formules
Options LibreOffice pour les formules
Le menu Outils > Options > LibreOffice Calc > Formule offre les réglages suivants :
  • Choix de la formule :
    • Calc A1 : adressage classique
    • Excel A1 : adressage différent pour une ligne entière (13:13) ou une colonne entière (A:A)
    • Excel L1C1 : adressage relatif ou absolu en numéro de ligne et de colonne
  • Coche : utiliser les noms de fonction anglais
  • Choix du séparateur pour :
    • arguments de fonction
    • colonne de matrice
    • ligne de matrice
Ceci concerne l’interface utilisateur, en apparence. Mais la conséquence est qu'un choix de ces options par l'utilisateur a un impact sur FormulaLocal.
Par exemple, si l'utilisateur a configuré son Calc pour afficher les noms anglais des fonctions, FormulaLocal devra être rempli avec des noms anglais de fonction.

Suivant l'option activée, la lecture de FormulaLocal peut donner un résultat différent de ce qu'on a écrit!
Par exemple si l'utilisateur a configuré son Calc pour utiliser le repérage Excel A1, on peut écrire FormulalLocal avec la syntaxe Excel A1 ou la syntaxe Calc, mais la relecture de FormulaLocal renverra toujours la syntaxe ExcelA1.

Si un utilisateur a réglé son Environnement Linguistique sur Français(Suisse), ceci implique l'affichage du point décimal (au lieu de la virgule). Alors, LibreOffice rectifie automatiquement le séparateur d'arguments de fonction pour imposer la virgule (à la place du point-virgule). Pour écrire FormulaLocal on devra toujours utiliser le point-virgule, alors que la lecture de FormulaLocal renverra une virgule comme séparateur.

Les options d'affichage ont des effets assez bizarres. Essayez donc diverses options avec ce document, vous serez surpris.
FormulaLocal_LibO.ods
Document pour essais
(12.99 Kio) Téléchargé 614 fois
Conclusion
Comme Formula est la représentation interne à Calc de la formule, sa syntaxe est indépendante des options d'affichage que peut choisir l'utilisateur. Une formule écrite par programme avec Formula restera toujours valable, alors qu'une formule écrite avec FormulaLocal peut n'être valide que pour une configuration donnée de l'interface utilisateur.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25142
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Calc] N'utilisez plus FormulaLocal

Message par Dude »

Répondre