VBA : formule et langue d'utilisation

Amauty

XLDnaute Junior
Bonjour à tous,

Je suis en train de programmer une macro qui va être utilisé sur des Excel en espagnol et sur des excel en français. Voici le problème que je rencontre avec cette partie de macro :

selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ET(gauche($C3;10)=""TEST"")"

selection.FormatConditions(selection.FormatConditions.Count).SetFirstPriority
With selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With

Sur ma machine en français, cela fonctionne très bien et la mise en forme conditionnelle de mes cellules s'effectue. Cependant sur un excel en espagnol, ne reconnaissant pas les formules Et et gauche, la mise en forme conditionnelle ne fonctionne pas.

Quelqu'un a-t-il une solution à ce problème ?

Merci par avance

Amaury
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : VBA : formule et langue d'utilisation

Bonjour, peut-être une idée :
avec l'enregistreur de macro, récupérer la version syntaxique espagnole de la formule.
Puis, dans ton code, utiliser
Application.LanguageSettings.LanguageID(msoLanguageIDInstall)
et en fonction de la réponse, utiliser soit la syntaxe française soit la syntaxe espagnole.
Un exemple de code pour récupérer la langue système adapté d'un exemple trouvé ici :
Code:
Sub Malang()
Select Case _
Application.LanguageSettings.LanguageID _
(msoLanguageIDInstall)
Case 1036
MsgBox "Français"
Case 1033
MsgBox "Englais"
Case 3082
MsgBox "Espagnol"
Case Else
MsgBox "Ni Anglais , ni Français, ni Espagnol"
End Select
End Sub
A+
 

Amauty

XLDnaute Junior
Re : VBA : formule et langue d'utilisation

Merci david pour ta réponse, même si elle ne fonctionne pas sur mon classeur, j'ai pu trouver grâce à tes indications la solution suivante :
x = Application.International(xlCountryCode)
If x = 33 Then 'ou 33 est la version française
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=ET(gauche($C3;10)=""ALTA VISTA"")"
selection.FormatConditions(selection.FormatConditions.Count).SetFirstPriority
With selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With
selection.FormatConditions(1).StopIfTrue = False
Else ' donc pour toutes les autres langues, c'est une version espagnole...
selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=Y(izquierda($C3;10)=""ALTA VISTA"")"
 

Amauty

XLDnaute Junior
Re : VBA : formule et langue d'utilisation

Le message
""Ni Anglais , ni Français, ni Espagnol"
apparaît alors que je travaille sur une machine française.
De plus je ne comprends pas la différence entre :
Application.LanguageSettings.LanguageID _
(msoLanguageIDInstall)
et
Application.International(xlCountryCode)

Autre question que je me pose (je suis très novice en VBA), comment puis-je voir le résultat d'une instruction directement sur VBA ?
 

david84

XLDnaute Barbatruc
Re : VBA : formule et langue d'utilisation

Re
teste cette macro et dis-nous ce qu'elle te ramène comme valeur :
Code:
Sub test()
MsgBox Application.LanguageSettings.LanguageID(msoLanguageIDInstall)
End Sub

Pour voir la différence entre les 2, souligne chaque propriété et appuie sur la touche F1 du clavier : tu auras les explications
Application.LanguageSettings : cette propriété renvoie l'objet LanguageSettings qui contient des informations sur les paramètres de langue de Microsoft Excel.
Application.International : cette propriété renvoie l'objet LanguageSettings qui contient des informations sur les paramètres de langue de Microsoft Excel.

Autre question que je me pose (je suis très novice en VBA), comment puis-je voir le résultat d'une instruction directement sur VBA ?
pas sûr d'avoir compris ton attente...en utilisant une MsgBox comme dand mon code ou un debug.Print (voir l'aide Excel touche F1 ou faire une recherche sur le Net).
A+
 

Amauty

XLDnaute Junior
Re : VBA : formule et langue d'utilisation

teste cette macro et dis-nous ce qu'elle te ramène comme valeur :
Code :
Sub test()
MsgBox Application.LanguageSettings.LanguageID(msoLanguageIDInstall)
End Sub

==> 1031

Merci pour les indications suivantes !
 

casper64

XLDnaute Nouveau
Re : VBA : formule et langue d'utilisation

Bonsoir à tous,
J'utilise une version française d'Excel et je rencontre le problème suivant dans une macro crée sous VBA :

Pour imprimer un document PDF, je lance une macro qui dans son contenu a besoin du nom de l’imprimante :
Nom_impr = "PDFCreator sur Ne0" & Port & ":"

Parfois, pour des personnes qui ont des versions Excel en anglais ou en allemand, le mot sur doit être remplacé respectivement par on ou auf

Existe t’il donc un moyen pour que ces mots changent automatiquement en fonction de la version d’Excel ?
Au mieux, Excel détecterai la langue du logiciel et choisirai le mot adéquat.
Au pire, on peut aller chercher le bon mot dans une cellule d'excel mais je ne sais pas comment l'intégrer dans Nom_impr

Je vous remercie de votre aide à tous!
 

Staple1600

XLDnaute Barbatruc
Re : VBA : formule et langue d'utilisation

Bonsoir à tous

casper64
Il est d'usage de créer sa propre discussion pour poser sa question
(voir la charte du forum)

Quoique avec l'utilisation de Split, ce ne sera pas cette fois-ci peut-être pas nécessaire ;))
Code:
Sub a()
Nom_impr = "PDFCreator sur Ne0"
MsgBox Split(Nom_impr)(UBound(Split(Nom_impr)))
Nom_impr = "PDFCreator on Ne0"
MsgBox Split(Nom_impr)(UBound(Split(Nom_impr)))
End Sub
Tu vois ce que je veux dire par là , ;)
 

Docmarti

XLDnaute Occasionnel
Re : VBA : formule et langue d'utilisation

Bonjour.

Ce code devrait fonctionner quels que soient les paramètres linguistiques régionaux.

Code:
[b1].FormulaR1C1 = "=AND(LEFT(RC3,10)=""TOTO"")"
    
f = Split(Mid([b1].FormulaLocal, 2), "(")

[b1].Formula = ""

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
   "=" & f(0) & "(" & f(1) & "($C3;10)=" & Chr(34) & "TEST" & Chr(34) & ")"

Cordialement

Docmarti
 

casper64

XLDnaute Nouveau
Re : VBA : formule et langue d'utilisation

Bonjour,
je ne comprends pas bien vos codes mais j'ai trouvé une solution en cherchant un peu sur le web.
Voici un code qui marche dans mon cas :

Sub LangCheck()

Dim lang_code As Long

lang_code = Application.LanguageSettings.LanguageID(msoLanguageIDUI)

If lang_code = 1033 Or 2057 Then ' English US, English UK
Nom_impr = "PDFCreator on Ne0" & Port & ":"
End If

If lang_code = 1031 Then ' Deutch
Nom_impr = "PDFCreator auf Ne0" & Port & ":"
End If

If lang_code = 1036 Then ' Francais
Nom_impr = "PDFCreator sur Ne0" & Port & ":"
End If

End Sub

Merci pour vos efforts et vos réponses en tout cas!
 

Statistiques des forums

Discussions
312 391
Messages
2 087 955
Membres
103 686
dernier inscrit
maykrem