Private Sub CBnEValider_Click()
TVLE(1, 3) = ValeurTBx(Me.TBxCPUHT, vbCurrency)
TVLE(1, 7) = ValeurTBx(Me.TBxERéfBL)
TVLE(1, 8) = ValeurTBx(Me.TBxEQte, vbDouble)
TVLE(1, 9) = Me.CBxEemplacement.Text
TVLE(1, 10) = ValeurTBx(Me.TBxERemarque)
If LCouE = 0 Then
CLsE.ValeursVers TVLE
CLsE.Lignes.Add.Range.Resize(, 10).Value = TVLE
CLsE.Actualiser
Set DicI = DicILBxStock()
Else
CLsE.Lignes(LCouE).Range.Resize(, 10).Value = TVLE '10=nombre de colonnes contenant des constantes
End If
End Sub
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
Private Sub CLsA_Résultat(Lignes() As Long)
Dim TDon(), TLBx(), Ldon As Long, LLBx As Long, C As Long
If UBound(Lignes) = 1 Then
LCouA = Lignes(1)
TVLA = CLsA.Lignes(LCouA).Range.Value
GarnirArticle
Else
TLA = Lignes
TDon = CLsA.PlgTablo.Value
ReDim TLBx(1 To UBound(TLA), 1 To 20)
'LLBx = DicI
'For C = 1 To 5: TLBx(LLBx, C) = TDon(Ldon, C): Next C, LLBx
'LBxStock.List = DicI
If DicI.Exists(TVLA(1, 1)) Then LBxStock.List = DicI(TVLA(1, 1)) Else LBxStock.Clear
End If
End Sub
Private Sub CLsA_Résultat(Lignes() As Long)
If UBound(Lignes) > 1 Then 'Exit Sub
LCouA = Lignes(1)
TVLA = CLsA.Lignes(LCouA).Range.Value
GarnirArticle
Else
TLA = Lignes
ReDim TLBx(1 To UBound(TLA), 1 To 20)
Set DicI = DicILBxStock()
If DicI.Exists(TVLA(1, 1)) Then LBxStock.List = DicI(TVLA(1, 1)) Else LBxStock.Clear
End If
End Sub
Private Sub CLsA_Résultat(Lignes() As Long)
If UBound(Lignes) > 1 Then Exit Sub ' On sort tout de suite s'il y a plusieurs lignes
LCouA = Lignes(1)
TVLA = CLsA.Lignes(LCouA).Range.Value
GarnirArticle
If DicI.Exists(TVLA(1, 1)) Then LBxStock.List = DicI(TVLA(1, 1)) Else LBxStock.Clear
End Sub
Function DicELBxStockE() As Dictionary 'Dictionnaire pour listbox Suivis emplacement
Dim TR(), RefArt As SsGr, DsgnArticle As String, Emplac As SsGr, LR As Long, TypMvt As SsGr, Détail
Set DicELBxStockE = New Dictionary
For Each Emplac In Gigogne(WshSuivES, 1, 9, 5) 'Définition des colonnes de classement et regroupements (réf, emplacement, mouvement)
ReDim TR(1 To Emplac.Count, 1 To 3)
LR = 0
For Each RefArt In Emplac.Co ' Pour chaque SsGr d'article de l'emplacement
LR = LR + 1 ' Nouvelle ligne résultante (Incrémente le numéro de ligne du tableau dans lequel on écrit).
TR(LR, 1) = RefArt.Id
For Each TypMvt In RefArt.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, RefArt
DicELBxStockE.Add Emplac.Id, TR: Next Emplac
End Function