Karim92

Karim92

XLDnaute Nouveau
Bonjour à tous je suis nouveau sur le site.

Je suis étudiant en Master 2 donc n'étant pas un expert j'espère trouver de l'aide sur certaines problématiques vba et bien sûr vous aider si j'en ai l'opportunité.

A bientôt.
 

Karim92

XLDnaute Nouveau
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 ! :)
 

chalahmed

XLDnaute Nouveau
Bonjour,

J'ai vraiment besoin de l'aide. sur les fueilles que j'ai pu créer la macro marche correctement, par contre arrivant à une autre feuille j'essaye d'excuter la macro, un message d'erreur s'affiche.

Merci de votre réponse
 

Pièces jointes

  • Capturee.PNG
    Capturee.PNG
    36.2 KB · Affichages: 0

Statistiques des forums

Discussions
312 389
Messages
2 087 935
Membres
103 678
dernier inscrit
bibitm