[R] Écrire une formule excel sans se soucier de la langue

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

[R] Écrire une formule excel sans se soucier de la langue  

#1

Message par TommyDDR »

Bonjour à tous !

J'ai besoin de votre aide, j'ai fait un script qui écrit dans un excel, notamment des formules, mais excel à ce fâcheux défaut d'avoir traduit les formules en français.

Donc un programme qui fait un
_Excel_RangeWrite($oWorkbook, "Test", '=IF(A1>0;"Coucou";"")', 'A2')
fonctionnera très bien sur un PC avec un excel en anglais, mais n'écrira rien dans la cellule sur un PC avec un excel en français.

Même problème avec le séparateur de décimal "." (anglais) "," (français) suivant ce qui est configuré dans windows.

Si quelqu'un à une solution (autre que de parser tous les noms de fonction suivant la langue...) je suis preneur !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Écrire une formule excel sans se soucier de la langue

#2

Message par walkson »

Bonjour Tommy
En VBA, j'ai cette formule Range("A6").Formula = "=IF(A1>0,""AAA"",""BBB"")"
et j'obtiens sur la cellule A6 =SI(A1>0;"AAA";"BBB")
Donc la traduction est automatique
Sinon il y a la solution de déterminer la langue et de modifier le texte en fonction (laborieux !) avec
Function aa()
MsgBox (Application.LanguageSettings.LanguageID(msoLanguageIDUI)) '1036 francais
End Function
Const msoLanguageIDUI = 2
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Écrire une formule excel sans se soucier de la langue

#3

Message par walkson »

Je suis déçu de ma proposition car lancé d'autoit, il n'y a aucune traduction. Sauf erreur de ma part, il faut passer avec du VBA
Le moyen le plus simple est de créer un fichier BAS
Attribute VB_Name = "Modulenouveau"
Sub laMacro1()
Range("A7").Formula = "=IF(A1>0,""AA"","""")"
Range("A7").Interior.Color = 65535
End Sub
Sub laMacro2()
Range("E10").Formula = "=SUM(E1:E8)"
Range("E10").Interior.Color = 65535
End Sub
Sub laMacro3()
Range("C1").Formula = "=NOW()"
Range("C1").Interior.Color = 65535
End Sub
Sub laMacro4()
Range("E11").Formula = "=POWER(E1,E2)"
Range("E11").Interior.Color = 65535
End Sub
Sub laMacro5()
Range("E12").Formula = "=ROUND(145.236,2)"
Range("E12").Interior.Color = 65535
End Sub
Sub supprimerUnModule()
    With ThisWorkbook.VBProject.VBComponents
        .Remove .Item("Modulenouveau")
    End With
End Sub
et de l'importer dans le classeur excel puis de lancer les macros par autoit (le module est détruit à la fin)
#include <Excel.au3>
Local $oExcel = _Excel_Open()
$oWorkbook = _Excel_BookNew($oExcel)
$oExcel.Range("A1").Value = 1
For $i = 1 To 8
$oExcel.Cells($i,5).Value = 1 + $i
Next
$oWorkbook.VBProject.VBComponents.Import(@DesktopDir & "\module.bas")
$oExcel.Run("laMacro1")
$oExcel.Run("laMacro2")
$oExcel.Run("laMacro3")
$oExcel.Run("laMacro4")
$oExcel.Run("laMacro5")
$oExcel.Run("supprimerUnModule")
$oExcel.Columns("C:C").EntireColumn.AutoFit
Toutes les fonctions sont traduites en français dans mon cas

Une chose importante que j'oublie, pour que $oWorkbook.VBProject.VBComponents.Import(@DesktopDir & "\module.bas") fonctionne il faut
Visual basic For Application Extensibility 5.3 activé dans visual basic (outils=>références)
et Options (dans Excel)=> centre de gestion de la confidentialité => parametre du centre de gestion => parametre des macros => Faire confiance au projet Visual Basic
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Écrire une formule excel sans se soucier de la langue

#4

Message par TommyDDR »

Merci pour vos réponses, malheureusement c'est un programme que je partage et le but est de ne pas toucher aux options (sinon je leur dirais juste de passer en anglais 😀).

Je crois que je ne vais pas avoir d'autres choix que de détecter la langue d'excel (si quelqu'un l'a déjà fait, je vous écoute !) Et de parser les formules avant écriture. 😞
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Écrire une formule excel sans se soucier de la langue

#5

Message par walkson »

MsgBox (0,"",$oExcel.Application.LanguageSettings.LanguageID(2)) ;1036 pour le francais de France :D
Voir https://excel-malin.com/tutoriels/vba-t ... nd_article
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Écrire une formule excel sans se soucier de la langue

#6

Message par TommyDDR »

Merci <3
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre