Copiar consultas y pegar en registros

28/04/2008 - 17:06 por CARLOS CARNERO | Informe spam
Buenas días a todos: Tengo un problema y les agradeceré proporcionarme
una ayuda. Antes que nada he estado revisando acá en el foro los temas
relacionados, pero no llego a encontrar lo que busco, por lo que me
permitiré en describirlo ó graficarlo del modo más breve posible.
Tengo tres hojas: TABLA, CONSULTA y REGISTROS respectivamente.
En la hoja “TABLA” tiene tres columnas Código, Continente y País,
haciendo un total de 11 filas incluyendo el encabezado (A1:C11):
CODIGO CONTINENTE PAIS
AFS AFRICA SUDAFRICA
AFC AFRICA CONGO
AMP AMERICA PERU
AMU AMERICA USA
ASJ ASIA JAPON
EUI EUROPA ITALIA
EUE EUROPA ESPAÑA
EUF EUROPA FRANCIA
OCA OCEANIA AUSTRALIA
OCN OCEANIA NUEVA ZELANDIA


En la hoja de “CONSULTA” tengo cinco columnas (idéntico que en la hoja
“TABLA”), sólo que la primera columna (“A”) es un correlativo del
número de consultas a ejecutar y la columna “B” el usuario que lo esta
realizando (A1:B15).
En la columna “C” desde la fila 1 a la 15, tiene una lista desplegable
de validación de datos, que me recoge el CODIGO_PAIS y las demás
columnas el resultado lo obtengo con un simple BuscarV.
Entonces en la hoja “REGISTROS” tengo tres columnas (lo pongo como un
ejemplo). La columna “A” sería el correlativo del historial de las
consultas, la columna “B” el usuario que esta consultando mientras que
la celda C1 a C200, debería ejecutarse los registros consultados con
una macro desde la tabla “CONSULTA”.
EJEMPLO
Consulto 3 registros de los 15 habilitados hoja (CONSULTA), entonces
solo estos tres (B1:C3) deberían copiar en la hoja
“REGISTROS” (C1:C3). Luego vuelvo a ejecutar una nueva consulta pero
esta tiene ahora 8 registros de los 15 habilitados (CONSULTA),
entonces estos ocho registros debería copiarse y pegarse en la hoja
“REGISTROS” (B4:C11). Es en este momento que tengo el problema.
Estado ejecutando una macro, pero recalco en el problema, copia sólo
las tres primeras filas de la hoja CONSULTA y lo pega en la misma fila
de de registros B1:C3, cuando debería buscar la primera celda en
blanco de la columna B1:B200, la que en realidad sería B4: C11 .
Sub Carasonriente_Haga_clic_en()
'
' Carasonriente_Haga_clic_en Macro
'

'
Range("B1:B15").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlValues,
LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).Activate
Range("B1:C3").Select
Range("B3").Activate
Selection.Copy
Sheets("REGISTROS").Select
Range("B1:B22").Select
Selection.Find(What:="", After:=ActiveCell, LookIn:=xlValues,
LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
MatchCase:= _
False, SearchFormat:=False).Activate
Selection.FindNext(After:=ActiveCell).Activate
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("B4").Select
End Sub


Gracias y saludos desde el Perú,

Carlos Carnero Gálvez

Preguntas similare

Leer las respuestas

#11 Héctor Miguel
06/05/2008 - 04:08 | Informe spam
hola, Carlos !

Tengo el Excel 2007, pero lo guardo como Libro de Excel 97-2003.xls...
... en la hoja “CONSULTA”... he colocado en un boton (control de formulario)
y la sintaxis esta en el modulo1 (General)...



en ese mismo modulo1, cambia/sustituye/reemplaza/... el codigo por el siguiente:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("b1:b15"))
If Consultas = 0 Then Exit Sub
With Worksheets("registros").Range("a65536").End(xlUp).Offset(1)
.Resize(Consultas, 2).Value = Range("b1:c1").Resize(Consultas).Value
End With
Range("b1:c1").Resize(Consultas).ClearContents
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#12 CARLOS CARNERO
06/05/2008 - 18:29 | Informe spam
Hola Héctor agradeciéndote por tu generosa atención:

1° Se está encaminando mi objetivo, sólo que cuando lo copia esta
consulta de la hoja del mismo nombre a la hoja de “REGISTROS”, lo pega
inicialmente desde la celda A2, pero el tema es que necesito que en
este ejemplo la columna A (hoja de REGISTROS), esta sea un
autonumérico que se incremente en +1 automáticamente, cada vez que se
realice el proceso de consulta (activada por esta macro).

2° Si bien es cierto acá me copia y pega filas y columnas adyacentes
¿Es posible en la sintaxis delimitar que otras celdas deberían
realizar este proceso?, ya que el tema consiste en que la hoja
“CONSULTA” esta fraccionado en dos partes: El encabezado donde existen
entre otros campos que se identifica al usuario y la fecha del día
( =hoy() ) y el detalle donde están los códigos de archivos
documentarios consultados.

Muchas gracias,

Carlos

P.D. En la hoja de REGISTROS la columna A, lo tenía inicialmente
referenciando la celda anterior +1.
Respuesta Responder a este mensaje
#13 Héctor Miguel
06/05/2008 - 22:43 | Informe spam
hola, Carlos !

1 ... cuando lo copia... a la hoja de “REGISTROS”, lo pega inicialmente desde la celda A2
... necesito que en este ejemplo la columna A (hoja de REGISTROS), esta sea un autonumerico
que se incremente en +1 automaticamente, cada vez que se realice el proceso de consulta (activada por esta macro).



cambia el codigo anterior por el siguiente:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("b1:b15"))
If Consultas = 0 Then Exit Sub
With Worksheets("registros").Range("a65536").End(xlUp).Offset(1, 1)
.Resize(Consultas, 2).Value = Range("b1:c1").Resize(Consultas).Value
With .Offset(, -1).Resize(Consultas)
.Value = Evaluate("row(" & .Address & ")-1")
End With
End With
Range("b1:c1").Resize(Consultas).ClearContents
End Sub

2... copia y pega filas y columnas adyacentes.
Es posible... delimitar que otras celdas deberian realizar este proceso?
ya que... la hoja “CONSULTA” esta fraccionado en dos partes:
El encabezado donde existen entre otros campos que se identifica al usuario y la fecha del dia ( =hoy() )
y el detalle donde estan los codigos de archivos documentarios consultados...



si tienes mas "detalles en el tintero"... procura exponerlos comentando rangos, hojas, tipo de datos, titulos, etc. etc. etc.
(en la medida en que necesites de una solucion "rapida e integral", de lo contrario)...
lo que no comentes (obviamente) tampoco de podra "ver" (desde este lado del mensaje) ;)

saludos,
hector.
Respuesta Responder a este mensaje
#14 CARLOS CARNERO
06/05/2008 - 23:31 | Informe spam
Héctor:

La idea en cuanto al autonumérico es que por ejemplo en la hoja
“CONSULTA” ingreso en las celdas B1:C2 las consultas que el usuario
“JUAN” (B1 y B2) realiza ingresando el código de los archivos
documentarios ASF y AMU, el proceso de la macro me lo pegara en la
hoja llamada “REGISTROS” A2:C3, siendo la columna “A” (el correlativo)
y es acá el detalle que la celda A1=1, hasta acá esta Ok, pero A2
debería ser también 1 y no 2. ¿Por qué? porque cuando otro usuario por
citar “PEDRO” consulte “n” archivos documentarios, entonces esta será
la segunda consulta y por tanto en la celda A3 ("REGISTROS") será
igual a 2 por los “n” registros que consulte. Y así cuando otro
usuario requiera hacer una nueva consulta, esta será la tercera.

Saludos,

Carlos
Respuesta Responder a este mensaje
#15 CARLOS CARNERO
06/05/2008 - 23:50 | Informe spam
Héctor:

La idea en cuanto al autonumérico es que por ejemplo en la hoja
“CONSULTA” ingreso en las celdas B1:C2 las consultas que el usuario
“JUAN” (B1 y B2) realiza ingresando el código de los archivos
documentarios ASF y AMU, el proceso de la macro me lo pegara en la
hoja llamada “REGISTROS” A2:C3, siendo la columna “A” (el correlativo)
y es acá el detalle que las celda A1=1, hasta acá esta Ok, pero A2
debería ser también 1 y no 2. ¿Por qué? porque cuando otro usuario por
citar “PEDRO” consulte “n” archivos documentarios, entonces esta será
la segunda consulta y por tanto en la celda A3 será igual a 2 por los
“n” registros que consulte. Y así cuando otro usuario requiera hacer
una nueva consulta, esta será la tercera.

Saludos,

Carlos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida