Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel > Forum spécial EXCEL 2007

Advertisement

Réponse
 
LinkBack Outils de la discussion
Vieux 09/06/2009, 17h25   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2009
Messages: 3
Par défaut conversion d'un string en nom de variable

Bonjour à tous,

Tout d'abord je voudrais remercier les administrateurs et modo de ce site qui est une mine d'information et qui me permet de doucement m'initier à Excel un peu plus en profondeur que =B2+1...

Voici donc ma question, j'espère que cela n'a pas été abordé précédemment:

J'ai dans une feuille excel un tableau que je parcours dans mon code vba. Le but de ma macro est de remplir une colonne de la feuille. Voici un peu le détail:

Code:
var1 = "bonjour"
var2 = "hello"
var3 = "salut"
quand je parcours mon tableau, je recois en entrée les chiffres 1, 2 ou 3
Code:
for inc = 1 To 10
   value = cell(inc,1)  %c'est ici que je recois 1, 2 ou 3
   name = "var" & value
   ???=> cell(inc,2) = name ???
Next inc
et c'està hauteur des ??? que ça se complique (j'ai volontairement simplifié mon code, mais le concept y est)
La valeur dans ma 2ème colonne est alors soit "var1", soit "var2", soit "var3", mais jamais ce que je veux soit "bonjour", "hello" ou "salut".

Donc, comment faut-il faire (si c'est possible) pour convertir un string (name) en un nom de variable pour aller rechercher la valeur de la dite variable.

j'ai essayé beaucoup d'annerie comme variable(name) ou getVariable(name) mais rien n'existe évidemment et à ce rythme j'ai pas fini

Merci d'avance de votre aide!
arnoetsoph est déconnecté   Réponse avec citation
ANNONCES
Vieux 09/06/2009, 18h11   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de Pierrot93
 
Date d'inscription: août 2006
Messages: 7 503
Par défaut Re : conversion d'un string en nom de variable

Bonjour arnoetsoph, et bienvenue parmi nous

avec ce que j'ai compris du problème, je coderais peut être ainsi :

Code:
Sub test()
Dim inc As Byte
For inc = 1 To 10
    Cells(inc, 2) = Switch(Cells(inc, 1) = 1, "bonjour", Cells(inc, 1) = 2, _
        "hello", Cells(inc, 1) = 3, "salut")
Next inc
End Sub
bonne fin d'après midi
@+
__________________
Pierrot

On se trouve toujours suffisamment intelligent, vu que c'est avec ce que l'on a qu'on juge !!!
Pierrot93 est déconnecté   Réponse avec citation
Vieux 10/06/2009, 01h24   #3 (permalink)
XLDnaute Barbatruc
 
Avatar de ROGER2327
 
Date d'inscription: octobre 2008
Messages: 2 960
Par défaut Re : conversion d'un string en nom de variable

Bonsoir
Faute d'un classeur support, on improvise :
  1. Une fonction personnalisée :
    Code:
    Function fMessage(n) As String
    Dim oMess()
       oMess = Array("", "bonjour", "hello", "salut")
       fMessage = oMess(n * (n > 0) * (n < 4))
    End Function
  2. Une procédure :
    Code:
    Sub pMessage()
    Dim oMess(), rDat As Range, oCel As Range
       oMess = Array("", "bonjour", "hello", "salut")
       If Cells(Rows.Count, 1).End(xlUp).Row > 1 Then
       Set rDat = Range([A1], Cells(Rows.Count, 1).End(xlUp)).Resize(Cells(Rows.Count, 1).End(xlUp).Row - 1, 1).Offset(1, 0)
          For Each oCel In rDat.Cells
             oCel.Offset(0, 1).Value = oMess(oCel.Value * (oCel.Value > 0) * (oCel.Value < 4))
          Next oCel
       End If
    End Sub
    qui prend le paramètre dans la colonne A (à partir de A2 pour laisser la ligne 1 aux titres) et renvoie la réponse dans la colonne B. Pour renvoyer la réponse dans la Nième colonne, modifier le paramètre oCel.Offset(0, 1) en remplaçant 1 par N - 1.
Bonne nuit !
ROGER2327
__________________
Excel 2003 (PC)
  • L'émancipation des travailleurs sera l'œuvre des travailleurs eux-mêmes.

Dernière modification par ROGER2327 ; 10/06/2009 à 01h25. Motif: Orthographe
ROGER2327 est connecté maintenant   Réponse avec citation
Vieux 10/06/2009, 16h15   #4 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2009
Messages: 3
Par défaut Re : conversion d'un string en nom de variable

Merci beaucoup de vos réponses!

Et comme souvent, je pense qu'un petit exemple vaut mieux qu'un long discours. En fait, j'ai peut-être un peu trop simplifié le problème et y mettant des chiffres; donc voici un exemple, toujours simplifié, mais plus concret de ce que je veux faire à l'aide de ma macro.

Dans la 1ere colonne, j'ai des zones du corps ayant subi une douleur et dans la 2ème colonne j'ai la date de l'accident par exemple. ma macro doit reclasser les dates dans les colonnes H,I,J et K en fonction de la zone.

Dans ma macro (classement), je parcours donc la colonne 1, récupère la valeur et j'aimerai bien que le remplissage se fasse et il faut évidemment que ce soit dynamique car je ne connais pas à l'avance les éléments de la colonne 1!

Encore une fois, merci d'avance de votre aide!
Fichiers attachés
Type de fichier : xls Classeur1.xls (32,0 Ko, 6 affichages)
arnoetsoph est déconnecté   Réponse avec citation
Vieux 10/06/2009, 16h43   #5 (permalink)
XLDnaute Nouveau
 
Date d'inscription: janvier 2009
Messages: 3
Par défaut Re : conversion d'un string en nom de variable

Et tant qu'on y est, on peut imaginer faire l'inverse:

si un élément de la colonne 1 n'est pas encore défini en tant que "..._col" (disons par exemple qu'il y a "hand" en plus) est-il possible de créer la variable hand_col? quelque chose comme createVariable("hand_col")=13 ? (faut pas rire meme si c'est farfelus comme proposition )

Merci!
arnoetsoph est déconnecté   Réponse avec citation
Vieux 13/06/2009, 22h59   #6 (permalink)
XLDnaute Occasionel
 
Date d'inscription: juillet 2008
Messages: 200
Par défaut Re : conversion d'un string en nom de variable

Bonjour,

et qcq chose comme ça ?

Code:
' a mettre 1 fois et à mettre à jour en cas d'évolution de la liste
Dim liste1()
dercol = [IV1].End(xlToLeft).Column
liste1 = [H1].Resize(1, dercol - 8 + 1).Value

' dans la boucle de parcours de A
For i = 1 To UBound(liste1)
    If pos_pain = liste1(1, i) Then Exit For
Next i
' i+7 est le n° de ta colonne
' si i> ubound(liste1) => erreur de saisie ou nouvel élément
eric
eriiiic est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Conversion Variant to String : l'indice n'appartient pas à la sélection jbballeyguier Forum Excel 1 10/03/2009 18h57
Peut-on lire chaque caractère d'un variable String dolphin Forum Excel 3 27/04/2005 19h29
Conversion de String Benjamin Forum Excel Downloads - Archives 1 10/02/2004 01h27
encore des string... coment mettre des éléments d'un tab ds un string ?? Syd Forum Excel Downloads - Archives 2 22/05/2003 13h01
String et Integer , Conversion possible ? Peutch Forum Excel Downloads - Archives 3 04/04/2003 16h23


Fuseau horaire GMT +2. Il est actuellement 01h34.


(C) 2006 Excel Downloads