Excel VBA paramètres d'une formule
medestrac
-
medestrac -
medestrac -
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:
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
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
1 réponse
-
Bonjour
Ta variable est "ligne" et non "i"
dans une boucle for -next l'incrémentation est automatiqu
que te renvoie ta fonction?
Michel-
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" -
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 ? -
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.
-