Inventaire stock LEGO
Bonjour,
Je suis en train de réfléchir à un fichier excel qui permettra de comparer 2 listes et d'en générer une 3ème.
Explication :
1/ Je rentre l'ensemble des pièces de mon stock LEGO dans la feuille 2 (Stock) du classeur.
2/ J'importe un fichier CSV dans la feuille 3 (SET Inventory) à l'aide du bouton "Import" de la feuille 1 (Menu).
Ce fichier CSV contiendra l'ensemble des pièces du SET (boîte LEGO du commerce) que je veux construire.
L'importation devra commencer à partir de la ligne 2 à cause des entêtes de colonnes.
3/ Je clique sur le bouton "à commander" de la feuille 1 (Menu)
4/ Je vois dans la feuille 4 (à commander) les pièces que je n'ai pas en stock et qui me reste à commander.
Pour l'exemple j'ai mis en surbrillance les lignes 23,31 et 49 dans la feuille "SET Inventory"
Ces lignes comportent des pièces que j'ai en stock.
Dans la feuille "à commander" j'ai aussi mis en surbrillance ces même lignes.
On peux constater que la Quantité "à commander" = Quantité "SET Inventory" MOINS "Quantité Stock"
Si j'ai 10 pièces en Stock et qu'il en faut 30 alors il y aura 20 dans la colonne 1 (Qty)
Par contre si j'ai 10 pièces en Stock et qu'il en faut 10 dans le SET, alors la ligne de la pièce concerné ne devra pas apparaître dans la feuille "à commander".
Inutile de faire apparaître la pièce en question sur le bon de commande avec une quantité <= à ZERO.
Voilà !
Si vous avez des idées
MERCI
Bonjour,
code pour générer la commande
Sub commande()
Dim stock As Variant
Set wss = Sheets("stock")
Set wsi = Sheets("set inventory")
Set wsc = Sheets("à commander")
dlwss = wss.Cells(Rows.Count, 2).End(xlUp).Row
dlwsi = wsi.Cells(Rows.Count, 2).End(xlUp).Row
wsc.Cells.ClearContents
wss.Rows(1).Copy wsc.Rows(1)
dlwsc = 1
Set dico = CreateObject("Scripting.Dictionary")
stock = wss.Range("A2:D" & dlwss)
For i = LBound(stock, 1) To UBound(stock, 1)
clé = stock(i, 2) & stock(i, 3)
dico.Add clé, i
Next i
With wsi
For i = 2 To dlwsi
clé = .Cells(i, 2) & .Cells(i, 3)
If dico.exists(clé) Then
n = dico.Item(clé)
If stock(n, 1) >= .Cells(i, 1) Then
stock(n, 1) = stock(n, 1) - .Cells(i, 1)
Else
qcmd = .Cells(i, 1) - stock(n, 1)
stock(n, 1) = 0
End If
Else
qcmd = .Cells(i, 1)
End If
If qcmd <> 0 Then
dlwsc = dlwsc + 1
wsc.Cells(dlwsc, 1) = qcmd
wsc.Cells(dlwsc, 2) = .Cells(i, 2)
wsc.Cells(dlwsc, 3) = .Cells(i, 3)
wsc.Cells(dlwsc, 4) = .Cells(i, 4)
End If
Next i
End With
End SubBonjour,
Merci à tous.
je vais tester ça ce soir !
Par contre j'ai oublié de préciser que le colonne D (Description) ne doit pas rentrer en compte dans la comparaison des TABLES.
La description exacte peut parfois varier d'un SET LEGO à un autre contrairement au Partnumber de la colonne B et la couleur colonne C.
Merci encore
Sébastien