Boucle For Imbriquées

Y compris Power BI, Power Query et toute autre question en lien avec Excel
N
Nane18
Membre habitué
Membre habitué
Messages : 69
Inscrit le : 5 juillet 2019
Version d'Excel : 2013

Message par Nane18 » 11 juillet 2019, 15:57

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
Calcul volatilité Indice test.xlsm
(756.88 Kio) Téléchargé 2 fois
m
m3ellem1
Membre impliqué
Membre impliqué
Messages : 1'821
Appréciations reçues : 163
Inscrit le : 18 décembre 2018
Version d'Excel : 2016

Message par m3ellem1 » 11 juillet 2019, 16:18

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,"""")"
À partir d'hier, j'ai décidé de ne plus expliquer les solutions proposées et de ne plus répondre aux MP!
w
whereisbryan
Membre habitué
Membre habitué
Messages : 145
Inscrit le : 4 janvier 2018
Version d'Excel : 2016 FR

Message par whereisbryan » 11 juillet 2019, 16:21

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é
N
Nane18
Membre habitué
Membre habitué
Messages : 69
Inscrit le : 5 juillet 2019
Version d'Excel : 2013

Message par Nane18 » 11 juillet 2019, 16:25

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é :mrgreen:

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.
N
Nane18
Membre habitué
Membre habitué
Messages : 69
Inscrit le : 5 juillet 2019
Version d'Excel : 2013

Message par Nane18 » 11 juillet 2019, 16:32

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 :lole:
w
whereisbryan
Membre habitué
Membre habitué
Messages : 145
Inscrit le : 4 janvier 2018
Version d'Excel : 2016 FR

Message par whereisbryan » 11 juillet 2019, 16:58

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
N
Nane18
Membre habitué
Membre habitué
Messages : 69
Inscrit le : 5 juillet 2019
Version d'Excel : 2013

Message par Nane18 » 11 juillet 2019, 17:34

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 :lole: En tout cas merci a vous ;)

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message