Excel VBA paramètres d'une formule

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:
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. medestrac
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    3. medestrac
       
      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