{Résolu + bon tutoriel by Galopin}Fonctionnement bouton et var public

{Résolu + bon tutoriel by Galopin}Fonctionnement bouton et var public - VB/VBA/VBS - Programmation

Marsh Posté le 28-07-2006 à 16:58:55    

Bonjour, ne riez pas je suis à bout. Je tente desespérément à pouvoir traduire mes msgbox en anglais ou en français.
 
Pour cela j'avais dans l'idée de lancer un userform au début de mon programme pour choisir le langage puis selon le choix de l'utilisateur envoyer une variable pour déterminer ce choix.
 
Oui mais là je bloque, aucun moyen avec ça de récupérer une variable et de pouvoir séléctionner le texte qui va être diffusé. En plus aucun moyen de faire autre chose,le programme reste figer sur l'userform quand elle est en modal et l'userform est ignoré en modeless.
 
Pitié help  :(  
 
ça :  
Private Sub CommandButton1_Click()
End Sub
 
Private Sub CommandButton2_Click()
End Sub


Message édité par zephyron1 le 31-07-2006 à 10:18:23
Reply

Marsh Posté le 28-07-2006 à 16:58:55   

Reply

Marsh Posté le 28-07-2006 à 18:41:08    

en stockant la valeur dans une cellule et en faisant un switch de cette valeur avec 2 textes différents ca marcherait pas ?

Reply

Marsh Posté le 28-07-2006 à 19:55:07    

Bonjour,
une 'tite démo qui fait ça.
A+

Reply

Marsh Posté le 29-07-2006 à 03:53:19    

Bonjour,
perplexe ?
 
Je vais essayer d'expliquer...
Peu importe la manière dont le choix est fait ou modifié :  
Si l'utilisateur choisi le français nous dirons mavariable CHOIX = 0
Si l'utilisateur choisi l'anglais nous dirons mavariable CHOIX = 1
Si l'utilisateur choisi le chinois nous dirons mavariable CHOIX = 2
 
La variable CHOIX est déclarée dans Module1 en tête de module avant toute macro :
 
Public CHOIX as Byte
 
Déclarée Publique cette variable est accessible en tout point de l'application (y compris depuis un USF)
 
Private Sub CommandButton1_Click()
CHOIX = 0
End Sub
 
Private Sub CommandButton2_Click()
CHOIX = 1
End Sub

 
La totalité des MsgBox est géré par une fonction (à paramètre) : cMsg
 
Pour le reste la confection du programme ne s'intéresse pas à la langue choisie.
 
Situation 1 :
MsgBox cMsg(1)
 
Situation 2 :
MsgBox cMsg(2)
 
Et la Function cMsg() renvoie le string en Français ou en anglais selon le CHOIX
 

Code :
  1. Function cMsg(i%) As String
  2. i = i + CHOIX * 100
  3. Select Case i
  4. Case 1: r = "1er message en francais"
  5. Case 2: r = "2àme message en français"
  6. Case 101: r = "1st English msg"
  7. Case 102: r = "2nd English msg"
  8. Case 201: r = "Je ne connais pas le chinois !"
  9. Case 202: r = "2ème msg en chinois..."
  10. End Select
  11. cMsg = r
  12. End Function


 
Remarquer la première ligne :
i = i + CHOIX * 100
 
Cette ligne s'occupe de la traduction éventuelle selon une équivalence facile à gérer.
 
Nota : si les msg sont nombreux on écrira :
i = i + CHOIX * 1000 ( ou 10000... )
 
Non, non c'est pas de l'ironie car :
Nota2 : Cette fonction permet aussi de gérer toute l'application :
Si d'entrée de jeux l'utilisateur à choisi l'Anglais, vous pouvez choisir de traduire le texte (String) de vos Formulaires ou de vos feuilles de calcul dans sa langue !
Dans certains cas celà peut se révéler interressant.
 
A+

Message cité 1 fois
Message édité par galopin01 le 29-07-2006 à 03:57:48
Reply

Marsh Posté le 31-07-2006 à 10:16:35    

galopin01 a écrit :

Bonjour,
perplexe ?
 
La variable CHOIX est déclarée dans Module1 en tête de module avant toute macro :
 
Public CHOIX as Byte


 
Non pas du tout, je n'avais pas internet ce week-end. Mais merci beaucoup Galopin pour ces explications très bien formulées et claires. Je n'avais pas du tout compris comment on pouvait se servir d'une variable publique. Tu m'as fais beaucoup avancer dans mon travail et je ne te remercirai jamais assez pour ça.
Merci à toi aussi jpcheck, je ne voulais surtout pas utiliser une cellule mais je suis content que tu ais essayé de m'aider. Bye.  ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed