Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como CREAR una FACTURA o sale invoice SUMAR Item REPETIDO ya Facturado #10 en EXCEL VBA #524

factura en excel- editar item en listbox

Como sumar items repetidos de un Listbox

En este ejemplo el número 10 de la saga de vídeos destinados a mostrar como Crear una Factura con Excel VBA, se enseña como se puede sumar las cantidades que se desean facturar cuando un producto ya está en el listado de artículos a vender.

En otras palabras supongamos que se está facturando productos y ya se cargó en el listado a facturar un producto X, nos equivocamos y en vez de por ejemplo 10 productos se debía facturar 100 artículos de un producto X, este ejemplo al facturar no crea un ítem nuevo, sino que detecta que el producto ya está en los artículos a facturar y lo que hace es sumar las cantidades, en el Listbox de productos a facturar.

Aprende Excel en forma rápido y fácil, hazlo en forma fácil y sencilla, 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.

  
 

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.

Recorrer Listbox y Reemplazar un item del Listbox de Excel VBA

La macro de Excel recorrer las filas de un Listbox buscando un dato y reemplaza otro registro perteneciente al dato buscado que se encuentra en la columna Cantidad del Listbox.

Es aconsejable ver el vídeo explicativo para tener una visión gráfica de como funciona la macro, en este ejemplo al presionar el botón verde que está en la hoja de Excel, se muestra formulario con un factura creada en Excel, luego se debe apretar el icono con la lupa, aparece otro formulario donde se puede buscar un articulo y elegir el producto a facturar.

Luego de elegido el articulo a facturar, aparece un pequeño formulario donde se debe agregar la cantidad a facturar, en este formulario, más precisamente en el Textbox1 de este formulario, que es el Textbox destinado a ingresar la cantidad a facturar, es donde debe ir el código que se muestra en este post.

Seleccionada la cantidad, la macro verifica si el código del nuevo producto que se está intentando facturar, se encuentra en el listado de productos a facturar que están en el Listbox del formulario principal, en caso que encuentre el código NO se agregará un ítem nuevo, sino que se sumarán las cantidades a facturar del mismo producto.

Explicación macro de Excel para Editar datos de un Listbox 

La macro de excel en primer lugar detecta que se haya presionado Enter con el siguiente código:

If KeyCode = 13 Then

Luego recorre todas las filas del listbox buscando si el dató que está en el listbox correspondiente a la primer columna que es donde está el código del producto, coincide con el código ingresado para facturar, en caso de encontrar el código en el Listbox guarda en la variable fila, la fila del listbox que contiene el registro, con los siguientes códigos:

For x = 0 To UserForm2.ListBox1.ListCount – 1
If UserForm2.ListBox1.List(x, 0) = cod Then
fila = x
GoTo sale:
End If
Next x
sale:

En el caso que el ítem que se pretende ingresar ya está en el Listbox con los productos a facturar, no agrega un elemento nuevo al Listbox, sino que suma la columna cantidad.

La cantidad que se pretende facturar surge del dato ingresado en el Textbox del Userform3 y está en la variable «cant», la cantidad que está el el Listbox del producto facturado anteriormente se agrega en la variable «cantOrig», que surge de la fila encontrada con los códigos explicados en el párrafo anterior y la columna 4 del Listbox.

La variable «newcant» contiene la SUMA de la cantidad ya facturada, que está en el Listbox y la nueva cantidad que se pretende facturar, luego se escribe ese dato en la fila correspondiente y columna 4 del Listbox, recuerden que las columnas del Listbox empiezan a contarse desde la cero, así que visiblemente será la columna 5 para nosotros, los códigos usados son los siguientes:

If fila <> «» Then
can = Val(UserForm3.TextBox1)
cantOrig = CDec(UserForm2.ListBox1.List(fila, 4))
newcant = cantOrig + can
UserForm2.ListBox1.List(fila, 4) = Format(newcant, «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(fila, 5) = Format(((newcant * pv) * 0.16), «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(fila, 6) = Format(((newcant * pv) * 1.16), «#,##0.00;-#.##0,00»)
Unload UserForm3

Es conveniente que revises los anteriores ejemplos para poder entender la modificación que se presenta en este post, haz click en el link para ver los vídeos anteriores relacionados con «Como Crear una Factura en Excel Paso a Paso

En caso que no se haya encontrado ningún dato coincidente es porque el item que se pretende facturar no está previamente listado, por ende carga un item nuevo al listbox con los siguientes códigos:

Else
can = Val(UserForm3.TextBox1)
UserForm2.ListBox1.AddItem cod
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 1) = art
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 2) = mar
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 3) = Format(pv, «#,##0.0000;-#.##0,0000»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 4) = Format(can, «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 5) = Format(((can * pv) * 0.16), «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 6) = Format(((can * pv) * 1.16), «#,##0.00;-#.##0,00»)
Unload UserForm3
End If

 

Descarga el Libro usado para Como Ejemplo Crear Factura en Excel Paso a Paso

Descarga el libro de Excel usado para este ejemplo desde el final del post, igualmente en cada una de las entregas de está serie de vídeos destinados a mostrar como se puede crear con macro una factura con Excel, se puede descargar de su respectivo post asociado, el mismo es totalmente gratuito y su uso es libre, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.

Código Formulario 3 del Ejemplo Como Crear Factura en Excel

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
On Error Resume Next
Dim t As Variant, tot As Variant
If UserForm3.TextBox1 = Empty Or UserForm3.TextBox1 = 0 Then Exit Sub
If UserForm2.ListBox1.ListCount > 50 Then
MsgBox («No puede ingresar más de 16 articulos por factura»), vbCritical, «AVISO»
Exit Sub
End If
Set a1 = Sheets(«Articulos»)

If KeyCode = 13 Then
For x = 0 To UserForm2.ListBox1.ListCount – 1
If UserForm2.ListBox1.List(x, 0) = cod Then
fila = x
GoTo sale:
End If
Next x
sale:

If fila <> «» Then
can = Val(UserForm3.TextBox1)
cantOrig = CDec(UserForm2.ListBox1.List(fila, 4))
newcant = cantOrig + can
UserForm2.ListBox1.List(fila, 4) = Format(newcant, «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(fila, 5) = Format(((newcant * pv) * 0.16), «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(fila, 6) = Format(((newcant * pv) * 1.16), «#,##0.00;-#.##0,00»)
Unload UserForm3

Else
can = Val(UserForm3.TextBox1)
UserForm2.ListBox1.AddItem cod
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 1) = art
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 2) = mar
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 3) = Format(pv, «#,##0.0000;-#.##0,0000»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 4) = Format(can, «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 5) = Format(((can * pv) * 0.16), «#,##0.00;-#.##0,00»)
UserForm2.ListBox1.List(UserForm2.ListBox1.ListCount – 1, 6) = Format(((can * pv) * 1.16), «#,##0.00;-#.##0,00»)
Unload UserForm3
End If

For x = 0 To UserForm2.ListBox1.ListCount – 1
t = CDec(UserForm2.ListBox1.List(x, 6))
tot = tot + t
t = 0
Next x

UserForm2.Label16.Caption = «Total » & Format(tot, «#,##0.00 «»U$S»»»)
UserForm2.Label14.Caption = «Subtotal » & Format((tot / 1.16), «#,##0.00 «»U$S»»»)
UserForm2.Label15.Caption = «IVA » & Format(((tot / 1.16) * 0.16), «#,##0.00 «»U$S»»»)
stoold = a1.Cells(stodir, «G»)
a1.Cells(stodir, «G») = a1.Cells(stodir, «G») – can
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

Summary
Author Rating
1star1star1star1star1star
Aggregate Rating
no rating based on 0 votes