Mettre à jour une collection (sorteddictionary)
Bonjour,
Voici mon problème :
Je dois mettre à jour chaque élément d'une collection (en fait un sorteddictionary) en fonction d'un savant calcul.
L'élément value de mon sorted dictionary est formé de la structure suivante :
Code:
1 2 3 4 5 6 7 8 9 10
|
Friend Structure Donnees
dim YearWeek as string 'Clé
dim StkIni as long
dim QteDispo as long
dim BesoinBrut as long
dim StkMin as long
dim StkMax as long
dim BesoinNet as long
End Structure |
Cette collection représente les données d'un article pour une plage de semaines (d'ou la clé YearWeek) allant de S1 à SZ
La formule de calcul de BesoinNet est la suivante (pour la semaine SN courante)
Citation:
Calculer volume = StkMin(SN) - (StkIni (S1) + SOMME(QteDispo(de S1 à SZ))) + SOMME(BesoinBrut (de S1 à SN))
Si volume > 0
BesoinNet = volume - SOMME(BesoinNet(de S1 à SN-1))
Sinon
BesoinNet = 0
Fsi
Dans un premier temps, j'alimente mon sorteddictionary en créant les enregistrements dedans pour la plage de semaine.
Après avoir inseré la dernière semaine, j'appelle la sub calcul suivante :
Citation:
Initialiser les variables locale
Parcourir la collection pour calculer SOMME(QteDispo)
Mémoriser les informations concernant S1
Pour tout les enregistrements de la collection
Calculer SommeBesoinBrut = SommeBesoinBrut + BesoinBrut(SN)
Calculer Volume = StkMin(SN) - (StkIni(S1) + SOMME(QteDispo)) + SommeBesoinBrut
Si Volume > 0
BesoinNet(SN) = Volume - TotBesNet
Sinon
BesoinNet(SN) = 0
Fsi
TotBesNet = TotBesNet + BesoinNet(SN)
FPour
Ce que j'ai traduit par le code suivant :
Code:
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 27 28 29 30 31 32 33 34 35
|
Public Sub calcul()
Dim Volume As Long
Dim Sem1 As Boolean = True
Dim RecSem1 As RecordDonnesCalcul
Dim TotQteDispo As Long = 0
Dim TotBesBrut As Long = 0
Dim TotBesNet As Long = 0
For Each RecSem As RecordDonnesCalcul In Values
TotQteDispo += RecSem.QteDispo
Next
For Each RecSem As RecordDonnesCalcul In Values
If (Sem1) Then
RecSem1 = RecSem
Sem1 = False
End If
TotBesBrut += RecSem.BesoinBrut
Volume = RecSem.Stockmin - (RecSem1.StockInitial + TotQteDispo) + TotBesBrut
If (Volume > 0) Then
RecSem.BesoinNet = Volume - TotBesNet
Else
RecSem.BesoinNet = 0
End If
TotBesNet += RecSem.BesoinNet
Next
End Sub |
Les calculs se font bien (j'ai vérifié sous débug) par contre, la collection n'est pas mise à jour (lorsque je veux récupérer les information d'une semaine, BesoinNet est toujours à zéro).
Je soupçonne que "RecSem" n'est pas un pointeur sur la "Value" courante mais une copie de celle-ci.
Ma question est la suivante :
Comment parcourir une collection en récupérant un pointeur vers l'élément "Value" courant.
Merci de votre aide.
Joël