Boucle For Imbriquées
Bonjour,
Vous trouverez en piece jointe mon fichier sur lequel je travaille. J'ai en fait un fichier ou je cherche a calculer desecart de prix récuperer sur bloomberg en rapport avec les indices boursiers. Voici le code
Sub Cop_coll()
Sheets("Composants").Select
Range("C8:C256").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets("Datas").Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, transpose:=True
Range("A2").Select
Sheets("Composants").Select
Range("C8").Select
Application.CutCopyMode = False
End Sub
Sub RecupData()
'
' Recup datas
'
Var2 = (Cells(2, Columns.Count).End(xlToLeft).Column)
y = 0
Z = 0
'y variable pour décallage de la formule de 5
'z variable pour que la prise en compte du ticker soit de 1 a 1
For x = 1 To Var2
Sheets("Datas").Range(Sheets("Datas").Cells(3, 1), Sheets("Datas").Cells(3, 1)).Offset(0, y).FormulaR1C1 = "=BDH(R[-1]C[" & Z & "],R1C1:R1C3,R1C7,R1C10)"
y = y + 5
Z = Z - 4
Next x
End Sub
Sub Average()
'Calcul volatilité intraday
Var = (Cells(2, Columns.Count).End(xlToLeft).Column * 6) + 1
Var2 = Sheets("Datas").Range(Cells(3, 1), Cells(3, 1).End(xlDown)).Count
y = 0
Z = 0
For x = 1 To Var
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(0, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
For i = 1 To Var2
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(Z, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
Z = Z + 1
Next i
y = y + 5
Next x
End Sub
Concernant la dernière partie avec les boucles imbriquées, pourriez vous me dire pourquoi ma boucle For i=1 to Var2 fonctionne pour la première colonne que je souhaite remplir avec cette boucle et pas les autres ? Merci
Salut Nane18, slt le Forum,
Tout simplement parceque le „i“ que t‘incrementes manque dans ta formule
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(Z, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
Hello
alors désolé mais là je suis bloqué sur mon excel du coup je ne peux pas ouvrir ton fichier pour le moment
en revanche je n ecrirai pas cela de cette facon
For i = 1 To Var2
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(Z, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
Z = Z + 1
Next i
For i = 1 to var2
for = 1 to var2? ' à voir selon le nombre de repetition possible
sheets("Datas").cells(i,Z).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
next
Next
Test cela un peu dans le genre et je te reviens quand mon excel sera débloqué
Bonjour m3ellem1, bonjour whereisbryan,
Concernant l'incrémentation du i, si tu regarde ma première boucle, je n'ai pas non plus incrémenté x et ma boucle fonctionne ... Je ne sais donc pas comment l'incrémenté
Et concernant la deuxième solution j'essai de suite et je te reviens mais je pensais être quasiment obligé d'imbriquées les deux boucles ... je test et je te fais un retour.
Merci de votre aide en tout cas.
Ton code ne fonctionne pas, je pense qu'il en manque des partie car même a la lecture je ne vois pas deux variable pour les deux boucles ... Je te laisse regardé ça. Merci
bon je comprends pas tout dans ta facon d'ecrire mais j ai fait un truc qui fonctionne
Attention à la variable x je ne l ai pas changé parce que je n ai pas compris ton code entierement
Sub Average()
'Calcul volatilité intraday
Var = (Cells(2, Columns.Count).End(xlToLeft).Column * 6) + 1
Var2 = Sheets("Datas").Range("A3").End(xlDown).Row
y = 5
Z = 0
For x = 1 To Var
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(0, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
For i = 1 To Var2
Sheets("Datas").Cells(i, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
Z = Z + 1
Next i
y = y + 5
Next x
End Sub
Merci de votre aide j'ai trouvé une solution grace a vous. Effectivement mon code n'est pas très claire je suis débutant
Sub Average()
'Calcul volatilité intraday
Var = (Cells(2, Columns.Count).End(xlToLeft).Column * 6)
Var2 = Sheets("Datas").Range(Cells(3, 1), Cells(3, 1).End(xlDown)).Count
y = 0
Z = 0
For x = 1 To Var
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(0, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
For i = 1 To Var2
Sheets("Datas").Range(Sheets("Datas").Cells(3, 5), Sheets("Datas").Cells(3, 5)).Offset(i, y).FormulaR1C1 = "=IFERROR(RC[-3]/RC[-2]-1,"""")"
Next i
y = y + 5
Next x
End Sub