Pour bien débuter, j'ai un petit soucis sur une macro vba. Je cherche à trouver le numéro de ligne d'une variable (cette dernière n'étant pas fixe) afin d'exporter la ligne contenant cette variable dans un autre onglet.
Je vous joins le code et l'endroit où ça ne marche pas.
Sub filtreRY()
'
' filtreRY Macro
'
Sheets("Investible Universe").Activate
Dim FinalRow%, i%, l
Dim yield As Double
Application.ScreenUpdating = False
' ActiveSheet.Range("$A$1:$Z$549").AutoFilter Field:=20, Criteria1:="=0,2", _
' Operator:=xlOr, Criteria2:="=#N/A N/A"
Set ytm = Rows("1:1").Find("YTM", LookAt:=xlWhole, MatchCase:=False)
Col_YTM = ytm.Column
Set ProbDef3Y = Rows("1:1").Find("Proba de défaut 3Y", LookAt:=xlWhole, MatchCase:=False)
Col_ProbDef3Y = ProbDef3Y.Column
Set Recovery_Yield = Rows("1:1").Find("Recovery Yield", LookAt:=xlWhole, MatchCase:=False)
Col_Recovery_Yield = Recovery_Yield.Column
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
'on trie les valeurs sur la colonne Recevery Yield afin de faire tourner la macro et sélectionner les meilleurs YTM
ActiveWorkbook.Worksheets("Investible Universe").AutoFilter.Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Investible Universe").AutoFilter.Sort.SortFields. _
Add2 Key:=Range("T1:T549"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Investible Universe").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
For i = 2 To FinalRow
If Cells(i, Col_Recovery_Yield).Value <= 0.2 Then
Rows(i).Select
Selection.Cut
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
i = i - 1
End If
If Cells(i, Col_Recovery_Yield) = "#N/A N/A" Then
Rows(i).Select
Selection.Cut
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
i = i - 1
End If
Next i
For i = 2 To FinalRow
yield = Cells(i, Col_YTM)
While Cells(i + 1, Col_ProbDef3Y) = Cells(i, Col_ProbDef3Y)
yield = Cells(i, Col_YTM)
If Cells(i + 1, Col_YTM) > Cells(i, Col_YTM) Then yield = Cells(i + 1, Col_YTM)
i = i + 1
Wend
############ Cette ligne ne fonctionne pas##############
Je cherche à renvoyer la ligne du "yield" trouvé précédemment. Je ne veux pas passer par une boucle If qui serait longue. Surtout que je vais exporter un nombre important de lignes. J'ai essayé plusieurs solutions trouvées sur internet mais rien ne fonctionnent (Erreur 424 ou 91)
'Set l = Range("W2:W600").Cells.Find(yield, LookIn:=xlValues, LookAt:=xlWhole).Rows
l = yield.Row
Rows(l).Select
Selection.Copy
With Sheets("Portefeuille final")
Rows("2:2").Select
Selection.Insert Shift:=xlDown
End With
Next i
MsgBox ("Macro finie")
End Sub
Merci d'avance à tous !