Saltar al contenido

Usar Varios Combobox como filtros dependientes


Recommended Posts

publicado

Hola a todos! como estan?

Nuevamente yo aqui, construyendo otro proyecto y trabada hace varios dias en un punto de un userform

En mi userform1 cuando se inicia me muestra la multipage index 0, la cual me busca en una base de datos colaboradores y volunntarios.

Logre que los combobox de arriba, se carguen con valores unicos obtenidos de la tabla que esta en la Hoja2.

Lo que no se como hacer, es que cada combobox me funcione como un filtro... por ejemplo si elijo el cBoxPais= Argentina, que el cBoxProvincia me traiga en la tabla todos los registros en  provincias que sean de argentina o lo mismo con los otros combobox. 

no se si esta es la forma con mejor performace... sino tambien pensaba, usar solo dos combobox, uno de categoria (algunos encabezados de la tabla) y otro de descripcion... que contenga los resultados de los registros filtrados en categoria, pero de esta forma, no se como aplicar que me busque los valores unicos para evitar repetidos...

 

me podrian ayudar por favor?

Carga de Datos(ej).xlsm

publicado

Es la base cruda tal cual la tenemos hoy, la idea es agregando luego con el userform los datos que estan faltando de cada colaborador...

 

publicado
Hace 48 minutos , JSDJSD dijo:

Una consulta, la hoja 2 de datos normalmente estará incompleta o tendrá todas las columnas completas ?

tienes razon @JSDJSD no me di cuenta ahi lo cargo! gracias

publicado

 

Hace 59 minutos , JSDJSD dijo:

Tienes que debemos cargar en combo sitio

Ahora si, me habia olvidado de configurarlo, claro la idea es completar todas las columnas luego, modificando el registro de cada voluntario, algunos quizas por el origen de donde vengan no tendran datos en las colunmas cargo, institucion, kit , etc pero si deberian tener los otros datos de ubicacion y contacto luego

Carga de Datos(ej).xlsm

publicado

te ha quedado super admiracion total!!!! @JSDJSD, lo unico que te consulto, podria funcionar si de repente filtro solo por provincia o solo por responsable?

publicado

Tal cual está planteado no, ya que los combobox son dependientes unos de otros, explica exactamente lo que necesitas e intentamos algo

 

publicado

ay como estaría bueno, si hubiera audios para intercambiar... jajaja 

Lo estoy pensando quizás, puede ser como dos opción button para que sea mas fácil, uno buscar por pais , provincia , y sitio, y que esas tres  estén en un combobox, que al seleccionarlas, me cargue un segundo combobox con las opciones para esa elección.

Es decir si elijo pais que el segundo combobox me traiga la lista de paises, si elijo por provincia , que el segundo combobox me traiga el listado de provincias. Y quizás en un segundo option button filtrar el listobox por responsable o buscar directamente los nombres....

 

lo que trato de hacer, es que sea mas facil para usuario, quizas yo me la estoy complicando, y tu que eres el experto me puedas dar otra recomendación?

publicado
Hace 11 minutos , JSDJSD dijo:

Tal cual está planteado no, ya que los combobox son dependientes unos de otros, explica exactamente lo que necesitas e intentamos algo

 

igualmente me parece que ha quedo super como lo has hecho funcionar, no lo habia conseguido hacer....

publicado
Hace 22 minutos , roa30 dijo:

lo que trato de hacer, es que sea mas facil para usuario, quizas yo me la estoy complicando

Creo de tendría que empezar por explicar la función de dicho formulario y que funciones quieres que se hagan en el mismo.  Ya que si lo que quieres es buscar un nombre y modificar los datos que correspondan a dicho nombre creo que te estas complicando mucho.

publicado

puede ser tienes razon, la funcion de este formulario es cargar nuevos colaboradores y actualizar y completar datos de los que falten... yo lo que queria era facilitar la busqueda con los combobox, porque somos voluntarios de diferentes provincias, y nos vamos a dividir esos voluntarios que estan cargados en la lista, y cada uno va a tener asignado como responsable x numero de voluntarios.

Mi intencion era darles herramientas para que sea mas facil buscar, porque quizas no se acuerden los nombres pero quieran buscar de una determinada provincia, quizas solo quieran buscar los voluntarios que tienen a cargo por responsable.

Porque la base que tenemos hoy esta super incompleta , y el objetivo era actualizarla... y luego poder vincular a otros formularios donde los voluntarios, colaboran con muestras, fotos registros....

Me habia gustado mucho como quedo el que armaste tu, solo que tendria que ver la forma de que si quiero buscar solo por responsable me traiga todos los que tiene a cargo...

pero tienes razon quizas me este complicando sola :(

publicado

Bueno te dejo un formulario en cual puedes buscar por cualquier columna que elijas en el combobox, una vez seleccionas una columna automáticamente pasas al textbox donde puedes teclear cualquier carácter o parte de cualquier palabra que creas que contiene el texto que buscas seguidamente pulsas barra espaciadora y te mostrara todo lo encontrado según lo digitado en tu textbox. Lo de la barra espaciadora te lo pongo para que no se haga muy lenta la búsqueda.Prueba.thumb.gif.8350b0f892c468df61e1da8186820181.gif

Prueba 23032022 (1).xlsm

publicado
Hace 19 horas, JSDJSD dijo:

Bueno te dejo un formulario en cual puedes buscar por cualquier columna que elijas en el combobox, una vez seleccionas una columna automáticamente pasas al textbox donde puedes teclear cualquier carácter o parte de cualquier palabra que creas que contiene el texto que buscas seguidamente pulsas barra espaciadora y te mostrara todo lo encontrado según lo digitado en tu textbox. Lo de la barra espaciadora te lo pongo para que no se haga muy lenta la búsqueda.Prueba.thumb.gif.8350b0f892c468df61e1da8186820181.gif

Prueba 23032022 (1).xlsm 142.43 kB · 1 descarga

Hola @JSDJSD Como estas? mil gracias a quedado muy espectacular.... increible genio!!!

lo veo recien porque hemos estado ayer todo el dia sin internet donde vivo.... realmente superaste mis expectativas ! quedo super practico... te agradezco un monton tu tiempo y ayuda para resolver mi problema... gracias gracias 

publicado

@JSDJSD una pequeña ultima molestia.... he traido tu codigo a mi proyecto en el cual, avance mas con otras funciones... pero cuando en el evento change el text box que esta al lado del filtro me aparece el error 1004 . chequee todo lo que me pasaste, en tu archivo funciona super y en el mio no... lo unico que le agregue es que se vea el listado completo antes de filtrar... pero luego probe sacarlo igual  me da el mismo error

 

te lo comparto debe ser quizas una tonteria pero no lo encuentro, y lo volvi a escribir varias veces

Carga de Datos(ej).xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.