cs_JuS
Messages postés121Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention20 mars 2009
-
1 déc. 2006 à 11:15
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
1 déc. 2006 à 16:35
Bonjour,
J'ai une macro qui selon la langue de l'utilisateur écrit un texte en anglais ou en français.
Plutôt que faire un test sur la langue je voudrais savoir s'il est possible de faire un eval de ma variable. Par exemple j'ai trois variables :
TEXTE_EN = "English"
TEXTE_FR = "Français"
Language = "FR"
Je voudrais pouvoir faire un truc dans ce genre pour qu'il m'affiche "Français" dans la cellule A1 (cela ne fonctionne pas, j'ai testé )
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 déc. 2006 à 11:59
salut,
eval est bien une fonction excel oui, pour "3+2" par exemple.
par contre çà ne fonctionnera pas pour construire une chaîne. (c'est pas du PHP )
donc la réponse : beh non, pas possible ni en VBA ni en VB6
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 1 déc. 2006 à 13:41
PCPT : Je ne connaissais pas cette fonction, et pire, je ne la trouve pas dans ma version d'Excel (je suis en Excel 2003 pourtant). Où la trouve-t-on ?
Pour répondre à la question, en VBA, il existe la méthode Evaluate par contre (documentée dans l'aide), à vue de nez, je dirais que ça correspond à ton besoin mais j'ai du mal à me rendre compte en fait.
Sinon, il y a peut être moyen de biaiser :
Ton cas c'est ceci :
TEXTE_EN = "English"
TEXTE_FR = "Français"
Language = "FR"
On pourrait envisager de le résoudre de la façon suivante, à condition que tu sois dans un user form :
Dim Language As String
Dim Ctrl As Control
Language = "FR"
For Each Ctrl In UserForm1.Controls
If Ctrl.Name = "TEXTE_" & Language Then
Worksheets("Feuil1").Range("A1").Value = Ctrl.Value
End If
Next
Ca fonctionne, par contre, je n'arrive pas à faire la même chose avec des objets textes directement dans une feuille Excel, la ligne
For Each Ctrl In Worksheets("Feuil1").Controls
refuse d'être reconnue, alors qu'à priori, la syntaxe est bonne.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 déc. 2006 à 13:50
salut Molenn,
je ne sais pas "où" on la trouve ni quelles sont toutes ses possibilités puisque je ne fais pas de VBA... mais elle existe
et pour ton exemple, çà peut marcher uniquement parce que tu prends le nom des objets, or c'est impossible avec des variables
(sauf secret spécifique à VBA mais j'en doute)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 1 déc. 2006 à 14:30
Aaah, je n'avais pas tilté que TEXTE_EN et TEXTE_FR étaient des variables !! Je lis TEXTE, j'imagine tout de suite Zone de texte
Vu comme ça, je comprends mieux à présent à quoi peut servir une fonction de type Eval ^^
Sinon, je ne cherche pas "où" on trouve EVAL dans le VBA, je cherche cette fonction dans EXCEL ^^ ... Moi, dans une cellule, quand je tape "=EVAL()", la fonction n'est pas connue. Ce qui est dommage, parce qu'en fait, si une fonction existe par le biais d'une formule Excel toute faite, on peut l'utiliser telle quelle en VBA, pas besoin de s'embêter à écrire de code.