Saltar al contenido

Extraer de una base de datos a una plantilla a través de búsquedas


Recommended Posts

publicado

Hola a todos,

En primer lugar dar las gracias por todo lo que he aprendido en este foro. Gracias a él, he ido solucionando los problemas que me han ido surgiendo en mi primer y simple proyecto con vba y excel.

Veréis he creado una plantilla donde recojo ciertos datos de producción. El programa funciona bien y ya se van recogiendo datos que se escriben en otra hoja del mismo libro. Ahora quiero hacer la segunda parte que es poder hacer búsquedas y que se rellene la plantilla que he creado.

Os subo el archivo que he creado para que lo veáis. Necesito algún consejo para cómo hacerlo ya que estoy un poco perdido.

El archivo debe estar abierto todo el día y se van recogiendo datos cada 8 horas. Además debo ser capaz de buscar en los datos introducidos sin cerrar el archivo donde se recogen los datos. Es decir, ¿se pueden hacer búsquedas desde otro libro de excel a éste primero y que éste permanezca abierto, sin influir en nada?

Muchas gracias de antemano.

PARTEejemplo2.zip

publicado

Hola de nuevo, a pesar del poco éxito de mi post, comento las novedades.

He conseguido que las plantillas copien los datos en un archivo a parte. Por lo que ahora tengo una base de datos, y las consultas son independientes de la plantilla. Ya sólo necesito hacer las búsquedas en esa base para que me rellene la plantilla original.

Sería una búsqueda de dos criterios, día y turno ¿Alguien podría ayudarme?

publicado

ok mira para la gestion de una base de datos se manejas 4 procesos-creacion(ya lo tienes)-consulta-modificacion - eliminaciontodos ellos pueden usar una macro base que recorre la base de datos segun el dato a buscar por ejemplo si buscaramos por cedula o documento de indentidad recorremos la base buscando en la columna que guardalas cedulasentonces:

sub barrer base de datos()

'vamos a tomar el dato indice(el que identifica a cada registro (fila) de manera individual )

DATOINDICE=SHEETS("LA HOJA QUE SEA").RANGE("LA CELD QUE SEA").VALUE

'UBICAMOS EN CURSOR DONDE EMPIEZAN LOS DATOS

SHEETS("LA HOJA BASE DE DATOS").SELECTRANGE("LA CELD QUE SEA").VALUE

'GENERALMENTE LA COLUMNA Y LA FILA DOS POR QUE EN LA UNO VAN LOS TITULOS DE LA TABLA'

DECLARAMOS UNA VARIABLE QUE NOS DE EL VALOR DE LA FILA A RECORRER; LA COLUMNA ES FIJA

FILA=ACTIVECELL.ROW

'ORDENAMOS A LA BASE DE DATOS QUE LA RECORRA CUNADO EL VALOR SEA DISTINTO DE NADA Y DISTINTO DEL VALOR A BUSCAR

- LO QUE BUSCAMOS ES QUE CUANDO LLEGUE AL VALOR BUSCADO PARE DE RECORRERlO

WHILE ACTIVECELL.VALUE""DATOINDICE AND ACTIVECELL.VALUE"" ""SELECTION.OFFSET (1,0)RANGE A1

FILA=FILA+1

LOOPEN ESTE PUNTO YA PARO EN LA CELDA DONDE ESTA LO QUE BUSCAMOS

AHORA USAMOS LA SINTAXIS DE RANGOS CON VARIABLES PARA ASIGNAR COMO QUERAMOS, LA VARIABLE FILA AHORA ALAMACENA EL NUMERO DE FILA DONDE ESTA EL VALOR BUSCADO

POR EJEMPLO DE DONDE SACAMOS LA INFORMACIÓN A DONDE LA NECESITAMOS

SHEETS("NUESTRO FORMULARIO DE CONSULTA").RANGE("LA CELDA DONDE ATERRIZA EL DATO").VALUE=SHEETS("LA BASE DE DATOS").RANGE("LA COLUMNA DONDE ESTA EL DATO" & FILA).VALUE

IMPORTANTISIMA LA SINTAXIS RANGE ("COLUMNA" & LA VARIABLE)

EL RESTO ES PAN COMIDO POR QUE SE PUEDEN TOMAR LOS DATOS TAL COMO LO HICIMOS AQUI PARA EL FIN QUE SEA...

ESPERO TE SEA ÚTIL .

publicado

Muchas gracias por tomarte la molestia de responderme. Me pongo ahora mismo con la información que me has dado. Tendré lógicamente que adaptarlo a mi caso, que tiene dos singularidades: los datos que tengo que buscar tienen 2 criterios (en realidad 3 criterios pero el criterio de la LÍNEA (que son 3) lo he solucionado haciendo que haya 3 bases de datos (una para cada línea). Los criterios a buscar y que tienen que coincidir son DIA y TURNO. Además está el caso de que normalmente habrá varios registros para ese día y turno. Por otra parte las plantillas de las líneas L11 y L12 son iguales (así como sus bases de datos), sin embargo la línea LP13 tiene una plantilla diferente (y una base de datos también diferente)

Subo la base de datos como lo tengo ahora. Para que se entienda mejor lo que quiero, que es básicamente buscar por LÍNEA, DÍA, TURNO y rellenar una plantilla para mostrar esos datos. Además si pudiera buscar por ÓRDEN, independientemente (puede haber órdenes iguales para líneas y días distintos) para que me dijera qué día, turno y línea se hizo, sería lo ideal.

He estado investigando y he visto otros casos de búsquedas que lo han solucionado con advancedfilter, que no sé si se adaptará mejor a mi caso.

Lo dicho muchas gracias por contestar.

Libro1.zip

publicado

Hola,

Te dejo el ejemplo de como buscar por orden, te comento no esta terminado al 100% por que me salio un imprevisto, pero creo que te ayudara mucho para que lo adaptes a lo que necesitas, los numero de lineas LA11 y LA12 las junte en una misma hoja de esta manera es mas fácil recorrer la búsqueda, espero te sirva como ejemplo para que termines tu proyecto.

Para concatenar búsquedas de dos o mas criterios utiliza el operador AND

Saludos¡¡

Libro1.rar

publicado

Muchas gracias por la ayuda. He implementado las búsquedas y parece que funciona bien, me falta buscar por orden, así que me pongo con lo que me has pasado. Cuando tenga algo hecho lo subo para que lo veáis. Muchas gracias por la ayuda.

Archivado

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

×
×
  • 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.