Insertar celdas de una hoja a otra hoja de excel en VBA

Quiero crear una macro donde me capture los valores de unas filas de una hoja excel, denominada Topcon, y me los inserte en otra hoja excel, denominada DEVOLUCIONES. Esta segunda hoja es donde se van incorporando datos de 9 hojas más como la primera de TOPCON. Por eso se tienen que ir incorporando cuando yo genere una devolución hasta esta hoja DEVOLUCIONES.

En la hoja de TOPCON, hay 3 columanas variables y 2 fijas:

- B5 y C4 son fijas para el resto, es decir es el número de albarán y proveedor que son valores siempre fijos para las siguientes variables.

- El resto de filas variables son desde las posiciones A7, B7 y C7.

En la hoja DEVOLUCIONES, hay 5 columnas:

- 1ª columna. Los registros empiezan en la casilla A4 y aquí iría el valor de la hoja TOPCON correspondiente a la casilla B5.

- 2ª columna. Empiezan en la casilla B5 y aquí iría el valor de TOPCON C4.

- 3ª columna. Casilla C5 y aquí iría el valor de TOPCON A7.

   - 4ªcolumna. Casilla D5 y aquí iría el valor de TOPCON B7.

- 5ª columna. Casila E5 y aquí iría el valor de TOPCON C7.

En la Hoja Topcon en ocasiones puede haber 5 registros, como 8, como 10. Es decir, no tiene porque siempre haber un mismo número de registros a exportar a la hoja devoluciones.

A ver si me podéis echar una mano.

2 respuestas

Respuesta
3

Te anexo la macro

Sub Copiar_Celdas()
'Por.Dante Amor
    Set h1 = Sheets("TOPCON")           'hoja origen
    Set h2 = Sheets("DEVOLUCIONES")     'hoja destino
    '
    If h1.Range("B5") = "" Then
        MsgBox "Falta el dato de la celda B5"
        Exit Sub
    End If
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    If u2 < 5 Then u2 = 5
    u1 = h1.Range("B" & Rows.Count).End(xlUp).Row
    If u1 < 7 Then u1 = 7
    For i = 7 To u1
        h2.Cells(u2, "A") = h1.Range("B5")
        h2.Cells(u2, "B") = h1.Range("C4")
        h2.Cells(u2, "C") = h1.Cells(i, "A")
        h2.Cells(u2, "D") = h1.Cells(i, "B")
        h2.Cells(u2, "E") = h1.Cells(i, "C")
        u2 = u2 + 1
    Next
    'Limpiar datos
    h1.Range("B5") = ""
    h1.Range("C4") = ""
    h1.Range("A7:C" & u1).ClearContents
    '
    MsgBox "Datos copiados"
End Sub

'

Si la ubicación de las celdas a copiar en las otras 9 hojas son diferentes, entonces tendrás que hacer una macro para cada hoja. Pero si las ubicaciones son las mismas entonces cambia en la macro esta línea:

Set h1 = Sheets("TOPCON")

Por esta línea:

Set h1 = ActiveSheet

Ejecuta la macro sobre la hoja activa de la cual quieras copiar los datos hacia la hoja "DEVOLUCIONES".


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas