[déplacé VB6 -> VBA] En fonction de la langue d'excel (anglais ou francais) mes

johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010 - 30 janv. 2010 à 15:29
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010 - 1 févr. 2010 à 09:29
Bonjour à tous,

J'ai programmé une ptite macro sous VBA pour Excel. Au travail mon environnement Windows et Excel est en anglais..
Ma macro fonctionne bien

J'ai voulu tester mon fichier à la maison,où mon environnement est en francais, mes macros ne marchent plus.

Pour rentrer dans le vif su sujet, mon morceau de code qui bug est une mise en forme conditionnelle...

J'ai reussi à identifier le probleme, qui concerne les references relatives qui different selon la langue. (2h pour identifier, je pensais que la traduction se faisait de maniere automatique)

En anglais on utilise le formalisme: R[n°ligne]C[n°colonne], et en francais cela doit etre: L(n°ligne)C(n°colonne)

Or mon logiciel doit pouvoir marchait aussi bien sur un Excel en anglais qu'en francais.

Voici le morceau de code :

'Mise en forme conditionnelle des cases debit volumique et massique
Range(Cells(20, 3 + j), Cells(20, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=L(-1)C(0)=""volume"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

Ce bout de code marche bien sur mon PC à la maison (car en francais)
et celui ci dessous marche bien au travail (car en anglais)

Range(Cells(22, 3 + j), Cells(22, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=R[-3]C[0]=""mass"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

Donc ma question est donc: comment puis-je coder de facon a ce que la macro marche indifferemment de la langue d'excel?

Je tiens à preciser que j'ai besoin de garder cette aspect reference relative, car mon tableau est dynamique (ajout/suppression de colonne à le demande de l'utilisateur)

J'ai des notions en programmation (autodidacte) mais la je seche et j'ai l'impression que ca depasse mes competences!

D'avance je remercie la communauté qui j'espere pourra m'aider!
Si je ne suis pas clair, dites moi les precisions dont vous avez besoin!

Johann

8 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
30 janv. 2010 à 15:36
Bonjour,

1) et surtout : tu développes sous VBA et non sous VB6 ! fais dorénavant attention au thème choisi pour ouvrir une discussion.

2) intéresse-toi (ton aide en ligne) à la diffétence entre Formula et FormulaLocal...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010
30 janv. 2010 à 15:41
Excuse moi, je suis un programmeur du dimanche et autodidacte...
Je serais à l'avenir qe je serais en VBA et ne ferait plus l'erreur sur les forums

Je regarderais la difference entre Formula et FormulaLocal dans l'aide en ligne...

D'ordre generale je m'interesse, mais la ca fais 2h que je cherchais l'erreur, je developpe un logiciel Excel pour faire des calculs en genie chimique depuis plus d'un mois (car gros logiciel)

et deception aujourhdui quand j'ai voulu le tester chez moi! d'ou ma question car je n'ai pas envie de reperdre une semaine pour regler cette histoire de langue!

Si tu pouvais me faire un petit topo sur Formula et FormulaLocal ca serait super sympa de ta part!

Thanks
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
30 janv. 2010 à 16:23
Un to^po ?
Que veux-tu que je fasse, comme topo ? Un plagiat du topo que tu as déjà dans ton aide en ligne ?

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010
30 janv. 2010 à 16:28
Merci quand meme je me debrouillais tout seul!
l'aide de VBA ne marche pas sur mon PC de m***e

ca attendra la semaine prochaine quand je trouverais un moment au boulot!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 228
30 janv. 2010 à 16:36
Réinstalle alors Excel complètement !
Il n'est ni raisonnable ni réellement possible (même pour les plus avancés) de développer sans avoir accès à cette aide !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010
1 févr. 2010 à 08:40
J'ai enfin pu regarder au travail...
Je pense avoir saisi la difference entre les 2 formules...
Mais cela sert à "ecrire" dans une cellule Excel la formule que l'on desire.

Je ne comprends pas où je peux inserer mon formula local dans ce morceau de code:

Selection.FormatConditions.Add Type:= xlExpression, Formula1:= _
"=R[-3]C[0]=""mass"""

Comme ceci?
Selection.FormatConditions.Add Type:=xlExpression, Formula local 1: = _
"=R[-3]C[0]=""mass"""

Merci pour ce dernier coup de pouce!
0
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010
1 févr. 2010 à 08:42
Utilisez ca ne serait pas mieux?

FormulaR1C1Local
0
johann69009 Messages postés 6 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 1 février 2010
1 févr. 2010 à 09:29
Un test sur la langue d'execution?

If Application.LanguageSettings.LanguageID(msoLanguageIDExeMode) = 1033 Then

'Mise en forme conditionnelle des cases debit volumique et massique
Range(Cells(20, 3 + j), Cells(20, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=R[-1]C[0]=""volume"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

Range(Cells(22, 3 + j), Cells(22, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=R[-3]C[0]=""mass"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

Else

'Mise en forme conditionnelle des cases debit volumique et massique
Range(Cells(20, 3 + j), Cells(20, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=L(-1)C(0)=""volume"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

Range(Cells(22, 3 + j), Cells(22, 3 + j + 1)).Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=L(-3)C(0)=""mass"""
Selection.FormatConditions(1).Font.ColorIndex = 15
Selection.FormatConditions(1).Interior.ColorIndex = 15

End If
0