Ti sei spiegato ma sarebbe meglio usare access...
lavoro con i lotti, ho spolverato un vecchio foglio che fa (non dovrebbe fare) al caso tuo.
una macro che preleva i lotti e li azzera man mano che li usa.
è obsoleto perchè prevede solo la quantità
non ricordo se funziona: abbandonato per usare un database che gestisce come è giusto fare.
ti lascio la macro, la provi e se qualcuno più esperto riesce a modificarla bene.
rinnovo il consiglio di usare un database con linguaggio annesso.
Sub Estrailotti()
Dim VarLotti As Worksheet
Dim VarProd As Worksheet
Dim i As Long
Dim Ultimorigo As Long
Dim prelievo As Double
Dim Prelevati As String
Dim qtaLotto As Double
Set VarLotti = Worksheets("Foglio1") ' foglio elenco lotti
Set VarProd = Worksheets("Foglio2") ' foglio destinazione
prelievo = VarProd.Range("B2").Value ' cella dove si trovano le quantità richieste dal foglio2
Ultimorigo = VarLotti.Cells(VarLotti.Rows.Count, "A").End(xlUp).Row
Prelevati = ""
For i = 2 To Ultimorigo
If prelievo <= 0 Then Exit For
qtaLotto =VarLotti.Cells(i, "B").Value
If qtaLotto > 0 Then
Prelevati = Prelevati & VarLotti.Cells(i, "A").Value & " + "
If qtaLotto <= prelievo Then
' uso tutto il lotto
prelievo = prelievo - qtaLotto
VarLotti.Cells(i, "B").Value = 0
Else
' uso solo una parte
VarLotti.Cells(i, "B").Value = qtaLotto - prelievo
prelievo = 0
End If
End If
Next i
If Len(Prelevati) > 0 Then
Prelevati = Left(Prelevati, Len(Prelevati) - 3)
End If
VarProd.Range("C2").Value = Prelevati
If prelievo > 0 Then MsgBox "Quantità insufficiente: hai terminato i lotti a disposizione!", vbExclamation
End If
End Sub
usare foglio1 e foglio2 porta problemi.
ti consiglio l'uso di un database.