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 :
Cette collection représente les données d'un article pour une plage de semaines (d'ou la clé YearWeek) allant de S1 à SZ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
La formule de calcul de BesoinNet est la suivante (pour la semaine SN courante)
Dans un premier temps, j'alimente mon sorteddictionary en créant les enregistrements dedans pour la plage de semaine.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
Après avoir inseré la dernière semaine, j'appelle la sub calcul suivante :
Ce que j'ai traduit par le code suivant :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
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).
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
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
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
Partager