VBA : formule et langue d'utilisation

  • Initiateur de la discussion Initiateur de la discussion Amauty
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Amauty

Guest
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 modification par un modérateur:
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+
 
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"")"
 
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 ?
 
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+
 
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 !
 
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!
 
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à , 😉
 
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
 
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!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
9
Affichages
830
S
  • Question Question
Microsoft 365 comparaison texte
Réponses
5
Affichages
796
S
Réponses
2
Affichages
847
B
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
948
bd.afaf
B
J
Réponses
22
Affichages
3 K
jui42
J
S
Réponses
0
Affichages
785
Solo_Wing75
S
M
Réponses
11
Affichages
3 K
Réponses
4
Affichages
2 K
Réponses
8
Affichages
1 K
I
Réponses
0
Affichages
1 K
I
Retour