H o l a: Te anexo la macro
Sub Venta()
'Por.Dante Amor
Set h1 = Sheets("factura")
Set h2 = Sheets("articulos")
'
'Validar existencias
i = 33
valida = ""
Do While h1.Cells(i, "C") <> ""
If h1.Cells(i, "C").Value <= 0 Or Not IsNumeric(h1.Cells(i, "C")) Then
valida = valida & "Fila " & i & ". No tiene un valor numérico." & vbCr
End If
If h1.Cells(i, "D").Value = "" Then
valida = valida & "Fila " & i & ". Código vacío." & vbCr
End If
If IsNumeric(h1.Cells(i, "C").Value) And h1.Cells(i, "D").Value <> "" Then
Set b = h2.Columns("B").Find(h1.Cells(i, "D").Value, lookat:=xlWhole)
If Not b Is Nothing Then
If h1.Cells(i, "C").Value > h2.Cells(b.Row, "E").Value Then
valida = valida & "Fila " & i & ". Existencias insuficientes." & vbCr
End If
Else
valida = valida & "Fila " & i & ". No existe el código." & vbCr
End If
End If
i = i + 1
If i > 59 Then Exit Do
Loop
'
If valida <> "" Then
MsgBox valida, vbCritical, "Validación de existencias"
Exit Sub
End If
'
'Actualiza existencias
i = 33
Do While h1.Cells(i, "C") <> ""
Set b = h2.Columns("B").Find(h1.Cells(i, "D").Value, lookat:=xlWhole)
If Not b Is Nothing Then
h2.Cells(b.Row, "E").Value = h2.Cells(b.Row, "E").Value - h1.Cells(i, "C").Value
End If
i = i + 1
If i > 59 Then Exit Do
Loop
MsgBox "Existencias actualizadas", vbInformation, "FACTURACIÓN"
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
Interesante Dante - Adriel Ortiz Mangia