Búsqueda en una listbox desde un textbox bajo condición

Resuelto
Louloude74 Mensajes publicados 62 Estado Miembro -  
Louloude74 Mensajes publicados 62 Estado Miembro -
Hola a todos,

Tengo este fragmento de código que me permite realizar una búsqueda desde un textbox en una listbox.

Sub IndexSuivant(Debut) Dim i As Integer Dim intPosition As Integer 'elección de la columna de búsqueda If OptionButton1.Value = True Then j = 0 Else j = 1 End If For i = Debut To Me.ListBox1.ListCount - 1 If InStr(LCase(Me.ListBox1.Column(j, i)), LCase(Me.TextBox1.Text)) = 1 Then intPosition = i ListBox1.ListIndex = i Lindex = i + 1 'la próxima búsqueda comenzará ? i + 1 Exit For End If Next i End Sub


Me gustaría poder añadir una condición según el valor de un checkbox.
Este valor permitiría saber cómo realizar la búsqueda. Si es falso, la búsqueda se realiza sobre la totalidad de los proveedores (como ya ocurre); si es verdadero, la búsqueda se realiza solo sobre los proveedores cuyo nombre está compuesto por un "/".

Otra alternativa que se me ocurre ahora mismo. A medida que se escribe en el textbox, la listbox se vacía, como un filtro y se reducen las opciones posibles.

De antemano gracias por vuestra ayuda y que tengáis un buen día.

Ludwig

5 respuestas

  1. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
     
    Hola,

    ¿De dónde proviene la variable Debut?

    ¿Hoja o UserForm?

    ¿Puedes poner un archivo de ejemplo ya que, según tu código, la búsqueda en la lista_listbox se realiza en una columna diferente según la opción del botón de opción?
    1
  2. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
     
    Hola,

    Estoy haciendo una búsqueda en dos columnas
    En su hoja de Excel, ¿los proveedores con/sin “/” están en cuántas columnas?
    Ya que no indican cómo se llena la listbox
    1
    1. Louloude74 Mensajes publicados 62 Estado Miembro 1
       
      Hola, En Ecxel, los proveedores están en una sola columna.
      Private Sub UserForm_Initialize()
      NomFeuille = ActiveSheet.Name
      DerLigne = Sheets(NomFeuille).Cells(Rows.Count, 1).End(xlUp).Row
      DerCol = Sheets(NomFeuille).Cells(1, Columns.Count).End(xlToLeft).Column
      Me.ListBox1.List = Range(Cells(1, 1), Cells(DerLigne, DerCol)).Value
      End Sub
      ¡Buen domingo! Ludwig
      0
      1. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717 > Louloude74 Mensajes publicados 62 Estado Miembro
         
        Hola,

        Ok, voy a revisar la cosa
        0
  3. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
     
    Hola,

    Archivo para búsqueda específica en función de un TextBox para rellenar ListBox.
    La búsqueda filtra los nombres que contienen un "/"

    Para adaptar a tu archivo personal: https://mon-partage.fr/f/vUbJganP/

    No pones Ucase porque los nombres deben estar en Mayúsculas en las celdas!
    1
    1. Louloude74 Mensajes publicados 62 Estado Miembro 1
       
      Buenas noches,

      ¡Es genial, funciona muy bien!

      El Ucase me permite forzar la escritura en mayúsculas en el textbox.
      Porque, normalmente, los proveedores están siempre en mayúsculas en mi lista. Pero si alguno está en minúsculas, estoy perdido. Lo ideal en ese caso sería una búsqueda que no tenga en cuenta las mayúsculas/minúsculas.

      ¡Gracias de nuevo por tu ayuda. ¡Es genial!

      Que tengas una buena noche.

      Ludwig
      0
      1. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717 > Louloude74 Mensajes publicados 62 Estado Miembro
         
        Hola,

        sin tener en cuenta la mayúscula.
        Es factible sin problema
        0
      2. Louloude74 Mensajes publicados 62 Estado Miembro 1 > f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención  
         
        Hola,

        No dudo que debe ser pan comido para ti.
        He añadido application.proper al additem de la listbox. Las mayúsculas hacían que la listbox fuera ilegible.

        Gracias de nuevo por todo lo que has hecho.

        Que tengas un buen día

        Ludwig
        0
      3. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717 > Louloude74 Mensajes publicados 62 Estado Miembro
         
        Hola,

        Entonces no hay continuación, ¿les sirve así?
        0
      4. Louloude74 Mensajes publicados 62 Estado Miembro 1 > f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención  
         
        No hay problema!!!

        ¡Muchas gracias de nuevo!!!
        0
  4. Louloude74 Mensajes publicados 62 Estado Miembro 1
     
    Hola,

    Private Sub TextBox1_change() TextBox1.Text = UCase(TextBox1.Text) Lindex = 0 IndexSuivant (Lindex) End Sub 


    Durante ese evento.

    Los elementos de la listbox proceden, a su vez, de una hoja de Excel.
    0
    1. f894009 Mensajes publicados 17417 Fecha de registro   Estado Miembro Última intervención   1 717
       
      Hola,

      Totalmente de acuerdo Thierry.
      Pero, ¿por qué dos columnas para la búsqueda en la ListBox?
      ¿De dónde proviene la variable Debut:
      Sub IndexSuivant(Debut)

      Para información, hacer la búsqueda en la hoja de Excel en lugar de la ListBox
      0
  5. Louloude74 Mensajes publicados 62 Estado Miembro 1
     
    Hola,

    Gracias por tu respuesta.

    Estoy haciendo una búsqueda en dos columnas porque no sé cómo hacerlo de otra forma. ;)

    El código mencionado más arriba es un código recuperado.

    Utilizo un userform para rellenar diferentes campos. Necesitaba listar a los proveedores. Lo hice a través de un listbox. Añadí un textbox para usarlo como un "motor de búsqueda" en mis proveedores, ya sea por nombre o por su código. Una vez seleccionado el proveedor, incremento una segunda lista con mi selección o mis selecciones.

    El problema con "mi" código es que me devuelve la primera valor encontrada y los proveedores están en duplicado: proveedor (proveedor genérico) y proveedor/código (nuestros proveedores). Me gustaría tener la posibilidad de hacer la búsqueda solo entre los proveedores con un "/".

    Espero que esta vez no haya ido por el camino equivocado.

    De nuevo, gracias y que tengas un buen día.

    Ludwig
    0