Evaluation d'une expression en vba

kiorys

XLDnaute Nouveau
salut le forum,

je me casse les dents sur le truc suivant qui consiste a remplir un tableau.
----------------
sub pipo

Dim Tabl(1 to 5) as string
dim ctr as byte
Const Co1 = "\"
Const Co2 = "/"
Const Co3 = ":"
Const Co4 = "*"
Const Co5 = """"

for i = 1 to 5
Tabl(i)= evaluate ("Co" & i)
next i

end sub
---------------------

mais j'obtiens une erreur 2029
qq'un pourrait-il me donner une soluce ??

merci

Kiorys
 

fred65200

XLDnaute Impliqué
Re : Evaluation d'une expression en vba

si tu veux juste remplir un tableau

Code:
Sub pipo()
Dim Tabl As Variant
Tabl = Array("\", "/", ":", "*", """")
'Dim ctr As Byte
'Const Co1 = "\"
'Const Co2 = "/"
'Const Co3 = ":"
'Const Co4 = "*"
'Const Co5 = """"

For i = 0 To UBound(Tabl)
Debug.Print i, Tabl(i)
Next i

End Sub

sinon je ne sais pas pour evaluate
 

kiorys

XLDnaute Nouveau
Re : Evaluation d'une expression en vba

merci Fred pour ta reponse mais en fait il ne s'agit pas vraiment de remplir un tableau mais surtout de travailler sur des noms de variable avec une boucle.
Donc j'aurais besoin de savoir comment evaluer l'expression ("Co" & i) avec i variable afin qu'excel me retourne les valeurs contenues par Co1, Co2, ...
 

fred65200

XLDnaute Impliqué
Re : Evaluation d'une expression en vba

Je redoutais ta réponse.
J'ai déjà été confronté a ce problème et n'est pas trouvé de solution à ma portée
Si tu trouve je suis preneur

je fais une recherche sur les pistes que j'avais et te les communique si je les retrouve
Salutations
 

Spitnolan08

XLDnaute Barbatruc
Re : Evaluation d'une expression en vba

Bonsoir,

Et en contournant le problème ainsi, ça ne te va pas ?
Code:
Public Const Mavar = "\,/,:,*,"""""

Sub Test()
MaConst = Split(Mavar, ",")
For i = 0 To UBound(MaConst)
    Range("A1").Offset(i, 0) = MaConst(i)
Next
End Sub
Code du à Catrice

Cordialement
 
Dernière édition:

kiorys

XLDnaute Nouveau
Re : Evaluation d'une expression en vba

Merci Spitnolan,
En fait ta solution me simplifie pas mal de choses. excellent cette instruction SPLIT !

Ceci dit je suis tout de meme curieux de savoir comment boucler sur des noms de variables en evaluant les expressions du type ("Co" & i) . J'avais deja reussi a le faire il y a qq années mais pas moyen de mettre la main sur le bout de code que j'avais ecrit. Grr... Merci Fred de t'etre interessé a la question.
Si qq'un d'autre a une soluce... merci
 

Spitnolan08

XLDnaute Barbatruc
Re : Evaluation d'une expression en vba

Re,
je suis tout de même curieux de savoir comment boucler sur des noms de variables en évaluant les expressions du type ("Co" & i)
Je n'ai pas réussi à le faire fonctionner c'est pourquoi j'ai cherché à contourner le problème en restant au plus près de ta question initiale.

Mais j'ai une question qui me turlupine depuis longtemps : A quoi sert la déclaration de Constantes ? Dans quel cas particulier ce type d'engin peut il servir ? Car même si ton problème est certainement transposable à des variables classiques, ces dernières peuvent tout à fait remplir le même rôle qu'une constante... Non?

Cordialement
 

kiorys

XLDnaute Nouveau
Re : Evaluation d'une expression en vba

Mais j'ai une question qui me turlupine depuis longtemps : A quoi sert la déclaration de Constantes ? Dans quel cas particulier ce type d'engin peut il servir ? Car même si ton problème est certainement transposable à des variables classiques, ces dernières peuvent tout à fait remplir le même rôle qu'une constante... Non?

En fait le code que j'ai fourni au debut ne servait que d'exemple pour mon probleme; mais pas pour ma macro. car en effet quel est l'interet de transposer des constantes sous forme de variables par la suite ... ?

Le bout de macro que je cherchais a ecrire consistait a rechercher les caracteres speciaux (ceux contenus dans mes constantes Co1, Co2...) a l'interieur de n chaines de caracteres contenus dans les cellules A1, A2, ... An, et de les remplacer par un underscore "_"

j'imbriquais ainsi 2 boucle FOR:
------------------------
for ctr1 = 1 to n
for ctr2 = 1 to 5
if instr(cells(ctr1,1), evaluate ("Co" & ctr2))<>0 then
.....
.....
next ctr2
next ctr1
--------------------------
voila pour le pourquoi
en tous cas je te confirme que le code que tu m'as fourni est bcp + pratique.

Quid de l'evaluation d'une expression en bva ??
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 779
Messages
2 092 046
Membres
105 168
dernier inscrit
makari69