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

#21 Héctor Miguel
08/05/2008 - 22:09 | Informe spam
hola, Carlos !

__ 1 __
He traslado el ejemplo a mi programita antes mencionado
entonces el “detalle” esta solucionado (Consulta!B18:C32)
solo que en el ejemplo yo ingresaba al usuario directamente en cada fila
entonces he tratado de buscar algunas opciones, para que los datos del encabezado
que se encuentran exactamente en las celdas H8, D9, D11 y D13
que corresponden a la fecha, tipo de solicitud, usuario 1 y usuario2 respectivamente
usando una condicional “=SI”, si existe el codigo del tema lo iguale a las celdas antes mencionadas
para que luego se peguen en la Hoja “REGISTROS” tal como se hace con el “detalle”
pero luego de procesar la macro y como se definio, esta borra estas consultas, lo cual esta bien
solo que pierdo la formula de la condicional que jalaba los datos del encabezado.



1) la propuesta que "borra" el contenido de celdas donde tienes formulas esta "basada" en tu consulta original:
"> En la hoja de “CONSULTA”... la primera columna (“A”) es un correlativo del numero de consultas a ejecutar"
"> y la columna “B” el usuario que lo esta realizando (A1:B15)"

__ 2 __
El objetivo seria... que en la hoja de REGISTROS tenga estos datos como primera fila y en las columnas respectivas por ejemplo:
A2=macro autonumerico, (esta ok), B2= Consulta!$H$8, C2= Consulta!$D$9, D2= Consulta!$D$11, E2= Consulta!$D$13
F2=Codigo del Tema (esta ok, solo que ahora esta en la columna C o en este caso en la celda C2).
En la siguiente fila:
A3=macro autonumerico, (esta ok), B3= Consulta!$H$8, C3= Consulta!$D$9, D3= Consulta!$D$11, E3= Consulta!$D$13
F3=El siguiente codigo del Tema (esta ok, solo que ahora esta en la columna C o en este caso en la celda C3) y asi sucesivamente.



2) si NO usaste los rangos "apropiados" para exponer (en tu ejemplo inicial) "la situacion REAL"...
(me parece obvio que) tampoco debes esperar una propuesta "acertada" (al menos, "a la primera") <\°|°/>

__ 3 __
Finalmente me he encontrado con dos problemas adicionales que habia omitido:
1. Ambas hojas están protegidas y solo algunas celdas estan habilitadas a efecto de generar la consulta.
2. Tengo dos combox de cuadro combinado (que identifica a los usuarios)
pero observo que al pulsar el enter, no se ejecuta la accion.

Mil gracias y disculpa si involuntariamente no soy claro.



3) si en la realidad, las celdas donde se depositan las consultas NO son [A1:B15]...
y tienes otros datos "generales" que andan "regados por ahi" H8, D9, D11 y D13) para registrar
y/o si tienes mas "detalles en el tintero" (recuerda que mientras no los comentas no se pueden "ver" desde este lado del mensaje)

-> por que no aprovechas la siguiente consulta para exponer (exactamente) el arreglo de los datos y la situacion a resolver ?

saludos,
hector.
Respuesta Responder a este mensaje
#22 CARLOS CARNERO
08/05/2008 - 23:26 | Informe spam
On 8 mayo, 15:09, "Héctor Miguel"
wrote:
hola, Carlos !


1) la propuesta que "borra" el contenido de celdas donde tienes formulas esta "basada" en tu consulta original:
    "> En la hoja de “CONSULTA”... la primera columna (“A”) es un correlativo del numero de consultas a ejecutar"
    "> y la columna “B” el usuario que lo esta realizando (A1:B15)"



Hector esta Ok esta parte en borrar y pegar con el autonumerico luego
de procesar la consulta el contenido (lo encajo el detalle).




__ 2 __

2) si NO usaste los rangos "apropiados" para exponer (en tu ejemplo inicial) "la situacion REAL"...
    (me parece obvio que) tampoco debes esperar una propuesta "acertada" (al menos, "a la primera")    <\°|°/>



Sin duda amigo no tengo absolutamente ninguna replica a ello.


__ 3 __


3) si en la realidad, las celdas donde se depositan las consultas NO son [A1:B15]...
    y tienes otros datos "generales" que andan "regados por ahi" H8, D9, D11 y D13) para registrar
    y/o si tienes mas "detalles en el tintero" (recuerda que mientras no los comentas no se pueden "ver" desde este lado del mensaje)

-> por que no aprovechas la siguiente consulta para exponer (exactamente) el arreglo de los datos y la situacion a resolver ?

saludos,
hector.




Acabo de revisarlo y plasmarlo. Observo que va copiando de uno en uno
cada vez que se ejecuta la macro a traves de un boton, en una fila. Lo
que busco es que por citar las cuatro celdas que esten situadas en
distintos lugares no adyacentes, por decir, en el ejemplo del amigo
Mauricio ("copiar y pegar en columna diferente cada día") en las
celdas H1, H3, H5 y H20, lo pegue estas celdas, exactamente igual en
forma horizontal en las cuatros primeras columnas del sheet2,
conjuntamente con la selección vertical (número de filas de los temas
consultados) del autonumerico de mi ejemplo original (la macro que te
menciono que esta bien en referencia al detalle).

Saludos,

Carlos
Respuesta Responder a este mensaje
#23 CARLOS CARNERO
08/05/2008 - 23:47 | Informe spam
Ejemplo como quedaría en la segunda hoja (REGISTRO) columnas versus
filas:

A B
C D
E F

1 CORREL TIPO FORM. FECHA USUARIO1
USUARIO2 CODIGO
2 1 2 02/05/2008
Pedro Elisa AFC
3 1 2 02/05/2008
Pedro Elisa EUF
4 2 1 02/05/2008
Sonia AMU
5 3 3 03/05/2008
Katty AFS
6 3 3 03/05/2008
Katty OCN
7 3 3 03/05/2008
Katty EUE

Saludos,

Carlos
Respuesta Responder a este mensaje
#24 Héctor Miguel
09/05/2008 - 01:24 | Informe spam
hola, Carlos !

Ejemplo como quedaria en la segunda hoja (REGISTRO) columnas versus filas:



prueba con estas modificaciones:

Sub Botón12_Haga_clic_en()
Dim Consultas As Byte
Consultas = Application.CountA(Range("c2:c15"))
If Consultas = 0 Then Exit Sub
With Worksheets("registros").Range("a65536").End(xlUp).Offset(1, 5)
.Resize(Consultas).Value = Range("c2").Resize(Consultas).Value
.Offset(, -4).Resize(Consultas, 4).Value = Array( _
Range("h8").Value, Range("d9").Value, Range("d11").Value, Range("d13").Value)
With .Offset(, -5).Resize(Consultas)
.Value = Application.Max(.Parent.Range("a:a")) + 1
End With
End With
Range("c2").Resize(Consultas).ClearContents
End Sub

saludos,
hector.

__ la "simulacion" de tabla usando espacios y tabulaciones en lugar de mencionar RANGOS __
A B
C D
E F

1 CORREL TIPO FORM. FECHA USUARIO1
USUARIO2 CODIGO
2 1 2 02/05/2008
Pedro Elisa AFC
3 1 2 02/05/2008
Pedro Elisa EUF
4 2 1 02/05/2008
Sonia AMU
5 3 3 03/05/2008
Katty AFS
6 3 3 03/05/2008
Katty OCN
7 3 3 03/05/2008
Katty EUE
Respuesta Responder a este mensaje
#25 CARLOS CARNERO
09/05/2008 - 18:47 | Informe spam
Héctor expectacular, sólo que me gustaría que limpie tambien tres de
las cuatro variables del encabezado, osea: H8, D11 y D13 (la D9 que se
conserve como esta).

El otro detalle que te comente lineas arriba, era que estas hojas
estan protegidas (tienen ambas la misma clave): ¿Qué es lo que hay que
agregar a esta sintaxis?

Saludos y reeee_ _ _ muchas gracias.

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