Excel VBA - Menu Items

Résolu
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 4 janv. 2008 à 14:10
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 7 janv. 2008 à 09:48
Bonjour et que 2008 vous apporte ce que 2007 aura oublié de vous laisser

Je développe un outil sous Excel qui sera utilisé dans plusieurs pays européens ou Excel sera installé le plus souvent dans la langue du pays
Je dois supprimer certaines options de menu contextuel mais j'ai un petit soucis pour gérer dans différents langages
Si je liste en utilisant
   CommandBars("Cell").Controls(I).Caption j'obtiens l'intitulé en francais

Y a-t-il une codification générique de ces options ?

Merci de votre aide

 Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML

3 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 janv. 2008 à 23:58
Voici ce que j'utilise
lngLangue = Application.International(xlCountrySetting)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 janv. 2008 à 23:54
Salut JML,

Comme le Caption est créé dans ton code, il te faudra donc le modifier à l'ouverture du fichier et/ou partout où tu le définis explicitement.

Il faudrait que tu crées une feuille masquée dans laquelle tu inscris tous les Captions en colonne B avec un Index en colonne A, disons. Sous VB6 on a la possibilité d'utiliser les fichiers Ressources qui sont très utilies dans ces cas-là, mais pas sous Excel... La feuille cachée pourra quand même être utilisée de la même façon.

Tu pourrais alors te créer une Function, disons GetCaption(IndexDeMonMenu...)
Si tu as 10 Captions différents, tu auras 10 lignes de 1 à 10 en français, disons. Tu crées 10 autres lignes de 11 à 20 pour l'anglais, 21 à 30 pour l'espagnol ... Puis finalement tu utlises des constantes (0, 10, 20, ...) déclarées en Public dans un module.
Donc, dans ta Function GetCaption, tu utilises ces contantes pour inscrire le bon Caption. (Français 0....Anglais 10....Espagnol = 20....)If Langage 1 then Langue Anglais
ABC.Caption = le menu de la ligne (IndexDeMonMenu + Langue )  '1+10

Ne reste qu'à trouver un moyen de déterminer le langage à l'ouverture et définir quelle constante tu utiliseras durant la session. Tu peux regarder sous Application.International. Je m'en sers pour les versions françaises (2) et anglaises (1), mais je ne connais pas la valeur des autres langues...(?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
7 janv. 2008 à 09:48
Salut MPi,Merci mais en fait c'est ce que je voulais éviter en espèrant qu'il exisreait quelque chose dé paramètré dans VBA de la mêm fàçon que pour les standadrs Copier Copy ; Couper Cut ; Etc...
En fait j'ai éluder en donnant la correspondance Anglais/Langue utilisateur dans le Guide Utilisateur
Merci encore et merilleurs voeux pour 2008
 Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
0
Rejoignez-nous