Como copiar y pegar a otra hoja
Tengo mi tabla, con fecha-n factura-razón social-subtotal-iva-monto-clasificación1-clasificacion2. Quiero que cuando clasificacion1 sea pago y clasificacion2 sea transferencia me copie esos datos a otro libro en la hoja transferencia
1 respuesta
>
Supongo que capturas las palabras "pago" y "transferencia" en las columnas "F" y "G" respectivamente.
Pon la siguiente macro en los eventos de tu hoja, cambia "otro libro.xlsx", por el nombre de tu libro destino.
Private Sub Worksheet_Change(ByVal Target As Range) 'Por.Dante Amor If Not Intersect(Target, Range("F:G")) Is Nothing Then If Target.Count > 1 Then Exit Sub If UCase(Cells(Target.Row, "F")) = "PAGO" And _ UCase(Cells(Target.Row, "G")) = "TRANSFERENCIA" Then Set l2 = Workbooks("otro libro.xlsx") Set h2 = l2.Sheets("transferencia") u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1 Rows(Target.Row).Copy h2.Range("A" & u).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If End If End Sub
Cada que modifiques un dato de la columna F o G, la macro revisará las condiciones y si las cumple ese registro que modificaste lo copiará como valores al "otro libro" en la hoja "transferencia"
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- Del lado derecho copia la macro
Saludos. Dante Amor
Si es lo que necesitas.
Hola Dante Gracias...
Me esta dando un error
Sub Copiar_Pago_Transferencia()
If Not Intersect(Target, Range("H:I")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If UCase(Cells(Target.Row, "H")) = "PAGO" And _
UCase(Cells(Target.Row, "I")) = "TRANSFERENCIA" Then
Set l2 = Workbooks("C:\Users\Ana Rodriguez\Desktop\Fitness Market\Office\Admin\2015\FACT CANC MARZO 2015.xlsx")
Set h2 = l2.Sheets("transferencia")
u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
Rows(Target.Row).Copy
h2.Range("A" & u).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
End If
End Sub
Error`424`
Pero la macro que te puse no va en un módulo.
Para que funcione, tienes que seguir las instrucciones que te puse, y tienes que copiar la macro tal cual y veo que le cambiaste esto: "Sub Copiar_Pago_Transferencia()"
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- Del lado derecho copia la macro
Prueba nuevamente con mi macro
Sigue las instrucciones que te puse al principio.
Lo que te envié es una macro que va en los eventos de la hoja.
No pongas la macro en un módulo.
Si quieres una macro para que funcione con un botón, entonces tengo que cambiar la macro, pero me tienes que decir exactamente en qué columna está la información. Si puedes pon imágenes de tus 2 libros.
O envíame tus 2 libros con los ejemplos y te adapta la macro.
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario “ana rodriguez” y el título de esta pregunta.
Esta sería la macro:
Private Sub Worksheet_Change(ByVal Target As Range) 'Por.Dante Amor If Not Intersect(Target, Range("H:I")) Is Nothing Then If Target.Count > 1 Then Exit Sub If UCase(Cells(Target.Row, "H")) = "PAGO" And _ UCase(Cells(Target.Row, "I")) = "TRANSFERENCIA" Then ' Application.ScreenUpdating = False Set l2 = Workbooks("FACT CANC MARZO 2015.xlsm") Set h2 = l2.Sheets("TRANSFERENCIA") u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 Range("B" & Target.Row & ":I" & Target.Row).Copy h2.Range("B" & u).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If End If End Sub
Saludos.Dante Amor
Hola Dante, tengo 2 dudas, utilizando el mismo archivo que me enviaste, hice unas modificaciones para que se copiara la información en cada hoja que corresponde, pero:
1. Me copia siempre en la misma fila y no en la siguiente fila vacía
2. Si cambio una de las características "PAGO" o "TRANSFERENCIA" no me borra del otro archivo esa información
Private Sub Worksheet_Change(ByVal Target As Range) 'Por.Dante Amor 'TRANSFERENCIA If Not Intersect(Target, Range("G:H")) Is Nothing Then If Target.Count > 1 Then Exit Sub If UCase(Cells(Target.Row, "G")) = "PAGO" And _ UCase(Cells(Target.Row, "H")) = "TRANSFERENCIA" Then ' Application.ScreenUpdating = False Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm") Set h2 = l2.Sheets("TRANSFERENCIA") u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 Range("B" & Target.Row & ":F" & Target.Row).Copy h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If End If 'CHEQUE If Not Intersect(Target, Range("G:H")) Is Nothing Then If Target.Count > 1 Then Exit Sub If UCase(Cells(Target.Row, "G")) = "PAGO" And _ UCase(Cells(Target.Row, "H")) = "CHEQUE" Then ' Application.ScreenUpdating = False Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm") Set h2 = l2.Sheets("CHEQUE") u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 Range("B" & Target.Row & ":F" & Target.Row).Copy h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If End If 'EFECTIVO If Not Intersect(Target, Range("G:H")) Is Nothing Then If Target.Count > 1 Then Exit Sub If UCase(Cells(Target.Row, "G")) = "PAGO" And _ UCase(Cells(Target.Row, "H")) = "EFECTIVO" Then ' Application.ScreenUpdating = False Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm") Set h2 = l2.Sheets("EFECTIVO") u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1 Range("B" & Target.Row & ":F" & Target.Row).Copy h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False End If End If End Sub
Gracias de antemano
- Compartir respuesta