Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como CREAR una FACTURA CANCELAR FACTURA DEVOLVER al STOCK Productos NO Facturados EXCEL#12 #526

Factura en Excel - Devolver al stock productos no facturados

Devolver a Stock Productos no Facturados

En este post como facturar y trabajar descontando del stock o devolviendo productos al stock de artículos no facturados, sugiero previamente mirar los vídeos anteriores de esta saga de vídeos denominada como crear facturas con Excel paso a paso.

Aprende a manejar Excel, click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet, te lo recomiendo no te arrepentirás.

  
 

https://youtu.be/NKIY1LbigNM

Mira la macro en acción, una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestro canal de You Tube, mira el playlist con  vídeos relacionados donde podrás ver la macros relacionadas en acción con una explicación en forma visual que ayudará a entender el ejemplo en forma más fácil.

Como Facturar con Excel y Descontar de Stock

En este post se muestra una mejora solicitada por un suscriptor de nuestro canal de You Tube el cual solicitaba que se pueda devolver al stock en caso de haber en un primer momento haber empezado una factura por error y no requerirse facturar dicho articulo, ya que al seleccionar la cantidad a facturar descuenta del stock y luego al no facturarlo, queda descontado del stock ni haber sido facturado.

Para evitar este problema que se puede suceder en stock con este caso, se procede a ejecutar una macro en el evento «query close» del formulario de Excel VBA, es decir antes de cerrar el formulario verificará si existe algún registro en el Listbox donde se muestran los artículos a facturar.

En caso que exista un articulo, procederá a preguntar si se desea seguir realizando la factura o no, en caso que no deseemos hacer la factura automáticamente vuelve la cantidad afectada, pero no facturada al stock.

Explicación del código para devolver artículos sin facturar al stock

Primero se recorren las filas del Listbox en caso de ser Empty la variable «regi» cierra el formulario, se usan los siguientes códigos:

For x = 0 To UserForm2.ListBox1.ListCount – 1
regi = regi + 1
Next x
If regi = Empty Then Exit Sub

En caso que la variable «regi» posea algún valor, significa que existe un dato en el listbox que modificó el stock y no se facturó aún, no permite cerrar el formulario, sin que el operador del aplicativo tome una decisión.

La macro pregunta si desea cancelar la factura que se estaba generando y devolver artículos al stock, en caso de respuesta negativa, no cierra el formulario permitiendo seguir realizando la factura, se usa el siguientes código:

respuesta = MsgBox(«¿Existe una factura en ejecución, desea cancelarla y volver los articulos al stock?», vbCritical + vbYesNo, «https://macrosenexcel.com»)
If respuesta = 6 Then

Si la respuesta es positiva, es decir no se desea seguir realizando la factura se procede a devolver al stock las cantidades afectadas, pero aún no facturadas.

Por cada uno de los productos que encuentre en el Listbox determina cual es el código y la cantidad, con el objeto de buscarlo en la base de datos y sumar el importe que existe en la base de datos la cantidad que figura en el Listbox, que previamente fue descontado o afectado al seleccionar el registro y cantidad, pero al no se descontó ya que no se realizó la factura: 

Para recorrer el Listbox y determinar el código del producto y cantidad se usan los siguientes códigos:

For x = 0 To UserForm2.ListBox1.ListCount – 1
cod = UserForm2.ListBox1.List(fila, 0)
can = UserForm2.ListBox1.List(fila, 4)

Luego se procede a buscar el código en la base de datos con el siguiente código:

Set codigo = a2.Range(«B2:B» & uf).Find(cod, LookIn:=xlValues, LookAt:=xlWhole)

Una vez encontrado el código se procede  a sumar la cantidad de stock que figura en la base de datos y la cantidad que se afectó con las intensiones de facturar, pero no se terminó de realizar la factura, los códigos usados son:

If Not codigo Is Nothing Then
stodir = codigo.Row
stoold = a2.Cells(stodir, «G»)
a2.Cells(stodir, «G») = stoold + can
End If
Next x

Descarga el Libro usado en el Ejemplo Como Facturar en Excel – Trabajar con Stock

Descarga el libro de Excel usado como ejemplo, desde el final del post, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Código en evento QueryClose (Antes de Cerrar Formulario)

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error Resume Next
For x = 0 To UserForm2.ListBox1.ListCount – 1
regi = regi + 1
Next x
If regi = Empty Then Exit Sub
respuesta = MsgBox(«¿Existe una factura en ejecución, desea cancelarla y volver los articulos al stock?», vbCritical + vbYesNo, «https://macrosenexcel.com»)
If respuesta = 6 Then
Set a2 = Sheets(«Articulos»)
uf = a2.Range(«A» & Rows.Count).End(xlUp).Row

For x = 0 To UserForm2.ListBox1.ListCount – 1
cod = UserForm2.ListBox1.List(fila, 0)
can = UserForm2.ListBox1.List(fila, 4)

Set codigo = a2.Range(«B2:B» & uf).Find(cod, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
stodir = codigo.Row
stoold = a2.Cells(stodir, «G»)
a2.Cells(stodir, «G») = stoold + can
End If
Next x
End If
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Donate:
Cuenta Paypal: https://paypal.me/programarexcel
Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407