Inventarios en Excel Parte 2 – Salida de productos y descontar del stock
PREVIO: INVENTARIOS EN EXCEL PARTE 1.2
En esta parte de nuestro Proyecto Inventarios en Excel desarrollamos un nuevo formulario que nos servirá para dar de baja productos de nuestro inventario. El formulario tendrá un buscador de productos que previamente dimos de alta en nuestro inventario. Una vez que se encuentra el producto se nos pedirá mediante un InputBox la cantidad que deseamos dar de baja del stock. En la hoja Inventario se descontará la cantidad de productos, misma que tenemos en la columna CANTIDAD. Al dar de baja el producto, también se creará un histórico de salidas en la hoja Salidas.
Tabla de Productos y tabla de Salidas
En la hoja Inventario se tienen los productos en existencia. La existencia de los productos la vemos en la columna CANTIDAD. Cuando damos de baja un producto, la cantidad se resta de CANTIDAD y en la hoja Salidas se registra el movimiento de salida guardando los datos FECHA, ID_MOVIMIENTO, CODIGO, DESCRIPCIÓN, PRECIO_UNITARIO, CANTIDAD y TOTAL.
Figura 1. Salida de productos del inventario e histórico de salidas.
Ver video Inventarios en Excel Parte 2
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Formulario de baja de productos y descontar de la existencia
Como hemos comentado, nuestro formulario cuenta con un buscador de productos el cual, si encuentra el código, nos pedirá la cantidad de salida. Si la cantidad de salida es mayor a la existencia nos enviará un mensaje indicando que no podemos dar de baja más productos que los existentes.
Figura 2. No podemos dar de baja más productos que los que hay en existencia.
Si la cantidad es menor entonces indicamos la cantidad a dar de baja y el detalle del producto se pondrán en un Control ListBox. Al confirmar la baja de los productos, se descontarán de la hoja Inventario y en la hoja Salidas se creará una fila con el detalle con la transacción.
Figura 3. Salida de productos de un Inventario o stock.
Código VBA del formulario (macros)
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Public DatoEncontrado Public varOpcion '1 para modificar, 2 para alta 'Buscar código e indicar la cantidad de salida de productos Private Sub CommandButton3_Click() On Error GoTo ManejadorErrores Set Rango = Sheets("Inventario").Range("A1").CurrentRegion FilasRango = Rango.Rows.Count Set ColumnaBusqueda = Sheets("Inventario").Range("A2:A" & FilasRango) DatoEncontrado = ColumnaBusqueda.Find(What:=Me.txtCodigo.Value, MatchCase:=False, LookAt:=xlWhole).Address strDescripcion = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 1).Value pUnitario = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 2).Value intExistencia = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 3).Value intCantidad = InputBox(strDescripcion & " - Existencia -> " & intExistencia & vbNewLine & vbNewLine & "Ingresa la cantidad.", "Cantidad", 1) If intCantidad = "" Or intCantidad < 1 Then Exit Sub If Val(intCantidad) > Val(intExistencia) Then MsgBox "Cantidad máxima a la existencia del producto", vbExclamation, "EXCELeINFO": Exit Sub Me.ListBox1.AddItem Me.txtCodigo Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = strDescripcion Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = intCantidad Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = pUnitario Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = intCantidad * pUnitario Me.CommandButton3.Enabled = False Exit Sub ManejadorErrores: MsgBox "No se encuentra el código.", vbExclamation, "EXCELeINFO" Me.ListBox1.Clear Me.txtCodigo.SetFocus End Sub 'Registrar la salida y descontar del inventario o stock Private Sub CommandButton4_Click() If Me.ListBox1.ListCount = 0 Then MsgBox "No hay valores", vbExclamation, "EXCELeINFO": Exit Sub Set Rango = Sheets("Salidas").Range("A1").CurrentRegion NuevaFila = Rango.Rows.Count + 1 UltimoID = Sheets("Salidas").Range("I1").Value + 1 With Sheets("Salidas") .Cells(NuevaFila, 1).Value = Date 'FECHA .Cells(NuevaFila, 2).Value = UltimoID 'ID_MOVIMIENTO .Cells(NuevaFila, 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) 'CÓDIGO .Cells(NuevaFila, 4).Value = Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) 'DESCRIPCIÓN .Cells(NuevaFila, 5).Value = Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) 'PRECIO UNITARIO .Cells(NuevaFila, 6).Value = Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) 'CANTIDAD .Cells(NuevaFila, 7).Value = Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) 'TOTAL End With Sheets("Inventario").Range(DatoEncontrado).Offset(0, 3).Value = _ Sheets("Inventario").Range(DatoEncontrado).Offset(0, 3).Value - Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) Unload Me End Sub 'AL INICIAR EL FORMULARIO Private Sub UserForm_Initialize() Me.ListBox1.ColumnCount = 5 Me.ListBox1.ColumnWidths = "70 pt; 120 pt; 70 pt; 70 pt; 60 pt" End Sub
Descarga el archivo de ejemplo
Inventarios en Excel Parte 2 – Salida de productos y descontar del stock – EXCELeINFO.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.