Macro: Copiar y pegar de una hoja a otra

11/06/2007 - 00:28 por Bucanero | Informe spam
Hola,
Tengo un problemilla, y es que tengo una hoja en la que estan los datos
globales que obtengo todas las semanas, de los cuales al aplicales una serie
de filtros, voy obteniendo unos datos que copio y pego en otra hoja
manualmente. Esto lo quiero hacer con una macro, con la cual al aplicar el
primer filtro lo copia y lo pega en la otra hoja, pero al aplicar el
siguiente filtro lo copia y lo pega encima del anterior. lo que necesito es
saber como puedo identificar la primera celda de la fila que está vacía
despues de pegar la primera serie de filas obtenidas con el primer filtro
(utilizo 11 filtros y 20 columnas ).
Muchas gracia de antemano por vuestra ayuda.

Preguntas similare

Leer las respuestas

#21 Bucanero
22/06/2007 - 09:18 | Informe spam
Buenos días, Ivan

Perdona el retraso, pero ya sabes cosa del trabajo. En fin ya estoy aqui de
nuevo dando el coñazo. Lo he modificado como me has dicho de la siguiente
manera:

Sub FiltrarPorRefYCantidad()
Dim hj As Worksheet, BD As Worksheet, Criterio As String, _
ultF As Long, ultF_BD As Long, rngDestino As String
Set BD = ThisWorkbook.Worksheets("lanorf")
With BD
If .AutoFilterMode Then .AutoFilterMode = False
On Error Resume Next
.ShowAllData
On Error GoTo 0
ultF_BD = .[c65536].End(xlUp).Row
For Each hj In ThisWorkbook.Worksheets
If hj.Name <> "lanorf" Then
.[a1:t1].Copy hj.[a1]: ultF = hj.[c65536].End(xlUp).Row + 1
rngDestino = "a" & ultF & ":t" & ultF
Criterio = ",or(and(e2>!3100,e2<!3900)," & _
"and(e2>!5000,e2<!6100),e2&1200," & _
"e2&1300,e2(4200,and(e2>61100,e261200)," & _
"e262200,and(e2>I0000,e2<I9000)," & _
"e2&1002,and(e2>p0000,e2<y9000"
Select Case hj.Name
Case "A-320"
Criterio = Criterio & ",and(e2>$2100,e2<$2199)," & _
"e261100,e2&1200"
Case "M-XX"
Criterio = Criterio & "and(e2!6100,e2&1400"
Case "M-X1"
Criterio = Criterio & "and(e2!6100,e2&1400"
Case "B-XXX"
Criterio = Criterio & "and(e2>$1100,e2<$1110"
End Select

Criterio = "=and(c2=""" & hj.Name & """" & Criterio & ")))"
.[v1:v2].ClearContents: .[v2].Formula = Criterio
.Range("a1:t" & ultF_BD).AdvancedFilter _
action:=xlFilterCopy, criteriarange:=.[v1:v2], _
copytorange:=hj.Range(rngDestino), unique:=False

With hj: .Rows(ultF).Delete: .Columns.AutoFit: .[v2].Clear: End With
End If
Next
End With
Set BD = Nothing
End Sub

Bueno que me estoy volviendo torpe o... pero el caso es que no doy con la
solución.

Si necesitas el fichero de nuevas te lo puedo generar otra vez, pues yo lo
importo de un archivo en formato de texto. Asi que generarlo es poca cosa.

Voy a seguir currando, que hoy tengo mucho que hacer.

Un saludo


"Ivan" escribió:

hola Manuel, disculpa la tardanza, pero entre que ando un poco liado, y que, justo cuando estaba 'acabando' las pruebas
con tu archivo me ocurrio algo extraño con el y he tenido que replantearlo, no he tenido tiempo de asomarme demasiado.

en cuanto a lo que comentas, eso era lo que yo creia en un principio, pero tu anterior mensaje me descoloco, de ahi mis
dudas.

no he tenido tiempo de prepara nada, pero mientras tanto puedes hacer algo parecido a lo que te comento: (1º otra
cosilla: te recomiendo que uses mejor el ultimo codigo, el que tiene Criterio1 antes del bucle)

1ª .- pon todos los criterios comunes a todas las ref. en la primera carga de 'Criterio' ( o si te decides por el ultimo
codugo, cargas 'Criterio1' con ellas)

2º .- cambia el =>> If hj.Name = "A-320" Then Criterio = Criterio & ",and(e2>p0000,e2<y0000"
por una estructura If .Then ...ElseIf...Then , o por un Select Case

podrias hacer algo mas o menos asi (te pongo un ej. con select case):

Select Case hj.Name
Case "A-320"
Criterio = Criterio & ",and(e2>p0000,e2<y0000"
Case "Otra_Referencia"
Criterio = Criterio & "el/los criterio/s que sea/n"
Case "Otra Referncia mas"
Criterio = Criterio & "el/los criterio/s que sea/n"
Case "Otra r.
Criterio=...
...
End Select

bueno, si quieres haz unas pruebas a ver que tal. En cuanto acabe tu archivo te lo mando ( es una pena lo que me ha
ocurrido, me da la impresion de que se ha debido corromper,< por cierto, la copia que me mandaste ¿era nueva o llevaba
ya mucho trajin?>. Bueno, he estado a punto de enviar una consulta al respecto, y posiblemente acabe haciendolo.

un saludo
Ivan



Respuesta Responder a este mensaje
#22 Ivan
22/06/2007 - 12:20 | Informe spam
hola Manuel,

no lo he probado, pero prueba a cambiar tu select case (mantienes el
problema del cierre de parentesis que te comente)=>>>

Select Case hj.Name
Case "A-320"
Criterio = Criterio & ",and(e2>$2100,e2<$2199)," & _
"e261100,e2&1200"
Case "M-XX"
Criterio = Criterio & "and(e2!6100,e2&1400"
Case "M-X1"
Criterio = Criterio & "and(e2!6100,e2&1400"
Case "B-XXX"
Criterio = Criterio & "and(e2>$1100,e2<$1110"
End Select

por este otro =>>>>

Select Case hj.Name
Case "A-320"
Criterio = Criterio & "),and(e2>$2100,e2<$2199)," & _
"e261100,e2&1200"
Case "M-XX"
Criterio = Criterio & "),and(e2!6100,e2&1400"
Case "M-X1"
Criterio = Criterio & "),and(e2!6100,e2&1400"
Case "B-XXX"
Criterio = Criterio & "),and(e2>$1100,e2<$1110"
End Select

a ver que tal (veo que no acabas de animarte a usar el ultimo codigo)

un saludo
Ivan
Respuesta Responder a este mensaje
#23 Ivan
22/06/2007 - 14:26 | Informe spam
hola de nuevo,

un comentario respecto a esto=>>>

pues yo lo importo de un archivo en formato de texto





supongo que este es el motivo de que todas las celdas esten repletas
de 'espacios' tanto por delante como por detras, complicando un poco
la cosa ( ten en cuenta que las siguientes 'cadenas' no son iguales :
"Casa", " Casa", " Casa " y/o " Casa ", y en tu archivo, siguiendo el
ej. algunos son asi: " Casa", " Casa " o "Casa "
<considera cada cadena como TODO lo que va entre las comillas> )

te convendria quitar dichos espacios, por ejemplo, si es por codigo
con algo como : 'celda tal = Trim(celda tal) o via formula poniendote
en una nueva hoja y algo asi (pej) en a1 pones '=espacios(ianorf!a1) ,
ojo a los nros y fechas pues se convertiran en texto(si es que no lo
son ya) y deberias reconvertirlos.(creo)

bueno, es solo porque esto tambien te puede estar dando problemas

un saludo
Ivan
Respuesta Responder a este mensaje
#24 Bucanero
23/06/2007 - 19:06 | Informe spam
"Ivan" escribió:

hola de nuevo,

un comentario respecto a esto=>>>

>>pues yo lo importo de un archivo en formato de texto

supongo que este es el motivo de que todas las celdas esten repletas
de 'espacios' tanto por delante como por detras, complicando un poco
la cosa ( ten en cuenta que las siguientes 'cadenas' no son iguales :
"Casa", " Casa", " Casa " y/o " Casa ", y en tu archivo, siguiendo el
ej. algunos son asi: " Casa", " Casa " o "Casa "
<considera cada cadena como TODO lo que va entre las comillas> )

te convendria quitar dichos espacios, por ejemplo, si es por codigo
con algo como : 'celda tal = Trim(celda tal) o via formula poniendote
en una nueva hoja y algo asi (pej) en a1 pones '=espacios(ianorf!a1) ,
ojo a los nros y fechas pues se convertiran en texto(si es que no lo
son ya) y deberias reconvertirlos.(creo)

bueno, es solo porque esto tambien te puede estar dando problemas

un saludo
Ivan


Respuesta Responder a este mensaje
#25 Bucanero
24/06/2007 - 12:19 | Informe spam
"Bucanero" escribió:
Hola que tal,

Ayer por la tarde te puse un comentario sobre un nuevo problema que me dá la
macro, pero no se por que motivo no ha salido expuesto, asi que te lo vuelvo
a comentar. El problema es el suiguiente


Select Case hj.Name
Case "A-320"
Criterio = Criterio & "),and(e2>$2100,e2<$2199)," & _
"e261100,e2&1200"
Case "M-XX"
Criterio = Criterio & "),and(e2!6100,e2&1400"
Case "M-X1"
Criterio = Criterio & "),and(e2!6100,e2&1400"
Case "B-XXX"
Criterio = Criterio & "),and(e2>$1100,e2<$1110"
End Select

con los datos concretos (no te los pongo ahora por que no los tengo aquí,
sino en casa) y me da un error de una ventana con un 400, cuando llega a la
útima hoja, es decir, la del A-320. Las demas hojas si las hace sin ningun
problema, y nos las he cambiado de nombre.

En fin, ahora no puedo seguir mucho con el tema, pero cuando llegue a casa
continuaré.

un saludo
Manuel


"Ivan" escribió:

> hola de nuevo,
>
> un comentario respecto a esto=>>>
>
> >>pues yo lo importo de un archivo en formato de texto
>
> supongo que este es el motivo de que todas las celdas esten repletas
> de 'espacios' tanto por delante como por detras, complicando un poco
> la cosa ( ten en cuenta que las siguientes 'cadenas' no son iguales :
> "Casa", " Casa", " Casa " y/o " Casa ", y en tu archivo, siguiendo el
> ej. algunos son asi: " Casa", " Casa " o "Casa "
> <considera cada cadena como TODO lo que va entre las comillas> )
>
> te convendria quitar dichos espacios, por ejemplo, si es por codigo
> con algo como : 'celda tal = Trim(celda tal) o via formula poniendote
> en una nueva hoja y algo asi (pej) en a1 pones '=espacios(ianorf!a1) ,
> ojo a los nros y fechas pues se convertiran en texto(si es que no lo
> son ya) y deberias reconvertirlos.(creo)
>
> bueno, es solo porque esto tambien te puede estar dando problemas
>
> un saludo
> Ivan
>
>
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida