contenu d'une variable i d'une fonction VBA dans excel

fgehin

XLDnaute Junior
Bonjour,

Je développe des fonctions sous VBA, donc le but est de créer un fichier de calcul sous Excel, via des lignes qui contiennent des formules. Pour certaines de ces formules, je suis amenée à faire varier une variable i entre 1 et n. Le problème est que VBA écrit la formule dans les cellules excel en indiquant "i", au lieu de la valeur que doit prendre i dans la boucle for.
Y a-t-il un moyen pour que VBA fasse prendre à i les valeurs successives de 1 à n?

Un exemple simplifié ci-dessous:

For i = 1 To 10
count = AddRow(count, "=i", nbcol)
Next i

Dans cette exemple précis, la fonction AddRow ajoute à la plage de cellule située sur la ligne n°"count",
la formule "=i" (entre les colonnes A et n°"nbcol"). Or Excel ne connaît pas cette variable i. Je voudrais qu'en ligne 1, la formule soit "=1", en ligne 2, la formule soit "=2", etc...

Y a-t-il une syntaxe particulière à respecter? Ou faut-il utiliser une autre propriété que .formula dans le code de la fonction "AddRow"?

D'avance merci pour votre aide.
 

Gurgeh

XLDnaute Occasionnel
Re : contenu d'une variable i d'une fonction VBA dans excel

Salut fgehin,

Pas sûr d'avoir tout compris, mais je pense que tu peux écrire
Code:
count = AddRow(count, "="&i, nbcol)
et que ça correspond à ce que tu veux...

Gurgeh
 

fgehin

XLDnaute Junior
Re : contenu d'une variable i d'une fonction VBA dans excel

Bonjour Gurgeh,

Merci pour ta réponse, ça marche effectivement sur l'exemple donné. Maintenant, mes formules sont juste plus compliquées. Elles font notamment appel à des cellules nommées, type "variable_i", et je voudrais faire varier ce i, dans le code précédemment décrit, entre des valeurs extrêmes.

J'ai tenté ton conseil dans ce cas de figure, avec les syntaxes suivantes:
count = AddRow(count, "="variable &i, nbcol)
count = AddRow(count, "=""variable"&i, nbcol)

Des conseils sur la syntaxe à utiliser dans ce cas particulier?

D'avance merci

Faustine
 

Gurgeh

XLDnaute Occasionnel
Re : contenu d'une variable i d'une fonction VBA dans excel

Là j'avoue que je décroche dans la compréhension (le retour de vacances est dur dur...)

Pourrais tu me mettre un fichier exemple de ce que tu voudrais obtenir à l'aide du code VBA ?

Gurgeh
 

fgehin

XLDnaute Junior
Re : contenu d'une variable i d'une fonction VBA dans excel

@Gurgeh:

Ci-joint un fichier de test. En "Sheet1" il y a les cellules nommées. La macro est sensée écrire en "sheet2".

Au niveau du code il y a :
- une fonction qui "crée" une ligne, notamment à partir d'une formule
- une procédure qui appelle la fonction en question à l'intérieur d'une boucle for.

Il y a manifestement un problème avec la syntaxe des variables. J'en ai essayé plusieurs mais aucune ne fonctionne.

@Pierrot:

Merci pour l'info, j'ai changé ça.

Merci infiniment pour votre aide d'avance
 

Pièces jointes

  • Test fonction variable.xlsm
    16.8 KB · Affichages: 32

fgehin

XLDnaute Junior
Re : contenu d'une variable i d'une fonction VBA dans excel

J'ai fait l'essai et ça ne fonctionne pas dans la formule.

Par ailleurs, il faut que la formule soit écrite dans la cellule Excel. Cad:

Revenu 1 = Volume_1*Prix_1
Revenu 2 = Volume_2*Prix_2
etc...

Il ne s'agit pas seulement d'effectuer le calcul, mais surtout que la formule soit écrite dans la cellule. Dans l'optique de faire des changements dans les variables (Prix_i et Volume_i) et que le changement se retrouve dans le calcul de revenu en Feuille 2, sans avoir à exécuter la macro à chaque fois.
 

Pierrot93

XLDnaute Barbatruc
Re : contenu d'une variable i d'une fonction VBA dans excel

Re,

regarde ceci, envoie bien la formule dans la cellule et le calcul de celle-ci est bon, à adapter, vois pas trop l'utilité d'une fonction, une simple boucle devrait suffire dans une "sub" :
Code:
Dim i As Integer
i = 9
ActiveCell.Formula = "=Volume_" & i & "*Prix_" & i
 

fgehin

XLDnaute Junior
Re : contenu d'une variable i d'une fonction VBA dans excel

Merci Pierrot! Ca marche parfaitement avec la syntaxe que tu m'as recommandée.

Effectivement, pas besoin d'une fonction sur un exemple aussi simple, mais dans le cadre d'un projet beaucoup plus complexe, ça prend tout son sens ;-).

Merci encore

Faustine
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson