Option Explicit
Private WithEvents CLsC As ComboBoxLiées, LCouC As Long, TVLC(), TLC() As Long, _
WithEvents CLsE As ComboBoxLiées, LCouE As Long, TVLE(), TLE() As Long, _
WithEvents CLsA As ComboBoxLiées, LCouA As Long, TVLA(), TLA() As Long,
'WithEvents CLsI As ComboBoxLiées, LCouI As Long, TVLI(), TLI() As Long
Private DicA As Dictionary, 'DicI As Dictionary
Private Sub UserForm_Initialize()
Set CLsA = New ComboBoxLiées
CLsA.Plage [TblBaseArticles]
CLsA.Add Me.CBxARéfArticle, 1, Croissant:=False
CLsA.Add Me.CBxADesArticle, 4
CLsA.CouleurSympa
CLsA.Actualiser
Set DicA = DicoSujet(CLsA.Item(CBxARéfArticle).SujetBdD)
If Not Me.ActiveControl Is FrmA Then CLsA.Stopper
Set CLsC = New ComboBoxLiées
CLsC.Plage [TblSuiviscommande]
CLsC.Add Me.CBxCRechecheRéfcommande, 1, Croissant:=False
CLsC.Add Me.CBxARéfArticle, 8
CLsC.Add Me.CBxADesArticle, 9
CLsC.CouleurSympa
CLsC.Actualiser
If Not Me.ActiveControl Is FrmC Then CLsC.Stopper
Set CLsE = New ComboBoxLiées
CLsE.Plage [TblSuivisEntreeSortis]
CLsE.Add Me.CBxARéfArticle, 1, Croissant:=False
CLsE.Add Me.CBxADesArticle, 2
CLsE.Add Me.CBxCRechecheRéfcommande, 4
CLsE.Add Me.CBxType, 5
CLsE.Add Me.CBxEDate, 6
CLsE.Add Me.CBxEemplacement, 9
CLsE.CouleurSympa
CLsE.Actualiser
If Not Me.ActiveControl Is FrmE Then CLsE.Stopper
Set DicI = DicILBxStock()
End Sub
Function DicILBxStock() As Dictionary 'Dictionnaire pour listbox Suivis Stock
Dim TR(), RefArt As SsGr, DsgnArticle As String, Emplac As SsGr, LR As Long, TypMvt As SsGr, Détail
Set DicILBxStock = New Dictionary
For Each RefArt In Gigogne(WshSuivES, 1, 9, 5) 'Définition des colonnes de classement et regroupements (réf, emplacement, mouvement)
ReDim TR(1 To RefArt.Count, 1 To 3)
LR = 0
For Each Emplac In RefArt.Co ' Pour chaque SsGr d'emplacement de l'article
LR = LR + 1 ' Nouvelle ligne résultante (Incrémente le numéro de ligne du tableau dans lequel on écrit).
TR(LR, 1) = Emplac.Id
For Each TypMvt In Emplac.Co 'Pour chaque type de mouvement de cet emplacement
Select Case TypMvt.Id 'Selon cas du type de mouvement
Case "Entrée": TR(LR, 2) = TR(LR, 2) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
Case "Réservé": TR(LR, 2) = TR(LR, 2) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
Case "Sortie": TR(LR, 2) = TR(LR, 2) - TypMvt.Somme(8) 'Cas mouvement sortie: retrait somme des quantités des lignes détail
End Select 'Fin de bloc selon cas.
For Each Détail In TypMvt.Co 'Pour chaque ligne détail contenue dans ce type de mouvement
If Not IsEmpty(Détail(10)) Then TR(LR, 3) = Détail(10) 'Si la remarque n'est pas vide elle est placée en colonne 5
Next Détail, TypMvt, Emplac
DicILBxStock.Add RefArt.Id, TR: Next RefArt
End Function