Help: Projet VBA

Help: Projet VBA - VB/VBA/VBS - Programmation

Marsh Posté le 23-05-2010 à 22:39:09    

Salut tout le monde,  
 
je dois rendre un projet de gestion de portefeuille dans 2 à 3 semaines et j'avoue que ma binôme et moi n'arrivons vraiment pas à nous en sortir !
 
http://www.master272.com/projet2009-10.pdf
 
Voilà le projet...
 
Si quelqu'un se sentait capable de m'aider, je lui en serais vraiment reconnaissant !  
 
C'est mon année qui se joue :p  
 
 
Merci d'avance !  
 
Bonne soirée !

Reply

Marsh Posté le 23-05-2010 à 22:39:09   

Reply

Marsh Posté le 23-05-2010 à 22:48:22    

tu obtiendras plus de résultat en postant ce que tu as déjà fait, et là où tu as des problèmes...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 24-05-2010 à 18:20:47    

Bin la on a bouclé la question 3.  
Par contre pour la question 4 rien n'y fait ! Toujours bloqués !

Reply

Marsh Posté le 24-05-2010 à 20:29:18    

again, ça irait mieux si tu postais ce que vous avez fait pour cette question...
 
poste le raisonnement au moins...
tu trouveras ici peu d'experts en maths financières, par contre y'a plein de gens qui maitrisent le VBA : c donc à toi de trouver l'algo, ou d'expliquer les éléments que tu as...
 
le truc c'est que la charte du forum interdit qu'on fasse l'exo à ta place, par contre on peut t'aider si t'as des soucis lié aiu VBA...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 25-05-2010 à 16:58:56    

Voila notre code alors ! En théorie cela devrait marcher mais non :( je ne comprends pas ce qui coince !!
 
Question 4  
 
Function fnBackTest() As Variant
Rem  
Rem Dim wsP As Worksheet
Rem Dim wsR As Worksheet
Rem Dim wsV As Worksheet
Rem  
Rem Dim statfnlv As Variant
Rem  
Rem Dim observ As Integer
Rem Dim nbre As Integer
Rem  
Rem Dim i As Integer
Rem Dim j As Integer
Rem Dim k As Integer
Rem Dim nbt As Integer
Rem  
Rem Dim periode As Integer
Rem  
Rem '********************************************************************************
Rem ' Préalable                                                                     *
Rem '********************************************************************************
Rem  
Rem 'Activation du classeur "Gestion de Portefeuille - Projet"
Rem ThisWorkbook.Activate
Rem  
Rem 'Affectation de la feuille de calcul "Portefeuille" à wsP
Rem Set wsP = Worksheets("portefeuille" )
Rem  
Rem 'Affectation de la feuille de calcul "Rendements" à wsR
Rem Set wsR = Worksheets("rendements" )
Rem  
Rem 'Affectation de la feuille de calcul "vol_backward" à wsV
Rem Set wsV = Worksheets("vol_backward" )
Rem  
Rem 'Calcul des valeurs observ et nbre
Rem observ = wsV.Cells(Rows.Count, 1).End(xlUp).Row - 1
Rem nbre = wsV.Cells(1, Columns.Count).End(xlToLeft).Column - 1
Rem  
Rem ReDim statfnlnv(observ, nbre)
Rem  
Rem '********************************************************************************
Rem ' mise en oeuvre                                                                 *
Rem '********************************************************************************
Rem  
Rem 'mise en oeuvre sur les différentes périodes
Rem For periode = 2 To observ
Rem   statfnlnv = fnlnv(periode)
Rem Next periode
Rem  
Rem wsP.Cells(2, 2) = statfnlnv
Rem  
Rem 'calcul de la performante effective (le rendement ???) de cette stratégie
Rem For j = 2 To nbre
Rem   For i = 2 To observ
Rem   If wsP.Cells(i, j) <> 0 Then
Rem     k = k + wsR.Cells(i, j)
Rem     nbt = nbt + 1
Rem   End If
Rem   Next i
Rem Next j
Rem  
Rem wsP.Range("A1" ).End(xlDown).Value = "performance effective"
Rem wsP.Range("A2" ).End(xlDown).Value = k / nbt
Rem  
Rem End Function
Rem  
Rem  
End Sub
 
 
question 5:
 
 
Function fnlnv(periode As Integer) As Variant
Rem 'stratégie consistant à investir uniquement en monétaire lorsque la volatilité backward est supréieur à un seuil (75%); sinon investit dans les titres avec les alphas backward les plus élevé
Rem  
Rem Dim wsV As Worksheet
Rem Dim wsAb As Worksheet
Rem  
Rem Dim sel1 As Variant
Rem Dim sel2 As Variant
Rem Dim selnumb As Variant
Rem Dim mat As Variant
Rem  
Rem Dim observ As Integer
Rem Dim nbre As Integer
Rem Dim i As Integer
Rem Dim j As Integer
Rem Dim k As Integer
Rem  
Rem Dim pos1 As Integer
Rem Dim pos2 As Integer
Rem Dim posf As Integer
Rem  
Rem Dim valref As Integer
Rem Dim nbt As Integer
Rem  
Rem '********************************************************************************
Rem ' Préalable                                                                     *
Rem '********************************************************************************
Rem  
Rem 'Activation du classeur "Gestion de Portefeuille - Projet"
Rem ThisWorkbook.Activate
Rem  
Rem 'Affectation de la feuille de calcul "vol_backward" à wsV
Rem Set wsV = Worksheets("vol_backward" )
Rem  
Rem 'Affectation de la feuille de calcul "alpha_backward" à wsAb
Rem Set wsAb = Worksheets("alpha_backward" )
Rem  
Rem 'Calcul des valeurs observ et nbre
Rem observ = wsV.Cells(Rows.Count, 1).End(xlUp).Row - 1
Rem nbre = wsV.Cells(1, Columns.Count).End(xlToLeft).Column - 1
Rem  
Rem 'redimensionnement de la matrice sel, la matrice des titres sélectionnés
Rem ReDim sel1(observ, nbre)
Rem ReDim sel2(observ, nbre)
Rem ReDim selnumb(observ, nbre)
Rem ReDim mat(observ, nbre)
Rem  
Rem '********************************************************************************
Rem ' Stratégie du portefeuille*
Rem '********************************************************************************
Rem  
Rem 'on trie la volatilité backward de l'indice de marché S&P 500
Rem For i = 2 To observ - 1
Rem    sel1(i, 1) = wsV.Cells(i, 2).Value
Rem    Next i
Rem  
Rem sel1.Sort
Rem  
Rem 'on sélectionne la valeur du 3e quartile
Rem pos1 = observ * (75 / 100)
Rem valref = Round(sel1(1, pos1)).Value
Rem  
Rem 'on trie les alphas backward les plus élevé de la période
Rem For j = 4 To nbre
Rem   sel2(periode, j) = wsAb(periode, j).Value
Rem   Next j
Rem    
Rem sel2.Sort
Rem  
Rem 'on sélectionne les 10% des titres dont l'apha backward est le plus élevé (les 3 titres dans notre cas)
Rem pos2 = nbre * (90 / 100)
Rem nbt = nbre - pos2
Rem  
Rem For k = 1 To pos2
Rem    sel2.cell(1, k).ClearContents
Rem Next k
Rem  
Rem 'on créer une matrice selnumb qui contient les positions des titres sélectionnés
Rem For i = 1 To nbt
Rem  For j = 4 To nbre
Rem   If wsAb(periode, i) = sel2.Cells(i, j) Then
Rem   selnumb(periode, i) = j
Rem   End If
Rem  Next j
Rem Next i
Rem  
Rem 'on va investir uniquement en monétaire lorsque la volatilité backward est supréieur à un seuil (75%); sinon investit dans les titres avec les alphas backward les plus élevé
Rem ' supposons notre portefeuille est égale à 1
Rem  
Rem If wsV.Cells(periode, 1).Value >= valref.Value Then
Rem    mat(periode, 3) = 1
Rem    mat(periode, 2) = 0
Rem    For i = 4 To nbre
Rem      mat(periode, i) = 0
Rem      Next i
Rem Else
Rem    For i = 2 To nbre
Rem      mat(periode, i) = 0
Rem      Next i
Rem    For j = 1 To nbt
Rem      posf = selnumb(periode, j)
Rem      If mat(periode, posf) = posf Then
Rem      mat(periode, posf) = (1 / nbt)
Rem      End If
Rem    Next j
Rem End If
Rem  
Rem 'Report des dates dans la 1ère colonne de la matrice sel
Rem mat(periode, 1) = ThisWorkbook.wsV.Cells(periode, 1)
Rem  
Rem fnlnv = mat
Rem  
Rem End Function
Rem  
Rem  
End Sub
 
 
 
Voilà, j'ai codé ça pour les deux questions mais ça coince je n'arrive pas à comprendre pourquoi...Bref c'est la crise !  
 
Merci ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed