Bonjour,

j'ai un petit soucis pour créer mon algo de maxdrawdown. Le max drawdown en finance c'est la plus grosse chute (en %) qu'ait connu un portefeuille sur une période donnée.
J'ai donc donc une colonne L (L est la 12eme lettre de l'alphabet) sur laquelle s'étendent, à partir de la ligne 2 de mon excel, une multitude cellules ayant différentes valeurs.
Je dois procéder de la sorte:
1) Trouver la cellule ayant la plus faible valeur de ma colonne (via une boucle par exemple). On la nommera "min"
2) Faire une autre boucle allant de la première cellule de ma colonne jusqu'à cette même cellule déterminée précédemment
3) Trouver via cette dernière boucle la cellule ayant la valeur la plus grande valeur comprise entre la première cellule de ma colonne et la cellule ayant la plus faible valeur de ma colonne. On nommera cette cellule "max".
4) Appliquer le Maximum DrawDown, à savoir une variable "MDD" qui soit égale à (min-max)/min
5) Le tout, SANS APPLIQUER DE FONCTION du style Application.max ou même End(xlUp).Row, uniquement avec de simples boucles.
6) Mon algo:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub MDD()
 
Dim i As Integer
Dim ligne As Integer
Dim min As Long
Dim max As Long
Dim f As Range
 
Set f = ThisWorkbook.Worksheets("Données de marché")
 
i = 2
While (f.Cells(i, 14).Value <> "")
 
    If f.Cells(i + 1, 14).Value < f.Cells(i, 14).Value Then
        min = f.Cells(i + 1, 14).Value
        i = i + 1
    Else
        i = i + 1.  // le problème c'est que si je tombe sur une cellule de valeur 4 qui est inférieure à celle du dessus
    Next.           // de valeur 5, mais qu'il existe une valeur min précédente inférieure à 4, alors ça marche pas
 
Wend.    
 
// de ce même problème je n'arrive pas non plus à trouver le max
 
MDD = (min-max)/min
End Sub
Si quelqu'un peut m'aider, je l'en remercie infiniment par avance