Como hacer macros que me busque las nuevas filas de una hoja y copie en otra hoja estas nuevas filas pero solo ciertas columnas

Estos buscando hacer una macros que en el momento de agregar una nueva fila en una Hoja 1 (agregar la fila completa), me copie en otra hoja 2 la nueva fila pero solo algunas columnas de la misma.
También quiero que esta macro se realice cada vez que agrego una nueva fila en la hoja 1 y no asignarla a un botón por ejemplo.

1 respuesta

Respuesta
1

¿A qué se refiere con agregar una fila? ¿Literalmente "Insertar Fila"?

Si es así, que es lo que va a copiar a la Hoja 2, ¿si las filas se insertan vacías?

Hola! Me refiero a ingresar algo en una nueva fila, tengo una hoja con varias columnas para ingresar datos, ej: fecha, número de orden, cantidad, descripción .. Y quiero que cuando rellene una nueva fila (nuevos datos para todas las columnas de esa fila), en otra hoja me extraiga estos datos, pero sólo de algunas columnas ej: solo A, B, C siendo que en la hoja 1 hay muchas más.

Lo otro es que quiero que se pegue en el formato de la tabla que definí en la hoja de destino para que mientras se van agregando nuevas filas mantengan el formato de la tabla de destino.

Gracias!

Ya, pues para esto no haría falta "copiar" y "pegar" se pueden introducir los datos al mismo tiempo. Pero tengo otra duda, cuando dices "y no asignarla a un botón por ejemplo."

Supongo que usted ya tiene una macro para agregar los datos, si es así, en esa misma macro puede agregar las columnas necesarias en la otra hoja.

Cómo al mismo tiempo? ¿Dejar relacionadas las celdas de una hoja con la de la otra?

Había hecho una macro que no me funciona, la idea es que se copie la nueva información de la fila en la nueva hoja, pero solo las columnas A, B, C, P,QUE y que las pegue en la hoja2 en A, B, C, DE, E. No encuentro la forma de hacerlo que no sea recorriendo todo de una vez, ya que yo solo quiero copiar los datos a medida que el los vaya ingresando.

Intente esto:

Sub nouvelles()

Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
h1.Select
Dim i As Integer
Dim j As Integer
encontrado = 0

For i = 2 To u1 'hasta el rango de la hoja1
    For j = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "A") = h2.Cells(j, "A") Then encontrado = 1
        'si A2 de la primera hoja es igual a A2 de la segunda hoja entonces encontrado=1
        If encontrado = 0 Then h1.Range("A" & u1).Copy h2.Range("A" & u2)
            Cells(i, 1).Select
                Selection.Copy
            Cells(j, 1).Select
                ActiveSheet.Paste
            Cells(i, 2).Select
                Selection.Copy
            Cells(j, 2).Select
                ActiveSheet.Paste
            Cells(i, 3).Select
                Selection.Copy
            Cells(j, 3).Select
                ActiveSheet.Paste
            Cells(i, 16).Select
                Selection.Copy
            Cells(j, 4).Select
                ActiveSheet.Paste
            Cells(i, 17).Select
                Selection.Copy
            Cells(j, 5).Select
                ActiveSheet.Paste

    encontrado = 0
    Next i
    Next j
MsgBox "Nueva informacion copiada", vbInformation, " C O U C O U"
End Sub

¿A ver pero de donde salen los datos? ¿Es un formulario? ¿Los escribe directamente celda por celda? ¿Cómo llegan los datos a la hoja 1?

Tienes razón lo puedo dejar liado directamente a la tabla Cuando se complete... me estaba complicando la vida

Los datos se ingresan manualmente a la fila, celda por celda

GRACIAS :)

¿Ya no necesita ayuda?

Bueno, de todas formas puede probar este código:

Private Sub Worksheet_Change(ByVal Target As Range)
h2 As Worksheet
Set h2 = Sheets("Sheet2")
'para la columna A'
If Target.Column = 1 Then
    h2.Range("A" & Target.Row).Value = Target.Value
End If
'para la columna B'
If Target.Column = 2 Then
    h2.Range("B" & Target.Row).Value = Target.Value
End If
'y asi sucesivamente'
End Sub

Ese codigo iria en el modulo de la hoja 1.

Lo que hace es que lo mismo que escriba en la hoja 1, se va escribiendo exactamente en la hoja 2 al mismo tiempo.

Usted solo tiene que especificar las columnas. Column = 1 se refiere a la A. Column = 2 a la B y así con cada una.

Ponga las que solo quiere copiar, y abajo de cada una iría el destino.

¿Se entiende?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas