Como hago para que se cargue en el ListBox solo los productos que tengan stock mayor a 1

¿Cómo estan?.

Saludos, espero me puedan orientar con esto; tengo un ListBox que se carga mediante se escribe en un TextBox, datos que son extraidos de una tabla, la cual la tengo de 6 columnas llamadas: Lote, Producto, Entradas, Salidas, Stock, Und.

Lo que quiero es los siguiente: Cuando se haga la busqueda con el TextBox me omita los productos que tengan stock cero y me cargue en el ListBox solo los productos con stock de 1 en adelante.

Este es el codigo:

Private Sub TextBox_Change()
Application.ScreenUpdating = False
Sheets("PRODUCTOS").Select
Range("C8").Select
ListBox1.Clear
While ActiveCell.Value <> ""
M = InStr(1, UCase(ActiveCell.Value), UCase(TextBox.Text))
If M > 0 Then
ListBox1.ColumnCount = 6
ListBox1.AddItem
ActiveCell.Offset(0, -1).Select
ListBox1.List(ListBox1.ListCount - 1, 0) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 1) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 2) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 3) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 4) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 5) = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ListBox1.List(ListBox1.ListCount - 1, 6) = ActiveCell.Value
ActiveCell.Offset(0, -5).Select
End If
ActiveCell.Offset(1, 0).Select
Wend
End Sub

Respuesta

Este es el resultado de la macro, como puedes ver en la hoja de Excel hay un 0 que el el listbox es filtrado

y esta es la macro para evitar problemas quite las líneas application, por cierto si ves esto en negritas no lo puse yo es algo que esta pasando en la página

Private Sub TextBox1_Change()
Sheets("PRODUCTOS").Select
Sheets("hoja2").Cells.Clear
With Range("a1").CurrentRegion
    .AutoFilter
    .AutoFilter 3, "*" & TextBox1.Text & "*"
    .AutoFilter 5, ">0"
    .Copy
    Sheets("hoja2").Range("a1").PasteSpecial
End With
Set datos = Sheets("hoja2").Range("a2").CurrentRegion
With datos
    filas2 = .Rows.Count: col2 = .Columns.Count
    Set datos = .Rows(2).Resize(filas2 - 1, col2)
    rango = datos.Address
End With
With ListBox1
    .RowSource = "hoja2!" & rango
    .ColumnHeads = True
    .ColumnCount = Sheets("hoja2").Range("a2").CurrentRegion.Columns.Count
End With
Range("a1").CurrentRegion.AutoFilter
Set datos = Nothing
End Sub

Saludos, como estas James Bond.

Gracias por responder tan pronto, pero implemente tu codigo y copia la tabla a otra hoja, me deja una copia en la hoja "PRODUCTOS" sin filtros, cuando hago la busqueda me aparece todo no me filtra el resultado de mi busqueda en el textbox. Hace cosas que no quiero.

Yo solo pido que no me aparezca en el listbox los productos con stock cero solamente eso, mas nada.

Si a mi tambien se me coloco en negrita todo, es raro.  jajaja

Vamos por partes en tu requerimiento pusiste y cito Lo que quiero es los siguiente: Cuando se haga la búsqueda con el TextBox me omita los productos que tengan stock cero y eso hace la macro que te pase filtra los productos con zeros, es cierto quita los filtros pero si no quieres que lo haga quita esta línea

Range("a1"). CurrentRegion. AutoFilter

si lo que quieres es que te filtre solo los productos con ceros solo cambia esta línea

. AutoFilter 5, ">0"

por esta

. AutoFilter 5, "=0"

la copia a otra hoja la hace porque es más fácil y eficiente la programación de ese modo que cargar una a una las filas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas