Inventarios en Excel Parte 2 – Salida de productos y descontar del stock

Inventarios en Excel Parte 2 - Formulario de 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.

Salida de productos del inventario e histórico de salidas.

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.

No podemos dar de baja más productos que los que hay en existencia.

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.

Salida de productos de un Inventario o stock

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

Descargar el 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.

VER PROYECTO COMPLETO INVENTARIOS EN EXCEL

Inventarios en Excel Parte 2 – Salida de productos y descontar del stock

Inventarios en Excel Parte 2 - Formulario de 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.

Salida de productos del inventario e histórico de salidas.

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.

No podemos dar de baja más productos que los que hay en existencia.

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.

Salida de productos de un Inventario o stock

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

Descargar el 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.

VER PROYECTO COMPLETO INVENTARIOS EN EXCEL

También te podría gustar...