Excel VBA paramètres d'une formule

Fermé
medestrac - 19 avril 2012 à 08:41
 medestrac - 19 avril 2012 à 11:31
Bonjour,

J'ai un fichier Excel avec en colonne B des dates et en colonne C une numéro d'étape (associée à la date).
Il existe une fonction particulière qui s'écrit dans une cellule sous la forme
"=MaFonction(C2, B2, B3)"
Avec en C2 le numéro d'étape, en B2 la date associée, en B3 la date de la prochaine étape.
Je cherche à utiliser cette fonction en VBA dans une boucle de ce style:
For ligne = 1 To FinTableau
    'Je met ma formule en cellule D2
    Range("D2").Formula = "=MaFonction(cells(i,3), cells(i,2), cells(i+1,2))"
    'J'incrémente le compteur de l'étape correspondante
    compteur(Cells(i, 3)) = compteur(Cells(i, 3)) + Range("D2").Value
Next ligne


Forcément, si ça fonctionnait comme ça, ce serait trop simple.
Quelqu'un peut m'expliquer comment je peux m'y prendre, svp?

Merci d'avance

A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 19/04/2012 à 08:58
Bonjour

Ta variable est "ligne" et non "i"

dans une boucle for -next l'incrémentation est automatiqu

que te renvoie ta fonction?
Michel
0
Ouais, désolé j'ai mis le code à l'arrache, en exemple.
Ma fonction me renvoie un nombre.
La question est surtout: comment intégrer des variables du code VBA dans une formule contenue dans une cellule du classeur? C'est un peu comme si je cherchais à faire:
nombre1 = Range("A1")
nombre2 = Range("A2")
'Ce que je veux faire:
Range("A3").Formula = "=nombre1 - nombre2"
'Ce qu'il faut faire pour que ça marche
Range("A3").Formula = " =A1-A2"
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
19 avril 2012 à 11:09
j'ai mis le code à l'arrache à éviter ou alors sois très précis ou met un extrait du classeur en pièce jointe sur
https://www.cjoint.com/


Beaucoup de trucs que je ne pige pas...

Tu écris toujours le résultat en D2 ?
Pourquoi écrire une formule En D2 plutôt que le résultat ?
Ta fonction te renvoie la différence de Date(etape +1)-date(etape)?
compteur: ques aco ?
0
La fonction en question provient d'un add-in d'Excel qui me permet de consulter des données depuis un serveur. En l'occurence j'ai donc des dates, aevc des numéros d'étapes correspondantes, et ma fonction me renvoit le volume cumulé entre deux dates. Cette formule ne fait donc pas parti des formules de base d'Excel, et n'est bien sûr pas du tout connue de VBA. Ma seule solution est de l'utiliser en la tapant dans une cellule, puis en récupérant la valeur par
valeur=range("D2").value

Je souhaite récupérer le volume total de chaque étape; je suis donc cette démarche:
j'identifie le numéro d'étape de la ligne
je tape la formule en D2, puis je récupère la valeur
Pour avoir le volume total, je dois incrémenter un "compteur d'étape" avec la valeur
Je passe à la ligne suivante.
En arrivant à la fin, je dois avoir autant de compteur que d'étapes différentes, chacun me renvoyant le volume total passé par étape.

Pour la raison de l'add-in Excel, je ne peux pas envoyer de fichier en exemple, mais j'espère avoir été plus clair.
0