web-dev-qa-db-fra.com

Comment insérer une variable dans une formule sous VBA

Quelqu'un peut-il résoudre ce problème?

Sub test

Dim i as integer

For I = 1 to 10
   ActiveCell.Offset(0, 2).Formula = "=Sum(E15,&i&)"
Next I

End Sub
3
lcc

votre objectif réel n'est pas clair

vous voudrez peut-être commencer à former ce code

Sub test()
    Dim i As Integer

    For i = 1 To 10
       cells(i, 4).Formula = "=Sum(E" & i & ":E15)"
    Next
End Sub

et adaptez-le à vos besoins, sachant que:

  • il écrit actuellement dans les cellules "D1: D10"

    puisque cells(i, 4) référence une cellule de la 4ème colonne (c'est-à-dire: la colonne "D") 4 et i row, et nous sommes dans une boucle où i parcourt de 1 à 10

    donc si:

    • vous souhaitez référencer une colonne différente, il suffit de remplacer 4 par le bon index de colonne 

    • vous voulez référencer une ligne différente, puis remplacez simplement i par le bon index (il peut y avoir un i+2 si vous devez parcourir 1 à 10, mais commencer à écrire à partir de la ligne 3)

  • la formula écrite dans ces cellules est:

    =SUM(E1:E15) in D1,

    =SUM(E2:E15) in D2,

    ....

    =SUM(E10:E15) in D10.

    alors changez simplement "=Sum(E" & i & ":E15)" en fonction de vos besoins réels

1
user3598756

Vous êtes proche, essayez d'utiliser des esperluettes (&) pour concaténer des chaînes.

ActiveCell.Offset(0, 2).Formula = "=Sum(E15," & i & ")"

Utilisez les esperluettes entre les chaînes pour les fusionner, et non à l'intérieur des chaînes.

4
Wolfie

Vous pouvez aussi essayer ceci:

Option Explicit

Sub TestMe()

    Dim i As Long

    For i = 1 To 10
        ActiveCell.Offset(i, 2).Formula = WorksheetFunction.Sum(i, i)
    Next i

End Sub

C'est une autre façon de le faire.

0
Vityata