Búsqueda Inteligente con Combobox en Excel

Una vez mientras alguien estaba trabajando en una base de datos de personal, se me ocurrió hacer una mini aplicación con un formulario de búsqueda de empleados. Así fácilmente de una planilla de cientos de empleados,  podías por ejemplo buscar rápidamente el número de teléfono para poder llamarlo o la dirección de contacto, etc. En ese momento se me ocurrió usar un Combobox como herramienta de búsqueda inteligente. Es decir, no es que solo busca por las primeras letras ni nada parecido, busca de acuerdo a las coincidencias que encuentra revisando todos los elementos indexados.
Como siempre mi intensión con este Post no es darles paso a paso la solución pero si pautas principales y  mediante el video mostrarles el funcionamiento. La idea es que Uds. prueben y lo hagan. Siempre es de prueba y error hasta que sale.



Proceso:
·         Es muy simple, entran a la plataforma del VBA. Crean un formulario y dentro del formulario incrustan un Combobox. También incrustan varios “Textbox” dónde se van a mostrar los datos para la selección que hagamos.
·         Uds. tendrán una base de datos en forma de filas, dónde en cada fila tienes identificado cada elemento de la base de datos, en este caso empleados.
·         Lo que harán es indexar los datos de la base de datos en el Combobox con “Additem”. En este caso, se podrá usar el Combobox como se usa siempre, que es desplegando y eligiendo un dato de la lista pero además queremos que los datos del despliegue de la lista vaya cambiando a medida que vamos introduciendo una parte de la palabra clave.
·         Para que busque de acuerdo al dato introducido, cada vez que cambie el valor del Combobox, haremos que indexe nuevamente. Por lo dicho tendremos que usar un evento “Worksheet_Change”.
·         Otra cosa a tener en cuenta es que hacer la nueva indexación antes de guardar el valor, comparamos con el valor introducido en el Combobox, si coincide con algún valor de la cadena de texto indexa o agrega el ítem, sino sigue. Para dicha comparación podemos usar la función “InStr”
Ejemplo:
Si tenemos estos datos;
1.       Auto
2.       Casa
3.       Torre
4.        Bote
Si en el Combobox introducimos “To” tendríamos lo siguiente:






 En internet eh visto que es algo muy solicitado, y no encontré por lo menos alguna buena alternativa.
Keys:
·         Combobox Inteligente
·         Combobox autorrellenar
·         Búsqueda con Combobox

37 comentarios:

Unknown dijo...

Te felicito por el trabajo que hiciste, es muy bueno y de hecho será muy util. Quisiera consultarte si es posible que comprtas el archivo para poder tomarlo como referencia y hacer uno para aligerar mi trabajo diario. Gracias.

Excelminiapps dijo...

Hola Edinsson, Gracias por tu comentario. Para este tema hay una entrada más reciente, por favor revísalo. Sds

Unknown dijo...

Juan Pablo, gracias por responder, sin embargo te comento que yo soy un novato en esto de los Blog, no se en que parte puedo encontrar lo que me comentas, te pediria por favor que me indiques el link donde puedo acceder.
Por otro lado dime de que manera además de este Blog puedo contactarme contigo para comunicarme y ver la forma de como me puedas ayudar con este tema. Que por cierto me gusto mucho.
Saludos y quedo a la espera de tu respuesta.

Excelminiapps dijo...

Hola, el post se encuentra en este Link.
Puede contactarte con nosotros en
Contacto
Sds

Peter dijo...

buenas noches amigos interesante blog en especial lo de las busquedas inteligentes, estuve probando lo del combo box y no pude resolverlo de acuedro a los tips que das si me puedes ayudar te lo agradeceria

Excelminiapps dijo...

Hola amigo, gracias por el comentario. Esta aplicación es un tanto avanzada, es por eso que se hicieron más publicaciones con similar idea pero de más fácil aplicación. Revisa la lista de entradas. Sds

Unknown dijo...

Hola

Estimado esto es me me partido la cabeza tratando de hacer lo que tienes justo aquí debido a que la entrada anterior a la que haces referencia es necesariamente en una hoja y no lo puedo utilizar en un userform. favor ayúdame si es necesario te envió mi archivo para que le puedas dar un vuelta...

Saludos

Excelminiapps dijo...

Hola amigo, gracias por el comentario. Esta aplicación es un tanto avanzada, es por eso que se hicieron más publicaciones con similar idea pero de más fácil aplicación. Revisa la lista de entradas. La idea es ir publicando más mini aplicaciones para ir llegando a la definitiva. También puedes escribirnos mediante el formulario de contacto. Saludos

Unknown dijo...

Estimado,el ejemplo que veo en el video es justamente lo que necesito para un proyecto que tengo.
El proyecto cuenta con una base de datos de mi despensa y necesito ese tipo de busqueda para lograr obtener de manera rapida el codigo,nombre,precio,etc.

Me podrias pasar un ejemplo en un xls para ver si logro adaptarlo.

Desde ya muchisimas gracias por tu ayuda.

Excelminiapps dijo...

Hola, cómo estas! Gracias por los comentarios!
Esta aplicación es muy avanzada y requiere ciertos conocimientos por lo que hicimos varios artículos dando otras alternativas para este uso. Te sugerimos que las revises desde la lista de artículos. En algún momento abordaremos este tema. Recuerda que también puedes escribirnos desde el formulario de contacto. Saludos

Mike Ius dijo...
Este comentario ha sido eliminado por un administrador del blog.
Unknown dijo...

muy bueno lo que publicas, me gustaria saber como puedo hacer una busqueda en una hoja de esxcel que se conecta a una base de datoy y que busque por nombre de proyecto

Unknown dijo...

vi como haces con tablas dinamicas pero lo que no puedo hacer es una ves que elijo el nombre que me aparescan los demas campos

Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Por favor escríbenos mediante el formulario de contacto ya que para tu primera pregunta no entendemos bien el alcance de lo que necesitas. En cuanto a tu segunda consulta, en el artículo esta paso a paso y en el video también pero nos puedes consultar de nuevo.
Esperamos tus comentarios. Saludos

Ariel dijo...

Hola, me gusto mucho el post...tengo un archivo similar con combobox para buscar datos,le agrego los item que quiero con el .additem, asi como tu dices, pero no utilizo ese evento "worksheet change" tampoco el Insr...queria saber si me podrias facilitar el archivo, y asi ver si me sirve para adaptarlo a una plantilla que estoy elaborando. Muchas gracias. Saludes

Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
Este artículo se fue desarrollando en varios, revisa donde dice articulos relacionados. Son varios, tenes que ir viendo todos porque cada uno tiene un tip. Además nos falta publicar un par más por falta de tiempo. También nos puedes contactar mediante el formulario de contacto. Saludos

Unknown dijo...

Buenas tardes Juan Pablo, con respecto al articulo es lo que necesito, realice un formulario con Combobox y me trae las palabras segun las primeras letras, pero no me funciona como quiero, que estando en cualquier posicion de la lista me traiga todas las expresiones que contengan dicha palabra clave, no he podido ver el codigp que empleaste para realizar dicha tarea, y no he podido saber por donde lo encuentro, me puedes ayudar? Gracias

Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
Si te fijas al pie del artículo hay una lista de artículos relacionados. Ahí encontrarás las ideas que necesitas.
Esperamos tus comentarios.
De todas maneras te decimos que nos falta subir un artículo más al respecto.
Saludos

Unknown dijo...


Hola, en verdad agradecería mucho me pudieras apoyar en como lograr realizar este tipo de busqueda, ya que en los que mencionas resulta casi imposible saber que estas haciendo para obtener el resultado, he visto tus otro videos y claramente se entiende lo que haces, pero en este que me gustaria llevar a la practica no lo he logrado adivinar.

en verdad te agradezco si me pudieras compartir un vídeo mas detallado de este ejemplo.

Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuanto a tu consulta, si has visto los videos posteriores, es básicamente lo mismo. Sino que para ahorrarnos complejidad usamos un combobox sobre la misma hoja de excel, aquí utilizamos un formulario. Es lo mismo, nada más que debes indexar el combo con los datos del filtrado que haces mediante una tabla dinámica u otro medio en una hoja auxiliar. Se puede hacer sin hoja auxiliar pero es demasiado complejo y pierde practicidad.
Esperamos tus comentarios.
Saludos

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...
Este comentario ha sido eliminado por el autor.
Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por todos tus comentarios!
En cuanto a lo que solicitas, en realidad tenemos varios artículos del mismo tema, casi que esta agotado. Sin embargo nos quedan un par de artículos más por subir.
Por otro lado, esto que hacemos aquí lo hacemos en uno de esos artículos que te mencione pero en vez de usar un combobox en un formulario directamente lo usamos sobre la hoja. Básicamente en el formulario es lo mismo pero lo hicimos así para restar complejidad.
Esperamos tus comentarios.
Saludos

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...
Este comentario ha sido eliminado por el autor.
Excelminiapps dijo...

Felicitaciones amigo! En los artículos esta todo lo que se necesita. Igual tenemos un par más que no pudimos publicar ya que todavía no tenemos tiempo. Si te fijas en los artículos , creamos varios con diferentes niveles de complejidad, desde los más básico a lo más complejo.
Un saludo

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...

Mirando muy detenidamente el video me acabo de dar cuenta de que mi código es igual. Amigo por lo menos me hubieras dicho que era el mismo código... me acabo de dar cuenta que a ti también te parpadea el DropDown, por lo cual es lógico que también te sales y vuelves al ComboBox

Excelminiapps dijo...

Hola amigo, cómo estas! En realidad no hemos visto en detalle el código que comentaste. A simple vista parece incompleto, revisa los demás artículos sobre este tema. Si te funciona, perfecto! Lo que mas nos interesa con el blog es transmitir una idea, mostrar elementos, herramientas, tips. Etc. Trabajo cumplido!
Gracias, Saludos.

Unknown dijo...

JUAN PABLO TORRES... Eres chileno?

Alexander, yo también soy chileno y la verdad, estoy muy decepcionado, al igual que tu, de este blog. Don Juan Pablo a toda costa se niega a compartir su famoso código, será porque lo tienen a la venta por ahí en us10,00.

Deberían ser honestos, si venden los códigos que así sea... pero déjense de tonteras, por cada respuesta que das no se llega a ningún lado. Dices, lo que hacemos es compartir.. que has compartido???

Alexander terminó por aburrirse de pedirte el código, prácticamente te rogaba para que se le mostraras, a fin de cuenta, nadie usa el código de otro en su totalidad, solo se toma como referencia, así se puede decir, lo adapté a mis necesidades.

En fin, Juan Pablo Torres, si eres chileno, deberías postularte a consejal viejito, tienes mucho bla bla.

Dan ganas de putiarte porque eres indolente a los comentarios que hacen los usuarios, no vale la pena.

Como dice una vieja loca de la tele...CASO CERRADO!

Se termina mi vista a este blog.

Excelminiapps dijo...

Estimado Unknown (desconocido), lamentamos mucho tus comentarios ya que aquí en el blog que tanto nos ha costado que ni siquiera es un servicio porque solo se trata de compartir. Donde tenemos más de 40 artículos donde dejamos todo. Y tu que intentas dejar comentarios mal intencionados cuando en el blog esta todo lo que se necesita para hacer eso. Solo que hay gente que cree puede tener todo sin intentar siquiera pensar o utilizar los conceptos que aquí damos. Este blog no es para dejar un código, es para dejar una idea, un concepto, intentando motivar a las personas. En cambio hay gente que solo intenta con masilia y con comentarios poco inspiradores obtener algo que creen que merecen.
Por último aquí en todo momento tratamos de ser positivos y tratar a la gente con respeto.
Saludos

Anónimo dijo...

excelente trabajo amigo, yo actualmente poseo un problema con un combobox, y has compartido algunos archivos pero el de este vídeo no lo encuentro en el blog, esta la versión sin activex, es posible que lo compartas, seria de gran ayuda.

Excelminiapps dijo...

Hola amigo, revisa la lista de artículos.
Sds

Andres dijo...

hola amigo estoy tratando de hacer algo exactamente asi, podrías ayudarme con los comandos que usaste para que el combobox haga eso por favor

Excelminiapps dijo...

Hola, cómo estas amigo! Esta todo en nuestros artículos pero sin embargo para seguir aclarando el tema hicimos un nuevo artículo y ahí esta todo. Usamos básicamente lo que ya se había visto.
Esperamos tus comentarios.
Saludos

juan dijo...

Hola Como estás.

Primero te quiero felicitar por la página, es excelente!!!

Y aunque estoy de acuerdo con tu filosofía de no dar las cosas todas hechas, necesito que me saques de un duda por favor.

Ya creé el userform y le puse el combobox, y ya está vinculado con la tabla dinámica. Funciona bien, pero cuando escribo la segunda letra sale un error que dice que "no se puede obtener la propiedad pivotfields de la clase pivottable". Sé que tiene que ver con aplicar un evento worksheet_change para que actualice a medida que escribo en el combobox, pero he buscado en casi todas las entradas de tu blog, y aunque he visto esos eventos, no sé cómo aplicarlos para la actualización del combobox.

Esta es la línea en la cual explicas lo que necesito:
"Para que busque de acuerdo al dato introducido, cada vez que cambie el valor del Combobox, haremos que indexe nuevamente. Por lo dicho tendremos que usar un evento “Worksheet_Change”."

Pero te agradecería si me guías para solucionar este inconveniente y continuar con mi proyecto.

De antemano muchas gracias.

Excelminiapps dijo...

Hola amigo, cómo estas! Gracias por escribirnos!
En cuánto a tu consulta, es algún error de la tabla dinámica dado por querer realizar alguna acción no permitida. Por ejemplo si estas buscando algún dato que no esta en la tabla, etc. Lo que recomendamos es que hagas lo mismo que hace la macro pero manualmente para ver el error, se hace evidente.
Esperamos tus comentarios.
Saludos