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

Respuesta
1

>

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

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. 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

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Prueba nuevamente con mi macro

Me puedes comentar si todavía tienes algún problema, de lo contrario, podrías valorar la respuesta.

Todavía no he podido :(

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.

Gracias Dante, Ya te envié los archivos

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

Con gusto te sigo ayudando. Puedes crear una nueva pregunta para cada petición. En la nueva pregunta, en el desarrollo de la pregunta expones las diferentes combinaciones que requieres. Al final del desarrollo escribe que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas