Lotear producto por veces seleccionado en un listbox vb excel

Me pueden apoyar con lo siguiente..

Manejo una hoja llamada base de datos, el cual sus datos están de la siguiente manera

Cada semana del año tienen un numero y esto depende de la fecha en la que nos encontremos

Como muestra la imagen tengo el producto "pan de muerto chico" que en la semana 39 lo he pedido 3 veces por ende me hizo un consecutivo en lotes... Tomando en cuenta la semana en la que estamos
39&y la contabilidad del producto y como resultado me dio 39001, si yo sigo con el proceso (que hago desde un listbox) y vuelvo a seleccionar el mismo producto en la misma semana, este me da como resultado 39002 y así sucesivamente, cuando el dato de la semana es diferente o el producto es diferente los lotes re reinician en su conteo, por ejemplo en la semana 40 se selecciono 2 veces el "pan de muerto chico" y dio como resultado 40001,40002 y así sucesivamente, en caso de que el producto cambie como lo es "galleta de manteca" este toma en cuenta la semana en la que esta y hace su respectivo conteo en este caso se aprecia el 39001 (indicando que solo 1 vez se selecciono en la semana 39) ya indicando el contexto paso al código

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim cantidad 'Nro
X:
    fila = Me.ListBox1.ListIndex
    Set h = Sheets(Hoja31.Name)
    'ListBox1.List(fila, 0)  columna B
    cantidad = InputBox("Clave: " & ListBox1.List(fila, 0) & vbCr & "Categoria: " & ListBox1.List(fila, 9) & _
    vbCr & "Descripción: " & ListBox1.List(fila, 8) & vbCr & "Si estás seguro, captura la cantidad:", _
    "Seleccionaste: " & ListBox1.List(fila, 1))
    If IsNumeric(cantidad) Then
    If Val(cantidad) > 0 Then
    'agregar el producto al pedido
    'FormPedido.ListBox1.AddItem Me.ListBox1.List(Me.ListBox1.ListIndex, 0)    ' Producto
   NOTAS.ListBox1.ColumnCount = 9
   NOTAS.ListBox1.AddItem cantidad    'Pedido
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 1) = ARTICULOS.ListBox1.List(fila, 6) ' pzas x pedido
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 2) = ARTICULOS.ListBox1.List(fila, 0) ' clave
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 3) = ARTICULOS.ListBox1.List(fila, 2) 'producto
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 4) = cantidad * ARTICULOS.ListBox1.List(fila, 6) 'cantidad
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 5) = (Date + ARTICULOS.ListBox1.List(fila, 12)) 'caducidad
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 6) = "AQUI NECESITO EL LOTEO"
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 7) = Format(ARTICULOS.ListBox1.List(fila, 3), "$#,##0.00") 'costo
   NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 8) = Format(ARTICULOS.ListBox1.List(fila, 3) * cantidad, "$#,##0.00") 'importe
 NOTAS.ListBox1.ColumnWidths = "80 pt;80 pt;60 pt;220 pt;80 pt;140 pt;90 pt;100"
'este cuenta cuantos listbox estan en uso
For cuenta = 0 To NOTAS.ListBox1.ListCount - 1
If NOTAS.ListBox1.List(cuenta, 0) <> "" Then
Mm = Mm + 1
End If
Next
ARTICULOS.Label18.Caption = Mm 'MsgBox "hay un total de: " & m & " datos, y serán anotados en el textbox1"
NOTAS.Label18.Caption = Mm
'este es para sumar los importes de los listbox
For i = 0 To NOTAS.ListBox1.ListCount - 1    'ajustar nbre del control ListBox
tot = Val(tot) + NOTAS.ListBox1.List(i, 8)
Next i
NOTAS.Label19.Caption = Format(Val(tot), "$#,##0.00")
ARTICULOS.Label19.Caption = Format(Val(tot), "$#,##0.00")
NOTAS.Label25.Caption = CONVERTIRNUM(NOTAS.Label19.Caption)
'Unload Me
Else
MsgBox "Número menor a 0", vbExclamation + vbOKOnly, "Atención"
GoTo X
End If
End If
End Sub

Este código lo tengo en un listbox llamada ARTICULOS, que me pasa lo datos en otro listbox llamado

NOTAS, todo lo que yo voy capturando después con otro código me lo guarda en mi base de datos como muestra en la 1era imagen

Así queda cuando voy capturando según el codigo que tengo ahi... Ahora lo que yo necesito
es que cuando vaya capturando desde mis listbox me tome como referencia la base de datos

Ejemplo:
Si en mi base de datos tuviese ya datos asentados del producto "pan de muerto chico" de la semana 39
lotes 1 al 3 (39001,39002,39003) que al momento de capturar en mi listbox articulos y pasarlo a mi otro listbox NOtas.. Este me lotee con el consecutivo las veces que seleccione ese producto.. Ejemplo en la imagen vemos que tengo seleccionado 3 veces de nuevo el producto "pan de muerto chico" entonces me deberia asomar los lotes 39004,39005,39006.. Y en caso de que yo borre uno de la lista ejemplo: yo borre el lote 39005 este se me actualice y ahora sus lotes sean 39004,39005 únicamente porque dando seguimiento ahora son 2 "pan de muerto chico" y respetando sus lotes asi quedaria...
Y asi sucesivamente con los demas productos
teniendo en cuenta la semana y el nombre del producto
para posteriormente guardar el dato

Respuesta
3
NOTAS.ListBox1.List(NOTAS.ListBox1.ListCount - 1, 6) = "AQUI NECESITO EL LOTEO"

Debes realizar un ciclo en todos los registros en la hoja y buscar el último lote con la llave producto+semana.

Por ejemplo, si el último es el 39003

Entonces tu base es 39003

Si agregas un registro al listbox, entonces revisas,

Si es el primero, a la base le sumas 1

Si hay más registros, entonces realizas un ciclo con todos los registros en el lisitbox, buscas el último con llave producto+semana, le sumas 1 y agregas el nuevo registro

Cuando borres, debes hacer lo mismo para todos los registros y actualizar el lote en todos.

Después realizar un ciclo de todos los registros que tienes en el listbox, al último que tengas le sumas

¿Y me puedes apoyar con ese código?

No puedo :C

Lo he hecho pero en fórmulas, para poder explicarlo par preguntar

Pero las fórmulas funciona en la hoja, no funcionan en el listbox.

Lo más simple es que no pongas el lote en el listbox. Pasas los registros a la hoja y en ese momento o después pones los lotes (utilizando la macro que te hice para poner los lotes).

gracias dan..
voy a quitar los lotes del listbox

pero hay alguna manera de que en vez de lote

me ponga el numero de la veces que seleccione el producto..
ejemplo:
pan de muerto chico    1
pan de muerto chico   2
pan de muerto chico   3
no serian lotes, solo las veces que se repiten en el listbox

De igual manera tienes que recorrer el listbox con la llave Producto y poner el consecutivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas