Boucles vba
matthieu34 -
Bonjour,
Je ne parviens pas à faire comprendre à ces boucles qu'elles doivent s'exécuter en même temps .
le résultat de cette macro et que dans chaque cellule cells(i,3), il va m'exécuter pour chaque J, l'opération Application.StDev(Range(Cells(3, k), Cells(10000, k))) puis passer au i suivant .Ce que je ne veux pas .
Autrement dit pour i = 2 par exemple il va me calculer dans la même cellule
Cells(2, 3).Value = Application.StDev(Range(Cells(3, 18), Cells(10000, 18)))
Cells(2, 3).Value = Application.StDev(Range(Cells(3, 21), Cells(10000, 21)))
etc etc
=> ce qui n'a aucun intérêt d'autant plus que le résultat précèdent est écrasé à chaque fois
Ce que je souhaite c'est que i et j varie en même temps, de telle sorte que j'ai (par ex):
pour i = 2 et j = 6
et donc k = 18
Cells(2, 3).Value = Application.StDev(Range(Cells(3, 18), Cells(10000, 18)))
pour i = 3 et j = 7
et donc k = 21
Cells(3, 3).Value = Application.StDev(Range(Cells(3, 21), Cells(10000, 21)))
Merci pour votre aide !
Matthieu
Sub calcul_volatilité() Sheets("data").Select 'vol annualisée du taux sans risque (eonia/ester) Dim i As Integer Dim y As Integer For i = 2 To 32 For j = 6 To 36 k = j * 3 Cells(i, 3).Value = Application.StDev(Range(Cells(3, k), Cells(10000, k))) Next j Next i End Sub
Windows / Chrome 111.0.0.0
1 réponse
Bonjour,
Avec ce que j'ai compris.
Par contre, 2*6=12 si 3*7=21 et pour j max a 36!
Sub calcul_volatilité() Dim i As Integer Dim y As Integer Sheets("data").Select 'vol annualisée du taux sans risque (eonia/ester) J = 6 For i = 2 To 32 k = i * J Cells(i, 3).Value = Application.StDev(Range(Cells(3, k), Cells(10000, k))) J = J + 1 Next i End Sub
Bonjour et dsl pour mon retour tardif !
Un grand merci pour ton aide qui m'a permis d'avoir une autre approche .
j'ai repris ta proposition que j'ai remaniée à ma sauce pour coller à mon besoin .
Bonne journée !
Pour ceux que ça intéresse :
Sub testst()
Dim i As Integer
Dim y As Integer
Sheets("data").Select
c = 6
j = 3
For i = 2 To 32
k = (c * j)
Cells(i, 4).Value = Application.StDev(Range(Cells(3, k), Cells(10000, k)))
c = c + 1
Next i
End Sub