Pb pour generer des portefeuilles de titres

rabdelkader Messages postés 2 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 29 juillet 2003 - 29 juil. 2003 à 14:02
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 29 juil. 2003 à 16:02
j'ai actuellement une application à développer dans le
cadre d'un stage dans une banque de gestion d'OPCVM.
Le but de l'application est de génerer toutes les possiblités de
portefeuilles contenant N titres en respectant les régles suivantes:
-la part de chaque titre est un entier et ne doit pas dépasser 10%
-la somme des parts pour tous les titre est de 100%
j'ai déjà programmé l'application en Visual Basic pour avoir tous les
portefeuilles sur des feuilles de calcul Excel.Le problème c'est que
je n'arrive pas à avoir tous les portefeuilles(car il y a des
millions).C'est la raison pour laquelle je veux la programmer sous
C,seulement je ne sais pas quoi utiliser pour enregistrer tous les
portefeuilles.
Je voulais savoir si vous pourrez me filer quelques conseils .
Je vous remercie d'avance.
je te file le progamme en visual basic:
Public N As Double
Public l As Double
Public lp As Double
Public a As Double
Public e As Double

Sub gener(i As Integer, Sa As Integer)
'gener Macro
'set f1 = Sheets("F1")
'set f2 = Sheets("F2")
'set f3 = Sheets("F3")
Worksheets(e).Select
If i <> N Then
Sap = (N - i) * 10
For j = 0 To 10
Sa = Sa + j
If (Sa + Sap > 100 And Sa < 100) Then
If (i > 1) Then
If l <> 1 Then
lp = l - 1
ep = e
End If
For p = 1 To i - 1
Worksheets(e).Cells(l, p) = Worksheets(ep).Cells(lp, p)
Next p
End If
Worksheets(e).Cells(l, i).Value = j
Call gener(i + 1, Sa)
If (l > 60000) Then
lp = l - 1
ep = e
l = 1
e = e + 1
End If
Sa = Sa - j
Else If (Sa + Sap 100 Or Sa 100) Then
a = a + 1
Worksheets(e).Cells(l, i) = j
If (Sa + Sap = 100) Then
For p = i + 1 To 12
Worksheets(e).Cells(l, p) = 10
Next p
Else
For p = i + 1 To 12
Worksheets(e).Cells(l, p) = 0
Next p
End If
For p = 1 To i
Worksheets(e).Cells(l + 1, p) = Worksheets(e).Cells(l, p)
Next p
l = l + 1
Sa = Sa - j
Else
Sa = Sa - j
End If
End If
Next j
Else
For k = 0 To 10
Sa = Sa + k
If Sa = 100 Then
a = a + 1
Worksheets(e).Cells(l, 12) = k
l = l + 1
Sa = Sa - k
Exit Sub
Else
Sa = Sa - k
End If
Next k
End If
'
End Sub

Private Sub CommandButton1_Click()

a = 0
N = 12
l = 1
e = 1
Call gener(1, 0)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

End Sub

1 réponse

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 juil. 2003 à 16:02
Tout depend de comment est represente une structure d'enregistrement "portefeuille".
Mets un:
typedef struct tagPRTFL { // portefeuille
// ici les champs
} PRTFL, *LPPRTFL;

ensuite on pourra reflechir a la maniere la + efficace en fonction des traitements a lui faire subir.
Et reporte tout cela sur cppfrance, lien en haut de page.
BruNews, ciao...
0
Rejoignez-nous