Boucles vba

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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     

    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
    1. matthieu34
       

      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