Saltar al contenido

Buscar datos en dos libros


arkero24

Recommended Posts

Buenas tardes Señores:

He desarrollado un Formulario que tiene un texbox y un boton (txtDatos y btnBuscar), para ingresar un dato; y lo que deseo hacer es lo siguiente, en una hoja de trabajo tengo un litado para articulos, en cada fila se listará un artículo el cual tiene un codigo especifico, su detalle y su cantidad, ademas de su precio; debo adjuntar una columna que contenga un valor que me permitirá guardar un valor, y he ahi mi problema he adjuntado un boton a la hoja de excel que al ser presionado llama al formulario, al ingresar un valor en la caja de texto y presionar enter (o presionar el boton, cualquiera de los dos), se debe realizar una busqueda del codigo ingresado y si está en la lista se debe ir incrementando en la columna adicional (llamda conteo) el valor (de uno en uno)y si el codigo ingresado no corresponde con ninguno de la lista se debe buscar en un libro externo donde se guarda un listado maestro, e importar los datos y agregarlos en la lista inicial.

[ATTACH]24817.vB[/ATTACH]

Como pueden observar, aparecen 4 puntos: 1 el boton que llama el formualrio,

2 la busqueda y comparación del codigo de la caja de texto con el codigo del listado, 3 añadir a la columna conteo el incremento del valor si coincide el valor de la caja de texto con uno del listado, y 4 añadir una nueva linea que busque de otro listado maestro si el valor digitado no coincide con ninguno de la lista actual.

Es facil o dificil?? Por fa vor me podrían ayudar??

Dios los bendiga por su valiosa ayuda.

post-64914-145877003449_thumb.jpg

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Hola

Para lo tuyo no considero necesario ningun formulario, pues es suficiente, desde una celda escribir el codigo y con la funcion CONTAR.SI sera mas que suficiente encontrar cuantas veces aparece

Espero intentes y nos comentas

Saludos desde Honduras

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Creo que no me hice entender bien.

Gerson, muchas gracias por respodner pero, a mi parecer no me expliqué lo suficiente:

Mira, a mí me entregan un listado de artículos (como si fuera una base de datos), y una cantidad de tirillas de venta (al rededor de 3000 o más); cada fila del listado tiene un codigo, su detalle y un stock o cantidad (además de su costo) y las tirillas tienenn el codigo del articulo que concuerda con el codigo del listado. Lo que debo hacer es realizar un conteo de las tirillas de acuerdo al código, y sumarlas manualmente. Pero como excel permite hacer más rápida y efieicnte la tarea, crei conveniente una macro para tal fin.

Por ello decidi crear en un formulario una caja de texto y un botón, además debo adjuntar una Columna (conteo), al final de cada articulo, que contenga el valor el cual se deberá ir incrementando cada vez que en mi cajita de texto aparezca el código a que hace relación a ese articulo. El contar si, me serviria si tuviera repetidas veces cada articulo.

Lo captas? Es decir en la columna adicional debe irse sumando de uno en uno el articulo si su código es digitado en la caja de texto.

Ahora bien, si no existe el codigo en el listado, pero si en las tirillas, debe agregarlo al final del listado y buscar en otro listado los atributos de dicho articulo, el detalle, el valor y el stock. Es decir sólo voy a interactuar con la caja de texto (las tirillas que son 3000 o más) y la columna extra adicionada al final del listado. Claro si hay otros proceso es fail realizarlos con la funciones predeterminadas de excel.

Ejemplo: el codigo 025 corresponde a manzanas y cada vez que que una tirilla tenga el codigo 025, y éste se digite en la columna denominada "conteo", que agregué al final de cada articulo, deberá irse incrementando el valor de "conteo" en uno. Ahora bien si por ejemplo no tengo el codigo 123 debe agregarlo abajo de la lista y buscar en un listado maestro los datos corresóndientes a ese articulo. (detalle costo, stock etc) y continuar normal, espero haberme hecho entender o lo enredé más???

Eso es todo, lo que se debe hacer.

Mil y Mil Gracias!!!

Enlace a comentario
Compartir con otras webs

Invitado luigi

Re: VB y Boton

Hola arkero, con el permiso de Gerson, lo más efectivo sería que subieses una copia de tu archivo al Foro, así está especificado en las Normas.

Saludos.

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Mira envio dos archivos en formatos excel 2010, los cuales son "linventarios" y "maestra", en el primero hay un boton con el texto "buscar", el cual se usa para llamar el formulario que permite introducir el codigo de las tirillas (o facturas de venta que arroja el sistema y que como es obvio, cada tirilla tiene varios -1 ó más - códigos, ya que una venta se compone de varios items). Ahora es claro, debo suponer. Al digitar uno de los codigos si esta en "linventario" lo que debe hacer es incrementar en uno cada vez que se digite el valor denominado "conteo" (D1), pero si el codigo del producto introducido no está en linventario debe buscarse en maestra. en introducirse en la ultima linea., esto para hacer algunos calculos xxx, yyy que como ves aparecen.

Los pormenores de lo que deseo haga la macro son:

1. Al digitar el codigo, en la caja de texto del formualrio llamado desde el botón "buscar", debe buscarlo en "linventario" y si dicho código está, debe ir a la casilla o celda correspondiente e incrementar el valor de "conteo"; de lo contario debe busar en "maestra" y traer de dicha lista el detalle y el stock y adicionarlo al final de "linventario".

2. Ahora bien, si el código no esta o bien en "linventario" o bien en "maestra" deberá emitir un mensaje advirtiendo de Error de digitación de codigo pues solo debe deberse a este factor que no se halla el código en ninguna de las dos listas.

linventarios.xls

maestra.xls

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Hola arkero

Prueba con este codigo y nos cuentas como te fue

Pega el codigo en tu Private Sub CommandButton1_Click()

Private Sub CommandButton1_Click()
codigo = Me.TextBox1.Value
uf = Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo error:
valorcodigo = Range("A2:A" & uf).Find(codigo, LookIn:=xlValues, lookat:=xlWhole).Row
conteo = conteo + 1: Range("D2") = Range("D2") + conteo
windCaja.Hide: MsgBox "Conteo: " & Range("D2"): On Error GoTo 0: Exit Sub
error:
With Workbooks("maestra.xls").Sheets("listadomaestro")
uf2 = .Range("A" & Rows.Count).End(xlUp).Row
Set valorcodigo2 = .Range("A2:A" & uf2).Find(codigo, LookIn:=xlValues, lookat:=xlWhole)
If valorcodigo2 Is Nothing Then MsgBox "Codigo no encontrado": Set valorcodigo2 = Nothing: Exit Sub
.Range(.Range("A" & valorcodigo2.Row), .Range("B" & valorcodigo2.Row)).Copy Range("A" & uf).Offset(1, 0)
.Range("D" & valorcodigo2.Row).Copy Range("C" & uf).Offset(1, 0)
windCaja.Hide: On Error GoTo 0: Set valorcodigo2 = Nothing
End With
End Sub[/PHP]

[b]Debes tener los dos libros abiertos (aunque hay una alternativa, para abrir y cerrar el libro "mestra" desde VBA)

[/b]Saludos desde Honduras

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Estimado Gerson!:

Qué pena no haber respondido antes!!

Lo que pasa y como ves! No soy un ducho en eso de las macros! Aunque alguna vez programé en .Net.

He descargado y probado tu código pero me da problemas!! No sé que es!

En un comienzo comienza a sumar pero sólo suma en la celda inical (D2) y posteriormente lanza como una excepción!!

Es decir, no adiciona lineas nuevas y solo suma en la D4 y no las respectivas.

No sé que será... He hecho como me has dicho, he abierto simultaneamente los dos archivos "maestra" y !linventario" pero me da ese problema. Lo ideal es que sume de uno en la celda conteo correspondiente al item buscado; si no está pues que lo anexe y continúe así según se requiera. No sé si seá el office 2010.

(De cualquier manera te envio los archivos con la macro editada)

Mil gracias!!

maestra.xls

linventarios.xls

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Hola

Prueba con la siguiente macro:

Private Sub CommandButton1_Click()
With Application
.ScreenUpdating = False
codigo = Me.TextBox1
If codigo = "" Then MsgBox "Ingrese un codigo!", vbExclamation, "Error...": Exit Sub
uf = Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo error:
valorcodigo = Range("A2:A" & uf).Find(Val(codigo), LookIn:=xlValues, lookat:=xlWhole).Row
conteo = conteo + 1: Range("D2") = Range("D2") + conteo: Me.TextBox1 = Empty
windCaja.Hide: MsgBox "Conteo: " & Range("D2"), vbInformation, "Codigo ya existe": On Error GoTo 0: Exit Sub
error:
ruta = .ThisWorkbook.Path
separador = .PathSeparator
nombre = "maestra.xls"
.Workbooks.Open ruta & separador & nombre
ThisWorkbook.Activate
With Workbooks(nombre).Sheets("listadomaestro")
uf2 = .Range("A" & Rows.Count).End(xlUp).Row
Set valorcodigo2 = .Range("A2:A" & uf2).Find(Val(codigo), LookIn:=xlValues, lookat:=xlWhole)
If valorcodigo2 Is Nothing Then
MsgBox "Codigo no encontrado", vbExclamation, " >>> " & Val(codigo)
Me.TextBox1 = Empty
windCaja.Hide
On Error GoTo 0
Workbooks(nombre).Close
Exit Sub
End If
.Range(.Range("A" & valorcodigo2.Row), .Range("B" & valorcodigo2.Row)).Copy _
Range("A" & uf).Offset(1, 0)
.Range("D" & valorcodigo2.Row).Copy Range("C" & uf).Offset(1, 0)
Me.TextBox1 = Empty
windCaja.Hide: On Error GoTo 0: Set valorcodigo2 = Nothing: Workbooks(nombre).Close: Exit Sub
End With
.ScreenUpdating = True
End With
End Sub[/PHP]

Lo de sumar en la celda no me quedo claro... (y ya no es necesario que abras el libro "maestra")

Te adjunto el archivo

Saludos desde Honduras

Buscar datos en varios libros.zip

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Gerson:

Creo que he perdido el norte, con este bendito Macro; te digo nuevamente que:

Si digito un codigo que exista, si suma de uno en uno pero en la celda D2, es decir inicialmente se tienen dos ítems con codigos 221 y 223; cada item tiene: codigo, detalle,stock, conteo, xxx y yyy.

Lo que se requiere es que si busco el codigo 223 en las tirillas o facturas, pues que en la celda conteo (d3)la incremente en uno cada vez que se digite este mismo codigo, o bien si se digita el codigo 221 pues que sea la celda conteo d2, o bien si el item no esta en linventario, pero si en maestra, pues que agregue este nuevo item e incremente el conteo d4 en uno es decir conteo se debe incrementear donde corresponda no siempre en la celda d2 como lo esta haciendo; además cada que ingreso un codigo se cierra la el formulario y no debe ser asi.

Este es el problema del incremento que tal vez no he sabido explicar bien.

Gerson, te agradezo la ayuda tan vital, pero donde podria comenzar para ir aprendiendo????

May God Bless ya!!!

Enlace a comentario
Compartir con otras webs

Re: VB y Boton

Hola arkero24

Prueba con el siguiente codigo (modificado levemente)

Private Sub CommandButton1_Click()
With Application
.ScreenUpdating = False

codigo = Me.TextBox1
uf = Range("A" & Rows.Count).End(xlUp).Row
On Error GoTo error:
valorcodigo = Range("A2:A" & uf).Find(Val(codigo), LookIn:=xlValues, lookat:=xlWhole).Row
conteo = conteo + 1: Range("D" & valorcodigo) = Range("D" & valorcodigo) + conteo
Range(Range("A" & valorcodigo), Range("D" & valorcodigo)).Select
With Me
.TextBox1 = ""
.TextBox1.SetFocus
End With
On Error GoTo 0: Exit Sub
error:
ruta = .ThisWorkbook.Path
separador = .PathSeparator
nombre = "maestra.xls"
.Workbooks.Open ruta & separador & nombre
ThisWorkbook.Activate
With Workbooks(nombre).Sheets("listadomaestro")
uf2 = .Range("A" & Rows.Count).End(xlUp).Row
Set valorcodigo2 = .Range("A2:A" & uf2).Find(Val(codigo), LookIn:=xlValues, lookat:=xlWhole)
If valorcodigo2 Is Nothing Then
MsgBox "Codigo no encontrado", vbExclamation, " >>> " & Val(codigo)
With Me
.TextBox1 = ""
.TextBox1.SetFocus
End With
On Error GoTo 0
Workbooks(nombre).Close
Exit Sub
End If
.Range(.Range("A" & valorcodigo2.Row), .Range("B" & valorcodigo2.Row)).Copy _
Range("A" & uf).Offset(1, 0)
.Range("D" & valorcodigo2.Row).Copy Range("C" & uf).Offset(1, 0)
With Me
.TextBox1 = ""
.TextBox1.SetFocus
End With
On Error GoTo 0: Set valorcodigo2 = Nothing: Workbooks(nombre).Close: Exit Sub
End With
.ScreenUpdating = True
End With
End Sub
[/PHP]

Saludos desde Honduras

Buscar datos en varios libros.zip

Enlace a comentario
Compartir con otras webs

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.