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