Inventarios en Excel Parte 1.2 – Alta de productos y stock o existencias

Inventarios en Excel Parte 1.2 - Formulario de Alta de productos

PREVIO: INVENTARIOS EN EXCEL PARTE 1.1

En esta segunda parte de la primera entrega de nuestro Proyecto Inventarios en Excel usaremos el mismo formulario que vimos en la Parte 1.1. El Formulario desarrollado con macros VBA nos da la oportunidad de agregar existencias a productos existentes, pero también nos da la opción de dar de alta el producto que estemos buscando en caso de que no exista en la tabla Productos.

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.2

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

Formulario para entrada de productos y su stock o existencia

El mismo formulario que nos sirve para buscar códigos de productos y aumentarle su stock, nos servirá para buscar códigos y en caso de que el código no exista nos dará la opción de registrarlo.

Si el producto no existe nos da la opción de darlo de alta.

Figura 2. Si el producto no existe nos da la opción de darlo de alta.

Al dar de alta un nuevo producto le daremos de alta los conceptos de DESCRIPCIÓN, PRECIO UNITARIO, CANTIDAD.

Inventarios en Excel Parte 1 - Formulario de alta y modificación de productos - EXCELeINFO

Figura 3. Damos de alta un nuevo producto, así como su stock o existencia.

Código VBA del 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

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