Visual Basic para Aplicaciones - Como copiar la data de una fila a partir de que una celda tenga información

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por luigui (7 intervenciones) el 17/08/2019 00:18:07
Buenas
Tengo un problema, tengo que copiar una fila a partir de que una celda de dicha fila tenga información, asimismo esta fila debe copiarse en otro libro de tal forma que vaya almacenando cada vez que se grabe y no reemplace.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por MIGUEL (121 intervenciones) el 19/08/2019 21:21:21
Perdón, pero no entiendo muy bien lo que quieres o como lo quieres hacer, supongo que tienes una tabla o rango de celdas con encabezados
que esta en blanco y quieres que al escribir algún dato en ese rango se copie toda la fila a otro libro o quieres que al pulsar un botón se copien todas las filas que contengan al menos un dato o solo la que modificaste?, o solo las celdas que contienen datos en esa fila? y que al no reemplazar seria que en el libro al que se copio repita la fila aunque esta ya exista pero que se agrego otro dato a esa fila en diferente columna o solo si se modifico la celda que contenía ya datos?, o solo quieres que si la hoja tiene algún dato escrito por alguna celda quieres copiar toda la fila a otro libro?, una a la vez como el usuario lo valla pidiendo o todas de una vez?

Podrías subir un ejemplo.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por luigui (7 intervenciones) el 21/08/2019 23:27:22
Te adjunto el archivo que trabajo, Hojas que solo uso son: "Monitoreo", "Action_log"

En el archivo los datos "comentarios" que se coloquen en cualquier celda de ese columna, debe copiar la fila y pegarla en otra pestaña.
Hasta el momento he podido copiar de acuerdo a lo que establecí en una celda y pegarla en la otra pestaña, pero no es lo que requiero.

este es el código que tengo hasta ahora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub copiar()
    Dim ultFila As Long
    Dim celdas As String
    If Sheets("Action_log").Range("A1") = "" Then
        ultFila = 1
    Else
        ultFila = Sheets("Action_log").Range("A" & Rows.Count).End(xlUp).Row + 1
    End If
    celdas = Sheets("Monitoreo").Range("F1")
    Sheets("Monitoreo").Range(celdas).Copy
    Sheets("Action_log").Activate
    Sheets("Action_log").Range("A" & ultFila).Select
    Hoja2.Range("A" & ultFila).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Monitoreo").Activate
    Application.CutCopyMode = False
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de MIGUEL
Val: 424
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por MIGUEL (121 intervenciones) el 22/08/2019 22:36:40
Buenas luigi

Te dejo la macro y el archivo modificado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Grabar()
    'esta macro solo copia si en la columna comentarios hay algo escrito
    Dim ultfila As Long
    Dim f As Long
    f = Sheets("Action_log").Range("A" & Rows.Count).End(xlUp).Row + 1
    ultfila = Sheets("Monitoreo").Range("B" & Rows.Count).End(xlUp).Row
    For i = 5 To ultfila
        'If UCase(Sheets("Monitoreo").Range("I" & i)) Like UCase("ok") Then 'si quieres que solo copie si escribes ok quita el primer apostrofe
                                                                            'y comenta el siguiente if
        If Sheets("Monitoreo").Range("I" & i) <> "" Then
            Sheets("Action_log").Range("A" & f) = Sheets("Monitoreo").Range("C1")
            Sheets("Monitoreo").Range("B" & i & ":" & "I" & i).Copy
            Sheets("Action_log").Activate
            Sheets("Action_log").Range("B" & f & ":" & "I" & f).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                                               :=False, Transpose:=False
            Sheets("Monitoreo").Activate
            If Len(Sheets("Action_log").Range("G" & f)) > 5 Then
                Sheets("Action_log").Range("G" & f) = Format(Sheets("Action_log").Range("G" & f), "0.000")
            End If
            f = f + 1
        End If
    Next i
    Application.CutCopyMode = False
End Sub

La macro copiara las filas y se repetiran en la hoja cuantas veces pulses el boton, para que no se repitan es un poco mas complicado pero no se si asi lo requieras, tendrias que decirme si quieres que la repita en action log si cambia un dato de la fila o si quieres que solo aparesca una vez la fila pero actualizada con el dato que se modifico.

Espero te sirva.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por luigui (7 intervenciones) el 23/08/2019 18:20:46
Te agradezco, fue exactamente como lo necesitaba. Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Hector Madriz
Val: 131
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Como copiar la data de una fila a partir de que una celda tenga información

Publicado por Hector Madriz (29 intervenciones) el 21/08/2019 20:29:40
Buen día, prueba esto:


El contenido de la celda A1 se buscara en las celdas de las columna B si la encuentra copia la fila correspondiente en la Hoja2
1
2
3
4
5
Sub BuscarCopiar()
    Set celda = Range("B:B").Find(Range("A1"), LookIn:=xlValues, LookAt:=xlWhole)
    If Not celda Is Nothing Then _
       Rows(celda.Row).Copy Destination:=Sheets("Hoja2").Rows(Sheets("Hoja2").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
End Sub

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar