G
gautierbg
Guest
Bonjour à tous,
je vous joins un fichier excel avec tous les calculs qui doivent etre fait en VBA.
1ere feuille : les caluls de rendements d'une action. (ca c'est bon)
2e feuille : il faudrait calculer la moyenne des rendements, la moyenne du cours de l'action (toutes ces données étant sur la 1e feuille) et l'ecart type des rendements.
Et je galère pour cette deuxieme feuille. Je suis partis sur un truc avec des function et tout mais bon je me prend la tete.
Pouvez vous m'aider?
Merci.
Cordialement
GbG
Option Base 1
Public Plage_Rentas As Range
Sub Statistique()
Dim Resultats() As Variant
Dim ligne As Integer
Dim Feuille As Worksheet
Nbre_Actions = ThisWorkbook.Worksheets.Count - 1
ReDim Resultats(Nbre_Actions, 5)
ligne = 0
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> "Statistiques" Then
Feuille.Activate
Call Calcule_Rentas
ligne = ligne + 1
Resultats = Statistiques(Feuille, Resultats, ligne)
End If
Next Feuille
Worksheets("Statistiques").Activate
Range("A2").Select
Range(Selection, Selection.Offset(Nbre_Actions - 1, 6)).Value = Resultats
End Sub
Sub Calcule_Rentas()
Range("C3").Select
Set Plage_Rentas = Range(Selection, Selection.End(xlDown)).Offset(-1, 1)
Plage_Rentas.FormulaR1C1 = "=ln((R[1]C2) / RC2)"
MsgBox "Calculs de rendements effectués", vbInformation, "C'EST FINI ..."
End Sub
Sub Delete()
Range("C3").Select
Set Plage_Rentas = Range(Selection, Selection.End(xlDown)).Offset(-1, 1)
Plage_Rentas.Delete
End Sub
Sub del2()
Worksheets("Statistiques").Activate
Dim z As Integer
For z = 1 To 10
Cells(2, 1).Delete
Next
End Sub
Function Statistiques(Feuille, Resultats, ligne)
Resultats(ligne, 1) = Feuille.Name
Resultats(ligne, 2) = Plage_Rentas.Cells.Count
Resultats(ligne, 3) = moyennePlage(Plage_Rentas)
Resultats(ligne, 4) = WorksheetFunction.Median(Plage_Rentas)
Resultats(ligne, 5) = WorksheetFunction.StDev(Plage_Rentas)
Statistiques = Resultats
End Function
Function moyennePlage(plage As Range) As Double
Dim i As Long, compte As Long
moyennePlage = 0
compte = 0
For i = 1 To plage.Count
If (IsNumeric(plage(i).Value)) Then
moyennePlage = moyennePlage + plage(i).Value
compte = compte + 1
End If
Next
moyennePlage = moyennePlage / compte
End Function
je vous joins un fichier excel avec tous les calculs qui doivent etre fait en VBA.
1ere feuille : les caluls de rendements d'une action. (ca c'est bon)
2e feuille : il faudrait calculer la moyenne des rendements, la moyenne du cours de l'action (toutes ces données étant sur la 1e feuille) et l'ecart type des rendements.
Et je galère pour cette deuxieme feuille. Je suis partis sur un truc avec des function et tout mais bon je me prend la tete.
Pouvez vous m'aider?
Merci.
Cordialement
GbG
Option Base 1
Public Plage_Rentas As Range
Sub Statistique()
Dim Resultats() As Variant
Dim ligne As Integer
Dim Feuille As Worksheet
Nbre_Actions = ThisWorkbook.Worksheets.Count - 1
ReDim Resultats(Nbre_Actions, 5)
ligne = 0
For Each Feuille In ThisWorkbook.Worksheets
If Feuille.Name <> "Statistiques" Then
Feuille.Activate
Call Calcule_Rentas
ligne = ligne + 1
Resultats = Statistiques(Feuille, Resultats, ligne)
End If
Next Feuille
Worksheets("Statistiques").Activate
Range("A2").Select
Range(Selection, Selection.Offset(Nbre_Actions - 1, 6)).Value = Resultats
End Sub
Sub Calcule_Rentas()
Range("C3").Select
Set Plage_Rentas = Range(Selection, Selection.End(xlDown)).Offset(-1, 1)
Plage_Rentas.FormulaR1C1 = "=ln((R[1]C2) / RC2)"
MsgBox "Calculs de rendements effectués", vbInformation, "C'EST FINI ..."
End Sub
Sub Delete()
Range("C3").Select
Set Plage_Rentas = Range(Selection, Selection.End(xlDown)).Offset(-1, 1)
Plage_Rentas.Delete
End Sub
Sub del2()
Worksheets("Statistiques").Activate
Dim z As Integer
For z = 1 To 10
Cells(2, 1).Delete
Next
End Sub
Function Statistiques(Feuille, Resultats, ligne)
Resultats(ligne, 1) = Feuille.Name
Resultats(ligne, 2) = Plage_Rentas.Cells.Count
Resultats(ligne, 3) = moyennePlage(Plage_Rentas)
Resultats(ligne, 4) = WorksheetFunction.Median(Plage_Rentas)
Resultats(ligne, 5) = WorksheetFunction.StDev(Plage_Rentas)
Statistiques = Resultats
End Function
Function moyennePlage(plage As Range) As Double
Dim i As Long, compte As Long
moyennePlage = 0
compte = 0
For i = 1 To plage.Count
If (IsNumeric(plage(i).Value)) Then
moyennePlage = moyennePlage + plage(i).Value
compte = compte + 1
End If
Next
moyennePlage = moyennePlage / compte
End Function