Excel : une macro qui ne marche qu'avec F8 !!
sabrine12
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Il m'arrive un truc bizarre avec ma macro excel : ça ne marche pas quand je lance ma macro, par contre quand je fait tourner la macro pas à pas, avec F8, cela fonctionne...je suis perplexe, quelqu'un a-t-il une explication et surtout...une solution?
Merci d'avance pour votre aide !!
Il m'arrive un truc bizarre avec ma macro excel : ça ne marche pas quand je lance ma macro, par contre quand je fait tourner la macro pas à pas, avec F8, cela fonctionne...je suis perplexe, quelqu'un a-t-il une explication et surtout...une solution?
Merci d'avance pour votre aide !!
A voir également:
- Excel : une macro qui ne marche qu'avec F8 !!
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
4 réponses
Bonjour,
Ca serait bien de mettre un peu plus de détail parce là sans boule de cristal c'est difficile... :-)
Met la macro ou le morceau concerné et explique ce qui ne fonctionne pas
eric
Ca serait bien de mettre un peu plus de détail parce là sans boule de cristal c'est difficile... :-)
Met la macro ou le morceau concerné et explique ce qui ne fonctionne pas
eric
Oui , bien sur, mais je ne vois vraiment pas où ça coince alors je me demandais si cela arrivait souvent que la macro passe sur un certain passage du code, sauf quand on l'execute pas à pas. Je te donne le morceau de macro qui ne passe pas ( ce qui est en gras), dis moi si tu as besoin de plus ( ou de moins!) de precisions...
Sub macro_eur(j)
'Sheets("MDSI_COB_E")
plaged1 = 0
nbindice = 0
plagef1 = 0
expiry1 = 0
plaged2 = 0
plagef2 = 0
linge1 = 0
indice = Feuil12.Range("A" & j)
test = 0
For i = 1 To Sheets("MDSI_COB_E").Range("D2").End(xlDown).Row
If Sheets("MDSI_COB_E").Range("D" & i).Value = indice Then
test = 1
End If
Next i
If test = 1 Then
'définir la plage de cellules correpondant à l'indice
plaged1 = Application.WorksheetFunction.Match(indice, Sheets("MDSI_COB_E").Range("D:D"), 0)
nbindice = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("D:D"), indice)
plagef1 = plaged1 + nbindice - 1
'trouver la plus petite expiry
expiry1 = Application.WorksheetFunction.Min(Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1))
plaged2 = Application.WorksheetFunction.Match(expiry1, Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1), 0)
plaged2 = plaged2 + plaged1 - 1
nbexpiry1 = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1), expiry1)
plagef2 = plaged2 + nbexpiry1 - 1
'trouver le relative strike le plus proche de 1 pour cette expiry
minrs = 0
For k = plaged2 To plagef2
If Abs(1 - minrs) > Abs(1 - Sheets("MDSI_COB_E").Range("G" & k).Value) Then
minrs = Sheets("MDSI_COB_E").Range("G" & k).Value
End If
Next k
ligne1 = Application.WorksheetFunction.Match(minrs, Sheets("MDSI_COB_E").Range("G" & plaged2 & ":G" & plagef2), 0)
ligne1 = ligne1 + plaged2 - 1
'ligne1 = Application.WorksheetFunction.Match(aplication.WorksheetFunction.Min(aplication.WorksheetFunction.Abs(1 - Sheets("MDSI_COB_E").Range("C" & plaged2 & ":L" & plagef2))), Abs(1 - Sheets("MDSI_COB_E").Range("C" & plaged2 & ":L" & plagef2)), 0)
'alimenter la feuille d'analyse avec les valeurs trouvées
'relatice_strike
Feuil12.Range("F" & j).Value = Sheets("MDSI_COB_E").Range("G" & ligne1).Value
'absolute_strike
Feuil12.Range("E" & j).Value = Sheets("MDSI_COB_E").Range("H" & ligne1).Value
'time_to_expiry
Feuil12.Range("G" & j).Value = Sheets("MDSI_COB_E").Range("F" & ligne1).Value
'implied_volatility
Feuil12.Range("J" & j).Value = Sheets("MDSI_COB_E").Range("J" & ligne1).Value
'trouver la 2ème plus petite expiry
If Cells(plagef2, 4) = indice Then
expiry2 = Application.WorksheetFunction.Min(Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1))
plaged3 = Application.WorksheetFunction.Match(expiry2, Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1), 0)
plaged3 = plagef2 + 1 + plaged3 - 1
nbexpiry2 = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1), expiry2)
plagef3 = plagef2 + 1 + nbexpiry2 - 2
'trouver le relative strike le plus proche de 1 pour cette expiry
min2rs = 0
For l = plaged3 To plagef3
If Abs(1 - min2rs) > Abs(1 - Sheets("MDSI_COB_E").Range("G" & l).Value) Then
min2rs = Sheets("MDSI_COB_E").Range("G" & l).Value
End If
Next l
ligne2 = Application.WorksheetFunction.Match(min2rs, Sheets("MDSI_COB_E").Range("G" & plaged3 & ":G" & plagef3), 0)
ligne2 = ligne2 + plaged3 - 1
'alimenter la feuille d'analyse avec les valeurs trouvées
'relatice_strike
Feuil12.Range("F" & j + 1).Value = Sheets("MDSI_COB_E").Range("G" & ligne2).Value
'time_to_expiry
Feuil12.Range("G" & j + 1).Value = Sheets("MDSI_COB_E").Range("F" & ligne2).Value
'implied_volatility
Feuil12.Range("J" & j + 1).Value = Sheets("MDSI_COB_E").Range("J" & ligne2).Value
End If
End If
End Sub
Sub macro_eur(j)
'Sheets("MDSI_COB_E")
plaged1 = 0
nbindice = 0
plagef1 = 0
expiry1 = 0
plaged2 = 0
plagef2 = 0
linge1 = 0
indice = Feuil12.Range("A" & j)
test = 0
For i = 1 To Sheets("MDSI_COB_E").Range("D2").End(xlDown).Row
If Sheets("MDSI_COB_E").Range("D" & i).Value = indice Then
test = 1
End If
Next i
If test = 1 Then
'définir la plage de cellules correpondant à l'indice
plaged1 = Application.WorksheetFunction.Match(indice, Sheets("MDSI_COB_E").Range("D:D"), 0)
nbindice = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("D:D"), indice)
plagef1 = plaged1 + nbindice - 1
'trouver la plus petite expiry
expiry1 = Application.WorksheetFunction.Min(Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1))
plaged2 = Application.WorksheetFunction.Match(expiry1, Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1), 0)
plaged2 = plaged2 + plaged1 - 1
nbexpiry1 = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("F" & plaged1 & ":F" & plagef1), expiry1)
plagef2 = plaged2 + nbexpiry1 - 1
'trouver le relative strike le plus proche de 1 pour cette expiry
minrs = 0
For k = plaged2 To plagef2
If Abs(1 - minrs) > Abs(1 - Sheets("MDSI_COB_E").Range("G" & k).Value) Then
minrs = Sheets("MDSI_COB_E").Range("G" & k).Value
End If
Next k
ligne1 = Application.WorksheetFunction.Match(minrs, Sheets("MDSI_COB_E").Range("G" & plaged2 & ":G" & plagef2), 0)
ligne1 = ligne1 + plaged2 - 1
'ligne1 = Application.WorksheetFunction.Match(aplication.WorksheetFunction.Min(aplication.WorksheetFunction.Abs(1 - Sheets("MDSI_COB_E").Range("C" & plaged2 & ":L" & plagef2))), Abs(1 - Sheets("MDSI_COB_E").Range("C" & plaged2 & ":L" & plagef2)), 0)
'alimenter la feuille d'analyse avec les valeurs trouvées
'relatice_strike
Feuil12.Range("F" & j).Value = Sheets("MDSI_COB_E").Range("G" & ligne1).Value
'absolute_strike
Feuil12.Range("E" & j).Value = Sheets("MDSI_COB_E").Range("H" & ligne1).Value
'time_to_expiry
Feuil12.Range("G" & j).Value = Sheets("MDSI_COB_E").Range("F" & ligne1).Value
'implied_volatility
Feuil12.Range("J" & j).Value = Sheets("MDSI_COB_E").Range("J" & ligne1).Value
'trouver la 2ème plus petite expiry
If Cells(plagef2, 4) = indice Then
expiry2 = Application.WorksheetFunction.Min(Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1))
plaged3 = Application.WorksheetFunction.Match(expiry2, Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1), 0)
plaged3 = plagef2 + 1 + plaged3 - 1
nbexpiry2 = Application.WorksheetFunction.CountIf(Sheets("MDSI_COB_E").Range("F" & plagef2 + 1 & ":F" & plagef1), expiry2)
plagef3 = plagef2 + 1 + nbexpiry2 - 2
'trouver le relative strike le plus proche de 1 pour cette expiry
min2rs = 0
For l = plaged3 To plagef3
If Abs(1 - min2rs) > Abs(1 - Sheets("MDSI_COB_E").Range("G" & l).Value) Then
min2rs = Sheets("MDSI_COB_E").Range("G" & l).Value
End If
Next l
ligne2 = Application.WorksheetFunction.Match(min2rs, Sheets("MDSI_COB_E").Range("G" & plaged3 & ":G" & plagef3), 0)
ligne2 = ligne2 + plaged3 - 1
'alimenter la feuille d'analyse avec les valeurs trouvées
'relatice_strike
Feuil12.Range("F" & j + 1).Value = Sheets("MDSI_COB_E").Range("G" & ligne2).Value
'time_to_expiry
Feuil12.Range("G" & j + 1).Value = Sheets("MDSI_COB_E").Range("F" & ligne2).Value
'implied_volatility
Feuil12.Range("J" & j + 1).Value = Sheets("MDSI_COB_E").Range("J" & ligne2).Value
End If
End If
End Sub