Boucles vba

Fermé
matthieu34 - Modifié le 16 mars 2023 à 14:35
 matthieu34 - 24 mars 2023 à 17:11

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

f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 1 705
18 mars 2023 à 10:59

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
1

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

0