Private Sub CBxEemplacement_change()
If DicELBxStockE.Exists(CBxEemplacement.Text) Then LBxStockE.List = DicE(CBxEemplacement.Text) Else LBxStockE.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, 9, 1, 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
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, 9, 1, 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
'TR(LR, 2) = '
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, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
Case "Réservé": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
Case "Sortie": TR(LR, 3) = TR(LR, 3) - 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
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, 9, 1, 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
TR(LR, 2) = RefArt.Co(1).Co(1)(2) 'La colonne 2: donc ça se termine par …(2, Cette ligne détail est dans la Co d'un SsGr TypMvt et c'en est le 1er membre donc : ….Co(1)(2),Or celui ci est est le 1er Co du RefArt, donc : TR(LR, 2) = RefArt.Co(1).Co(1)(2) sauf erreur. Revérifions: RefAart.Co(1): 1er TypMvt … .Co(1)(2): colonne 2 de la 1ère ligne détail.
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, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
Case "Réservé": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
Case "Sortie": TR(LR, 3) = TR(LR, 3) - 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
Sub export_Suivis_Stocks()
Dim chemin$, nom$
chemin = "F:\Projet\SL_\03_ET\03_B\Exportation"
nom = "Suivis_Stocks " & Format(Date, "mmmm yyyy") & ".xlsx"
Sheets("Suivis_Stocks").Activate
ActiveSheet.Copy
Application.ScreenUpdating = False 'xlOpenXMLWorkbook = xlsx
ActiveSheet.SaveAs Filename:=chemin & nom, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.Close True
End Sub
Dans l attenteChemin &“/”& Nom