Problèmes de variables

Problèmes de variables - VB/VBA/VBS - Programmation

Marsh Posté le 04-05-2005 à 16:35:11    

Salut!
 
J'ai un petit souci :
je dois (enfin j'aimerais) concatener deux variables qui contiennent une chaine chacune. Justque la c'est assez simple:
dim var_1 as string = "lo"  
dim var_2 as string = "l"
ma_variable_finale = var_1 & var &2
il y a "lol" dans ma_variable_finale.
Le problème maintenant est que je veux construire le nom d'une variable de cette manière. Je m'explique : il faudrai que lol soit ensuite reconnu comme un nom de variable...
Je veux faire :
labelXXXX = 'la valeur de ma_variable_finale qui est un nom de variable contenu dans un autre module'
Je ne sais pas si je suis clair...
Et puis je ne sais pas si j'utilise une bonne méthode...
Je pourrais faire autrement mais je dois rendre un logiciel qui soit très facilement modifiable et extansible (c'est en fait pour un module de langue : l'implantation est faite par : nom_var_fr ou nom nom_var_ang ==> d'ou l'utilité de faire nom_var_&langue)
en fait cela m'éviterais de faire  
select case langue
case "fr"
lbl_que_je_veux_traduire = nom_var_fr
case "ang"
lbl_que_je_veux_traduire = nom_var_ang
end select
ce qui est une syntaxe assez lourde si je dois le faire pour chaque chose affichée dans mon prog...

Reply

Marsh Posté le 04-05-2005 à 16:35:11   

Reply

Marsh Posté le 04-05-2005 à 20:43:18    

Dans ton cas il me paraît nettement plus propre de travailler avec un(des) tableau(x).


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 04-05-2005 à 21:02:45    

tu peux préciser ta pensée s'il te plaît...

Reply

Marsh Posté le 04-05-2005 à 21:06:34    

un tableau à trois colonnes. Première colonne le nom de la variable de label, deuxième colonne son contenu en Anglais, troisième colonne son contenu en Français.
 
Ainsi, pour le nom d'un label par exemple ( en FR), celui ci recevra :
lbl_titre.Caption = tbl_langues(ligne correspondant au titre, 2) si fr
lbl_titre.Caption = tbl_langues(ligne correspondant au titre, 1) si Anglais

Reply

Marsh Posté le 04-05-2005 à 21:26:05    

Peut être plus long mais qui me parait un peu plus simple :
 
Dans un module placer

Code :
  1. Public Type Text_Langues
  2. lbl_titre As String
  3. lbl_moi As String
  4. ...
  5. End Type
  6. '' On définit la chose
  7. Public TxtLng(lng) As Text_Langues
  8. '' On la paramètre
  9. TxtLng(1).lbl_titre = "Titre lbl_Titre"
  10. TxtLng(2).lbl_titre = "le meme mais en anglais"
  11. ...
  12. '' On l'initialise


 
La où tu en as besoin

Code :
  1. lbl_titre.Caption = txtlng(lng).lbl_titre


Le tout piloté comme suit (disons menu)

Code :
  1. Select Case lang_choix
  2. Case "fr"
  3. lng = 1
  4. Case "ang"
  5. lng = 2
  6. ...


 
edit : orthographe.


Message édité par knakes le 04-05-2005 à 21:26:52
Reply

Marsh Posté le 04-05-2005 à 23:37:32    

knakes a écrit :


TxtLng(1).lbl_titre = "Titre lbl_Titre"
TxtLng(2).lbl_titre = "le meme mais en anglais"


 
ça me met TxtLng(1). en souligné et me dit déclaration attendue...
le tout est dans un module Variables
 
L'idée est parfaite sinon!!!!
Ça correspond pas mal à ce que demande mon client!


Message édité par Akhesa le 04-05-2005 à 23:38:07
Reply

Marsh Posté le 05-05-2005 à 09:27:16    

J'ai oublié 2 : 3 trucs, c'est pour cela.
Revoilà le code.
 
Dans un module donc

Code :
  1. Option Explicit
  2.    
  3.      Public Const MaxLng = 5 ' On définit le nombre maximal de langues
  4.              
  5.      Public Type Text_Langues
  6.      lbl_titre As String
  7.      lbl_moi As String
  8.      '...                   ' On insère les différentes propriétés
  9.      End Type
  10.    
  11.      Public TxtLng(MaxLng) As Text_Langues ' On définit ce qui nous interesse


Dans le même module ou dans un autre, une Sub pour initialiser les langues par exemple :

Code :
  1. Sub InitLng()
  2.    
  3.      TxtLng(1).lbl_titre = "Titre lbl_Titre" 'On initialise dans une sub à part
  4.      TxtLng(2).lbl_titre = "le meme mais en anglais"
  5.    
  6.    End Sub


 
Dans une Sub Main on appelera la Sub d'initialisation par exemple via  

Code :
  1. Call InitLng ' Au démarrage, on initialise nos langues


 
Après dans notre programme, on affiche les messages désirés :

Code :
  1. lbl_titre.Caption = txtlng(lng).lbl_titre


 
Et toujours notre choix de langue.
 
Note : l'initialisation des langues peut se faire via des fichiers. En clair dans un fichier texte renommé en ce que tu veux, tu écris pour chaque ligne un massage qui devra apparaitre, puis dans ton programme, tu lui fais une boucle pour que les langues s'initialisent toutes seules au démarrage. Voilà.

Reply

Marsh Posté le 05-05-2005 à 16:14:31    

Merci!!!!!!!
C'est parfait!!!!!
Je vais rester sur la solution que tu me donne ici, pour la bonne raison que c'est beaucoup plus facilement modifiable... Mon client change d'avis tous les deux jours sur sa façon de voir les choses....
En tout cas merci pour ton aide ce fut efficace et super super utile!!!!!!!
Merci a l'équipe de ce forum!

Reply

Sujets relatifs:

Leave a Replay

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