¿Cómo copiar una fila en la que hice un cambio en una celda de un libro a otro libro?

Tengo dos libros, un libro1 y un libro2 en excel, mientras cambie una columna ESTADO a valor INCOMPLETO en el libro 1 esa fila tiene que copiarse y pegarse tal y como está en una hoja del libro2, tomando en cuenta que la fila del libro 1 tiene otra columna llamada CICLO(1,2,3), entonces cuando cambie el valor a INCOMPLETO tiene que evaluar si es ciclo 1 se copia en la primera hoja del libro 2, si es 2 se copia en la segunda y si es 3 se copia en la tercera obviamente al último de los registros que ya tengo en el libro2.

Respuesta
1

H o l a:

Pon la siguiente macro en los eventos de tu hoja1 del libro1

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set l1 = ThisWorkbook
    Set h1 = Sheets("WA CONSOLIDADO 2015-5")
    Set l2 = Workbooks("BASE DE BLOQUEO WA 2016-3.xlsx")
    hojas = Array("1 CICLO", "2 CICLO", "3 CICLO")
    col = "A"
    existe = False
    n = 0
    '
    If Not Intersect(Target, Columns("W")) Is Nothing Then
        For Each c In Target
            Select Case UCase(c.Value)
                Case "COMPLETO"
                    codigo = Cells(c.Row, col)
                    For h = LBound(hojas) To UBound(hojas)
                        Set h2 = l2.Sheets(hojas(h))
                        Set b = h2.Columns(col).Find(codigo, lookat:=xlWhole)
                        If Not b Is Nothing Then
                            h2.Rows(b.Row).Delete
                            existe = True
                            n = n + 1
                        End If
                    Next
                Case "INCOMPLETO"
                    Select Case Cells(c.Row, "I")
                        Case 1: Set h2 = l2.Sheets("1 CICLO")
                        Case 2: Set h2 = l2.Sheets("2 CICLO")
                        Case 3: Set h2 = l2.Sheets("3 CICLO")
                    End Select
                    u = h2.Range("W" & Rows.Count).End(xlUp).Row + 1
                    h1.Rows(c.Row).Copy
                    h2.Rows(u).PasteSpecial xlValues
                    Application.CutCopyMode = False
                    existe = True
                    n = n + 1
            End Select
        Next
        Application.ScreenUpdating = False
        If existe Then
            l2.Save
            MsgBox "Registros eliminados: " & n
        End If
    End If
End Sub

Cambia en la macro lo siguiente:

"WA CONSOLIDADO 2015-5", por el nombre de la hoja1 del libro1

"BASE DE BLOQUEO WA 2016-3.xlsx", por el nombre del libro2, el libro2 deberá esta abierto.

"1 CICLO", "2 CICLO", "3 CICLO", por los nombres de tus 3 hojas.

Case 1: Set h2 = l2.Sheets("1 CICLO")
Case 2: Set h2 = l2.Sheets("2 CICLO")
Case 3: Set h2 = l2.Sheets("3 CICLO"), igual , por le nombre de tus 3 hojas del libro2.


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

Avísame si tienes alguna duda.


S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta. G r a c i a s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas