Inventarios en Excel Parte 1.1 – Modificación de productos y aumentar el stock o existencias

Inventarios en Excel Parte 1.1 - Formulario de Modificación de productos y aumentar el stock

En este tutorial veremos un nuevo proyecto llamado Inventarios en Excel. Veremos un formulario que nos permitirá modificar las cantidades en existencia de los productos registrados. Si el producto existe vamos a aumentarle la existencia. De manera opcional vamos a poder modificar la descripción de los productos y el precio unitario a cada producto.

Tabla de productos

Tenemos una tabla donde tendremos los datos de CÓDIGO, DESCRIPCIÓN, PRECIO UNITARIO Y CANTIDAD o EXISTENCIA.

Tabla de productos en nuestro inventario.

Figura 1. Tabla de productos en nuestro inventario.

Ver video Inventarios en Excel Parte 1.1

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Formulario para modificar la existencia de los productos

Tenemos un formulario desarrollado en Excel VBA donde tendremos un cuadro de texto donde ingresaremos el código a buscar. En caso de que el código exista, se mostrarán los datos de DESCRIPCIÓN y PRECIO UNITARIO. En el cuadro de texto CANTIDAD el número que ingresemos se sumará a la cantidad que haya en existencia.

Aumentamos el stock de los productos del inventario.

Figura 2. Aumentamos el stock de los productos del inventario.

Código VBA de formulario (macros)

El siguiente código VBA son las instrucciones VBA que van en el formulario.

'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

'AL INICIAR EL FORMULARIO
Private Sub UserForm_Initialize()
    
Call DeshabilitarCajasTexto
Me.lblAviso.Font.Size = 11
    
End Sub

'BUSCAR CÓDIGOS
Private Sub CommandButton2_Click()
    
On Error GoTo ManejadorErrores

If Me.txtCodigo.Value = "" Then MsgBox "Ingrese un código", vbExclamation, "EXCELeINFO": Exit Sub

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

Call HabilitarCajasTexto

Me.txtDescripcion.Value = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 1).Value
Me.txtPrecio.Value = Sheets("Inventario").Range(DatoEncontrado).Offset(0, 2).Value
Me.txtCantidad.SetFocus
Me.lblAviso.Caption = "Modificar código " & Me.txtCodigo

varOpcion = 1

Exit Sub
ManejadorErrores:

If Err.Number = 91 Then
    MensajeAlta = MsgBox("El código " & Me.txtCodigo.Value & " no se encuentra. Desea darlo de alta?", vbYesNo + vbQuestion, "EXCELeINFO")
    If MensajeAlta = vbYes Then
        Call HabilitarCajasTexto
        Me.txtDescripcion.SetFocus
        Me.lblAviso.Caption = "Alta de código " & Me.txtCodigo
        varOpcion = 2
    Else
        Me.txtCodigo.SetFocus
    End If
Else
    
    MsgBox "Otro error"
    
End If
    
End Sub

'MODIFICAR O GUARDAR
Private Sub btnAceptar_Click()
    
If varOpcion = 1 Then
    
    With Sheets("Inventario")
        .Range(DatoEncontrado).Offset(0, 1).Value = Me.txtDescripcion.Value
        .Range(DatoEncontrado).Offset(0, 2).Value = Me.txtPrecio.Value
        .Range(DatoEncontrado).Offset(0, 3).Value = _
        Val(.Range(DatoEncontrado).Offset(0, 3).Value) + Val(Me.txtCantidad.Value)
    End With
    
ElseIf varOpcion = 2 Then
    
    Set Rango = Sheets("Inventario").Range("A1").CurrentRegion
    NuevaFila = Rango.Rows.Count + 1
    
    With Sheets("Inventario")
        .Cells(NuevaFila, 1).Value = Val(Me.txtCodigo)
        .Cells(NuevaFila, 2).Value = Me.txtDescripcion
        .Cells(NuevaFila, 3).Value = Val(Me.txtPrecio)
        .Cells(NuevaFila, 4).Value = Val(Me.txtCantidad)
    End With
    
End If

Unload Me
    
End Sub

Y el siguiente código VBA va en un Módulo normal y servirá para habilitar o deshabilitar los cuadros de texto para actualizar los datos de cada producto.

Sub HabilitarCajasTexto()

Set FormActivo = UserForms(0)

With FormActivo

    .txtDescripcion.Enabled = True
    .txtDescripcion.BackStyle = fmBackStyleOpaque
    .txtPrecio.Enabled = True
    .txtPrecio.BackStyle = fmBackStyleOpaque
    .txtCantidad.Enabled = True
    .txtCantidad.BackStyle = fmBackStyleOpaque

End With

End Sub

Sub DeshabilitarCajasTexto()

Set FormActivo = UserForms(0)

With FormActivo

    .txtDescripcion.Enabled = False
    .txtDescripcion.BackStyle = fmBackStyleTransparent
    .txtPrecio.Enabled = False
    .txtPrecio.BackStyle = fmBackStyleTransparent
    .txtCantidad.Enabled = False
    .txtCantidad.BackStyle = fmBackStyleTransparent

End With

End Sub

Descarga el archivo de ejemplo

Descargar el ejemplo Inventarios en Excel Parte 1 – Formulario de alta y modificación de productos – 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.

SIGUIENTE: INVENTARIOS EN EXCEL PARTE 1.2

You may also like...

RECIBE CONTENIDO EXCLUSIVO

Tips, trucos, videos para convertirte en un EXPERTO EN EXCEL y llegar al éxito. Suscríbete y recibe el mejor contenido en tu correo.