Bonjour chers Tous,
Ne maîtrisant pas VBA j'ai cherché et trouvé un code sur un forum (désolé je ne me souviens plus...) il convient peut être à ce que je souhaite c'est-à-dire après chaque vente de produits dans ma feuille "Facture", les sorties et stock réel (mis a jour) sont affichés au fur et à mesure pour les produits concernés dans ma feuille "ListePièces"
Pourriez-vous m'aider à l'adapter à mon fichier ci-joint svp ...
Merci
Voici le code trouvé :
Sub EnregistrerFacture()
'On enregistre sur l'historique
Set F = ActiveSheet
'On vérifie que le stock est suffisant pour honorer la facture
For Ln = 10 To 40
If Cells(Ln, "A").Value <> "" Then
Lgn = Sheets("Stock").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Cells(Ln, "A").Value, lookat:=xlWhole).Row
If Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value < Cells(Ln, "B").Value Then
MsgBox "Le stock est insuffisant pour la réf " & Cells(Ln, "A").Value
End
End If
'Sheets("Stock").Cells(Lgn, "H").Value = Sheets("Stock").Cells(Lgn, "H").Value + .Cells(Ln, "B").Value
'Sheets("Stock").Cells(Lgn, "I").Value = Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value
Else
Exit For
End If
Next Ln
'On met à jour le stock
For Ln = 10 To 40
If Cells(Ln, "A").Value <> "" Then
Lgn = Sheets("Stock").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Cells(Ln, "A").Value, lookat:=xlWhole).Row
Sheets("Stock").Cells(Lgn, "H").Value = Sheets("Stock").Cells(Lgn, "H").Value + Cells(Ln, "B").Value
Sheets("Stock").Cells(Lgn, "I").Value = Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value
If Sheets("Stock").Cells(Lgn, "G").Value <> "" Then
MsgBox "La réference " & Cells(Ln, "A").Value & " est désormais en rupture de stock.", 16
End If
Else
Exit For
End If
Next Ln
'On enregistre la facture sur la feuille Historique
'Set DocDep = ActiveSheet
With Sheets("Historique factures")
.Rows("2:2").Insert Shift:=xlDown
.Rows("2:2").ClearFormats
.Cells(2, "A").Value = .Cells(3, "A").Value + 1 'N° d'ordre
.Cells(2, "B").Value = F.Cells(2, "F").Value 'Nom du client
.Cells(2, "C").Value = F.Cells(1, "G").Value 'Date
.Cells(2, "D").Value = F.Cells(10, "G").Value 'Montant TTC
.Cells(2, "E").Value = Month(F.Cells(2, "G").Value) 'Mois
End With
Range("A10:B40").ClearContents
End Sub
Ne maîtrisant pas VBA j'ai cherché et trouvé un code sur un forum (désolé je ne me souviens plus...) il convient peut être à ce que je souhaite c'est-à-dire après chaque vente de produits dans ma feuille "Facture", les sorties et stock réel (mis a jour) sont affichés au fur et à mesure pour les produits concernés dans ma feuille "ListePièces"
Pourriez-vous m'aider à l'adapter à mon fichier ci-joint svp ...
Merci
Voici le code trouvé :
Sub EnregistrerFacture()
'On enregistre sur l'historique
Set F = ActiveSheet
'On vérifie que le stock est suffisant pour honorer la facture
For Ln = 10 To 40
If Cells(Ln, "A").Value <> "" Then
Lgn = Sheets("Stock").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Cells(Ln, "A").Value, lookat:=xlWhole).Row
If Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value < Cells(Ln, "B").Value Then
MsgBox "Le stock est insuffisant pour la réf " & Cells(Ln, "A").Value
End
End If
'Sheets("Stock").Cells(Lgn, "H").Value = Sheets("Stock").Cells(Lgn, "H").Value + .Cells(Ln, "B").Value
'Sheets("Stock").Cells(Lgn, "I").Value = Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value
Else
Exit For
End If
Next Ln
'On met à jour le stock
For Ln = 10 To 40
If Cells(Ln, "A").Value <> "" Then
Lgn = Sheets("Stock").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(Cells(Ln, "A").Value, lookat:=xlWhole).Row
Sheets("Stock").Cells(Lgn, "H").Value = Sheets("Stock").Cells(Lgn, "H").Value + Cells(Ln, "B").Value
Sheets("Stock").Cells(Lgn, "I").Value = Sheets("Stock").Cells(Lgn, "E").Value - Sheets("Stock").Cells(Lgn, "H").Value
If Sheets("Stock").Cells(Lgn, "G").Value <> "" Then
MsgBox "La réference " & Cells(Ln, "A").Value & " est désormais en rupture de stock.", 16
End If
Else
Exit For
End If
Next Ln
'On enregistre la facture sur la feuille Historique
'Set DocDep = ActiveSheet
With Sheets("Historique factures")
.Rows("2:2").Insert Shift:=xlDown
.Rows("2:2").ClearFormats
.Cells(2, "A").Value = .Cells(3, "A").Value + 1 'N° d'ordre
.Cells(2, "B").Value = F.Cells(2, "F").Value 'Nom du client
.Cells(2, "C").Value = F.Cells(1, "G").Value 'Date
.Cells(2, "D").Value = F.Cells(10, "G").Value 'Montant TTC
.Cells(2, "E").Value = Month(F.Cells(2, "G").Value) 'Mois
End With
Range("A10:B40").ClearContents
End Sub