Tengo una macro que copia datos de una hoja a otra y quiero modificarla.

La macro es esta, me copia filas a otra hoja mediante una palabra y un botón. Pero lo que pasa es que copia 2 veces la misma información a la otra hoja si presiono 2 veces el botón de la macro y lo que yo quiero es que solo me copie las nuevas y las que ya tenia no las vuelva a copiar.

Sub transferirdatosOtraHoja()
Dim ESTATUS As String
Dim FECHA As String
Dim CLIENTE As String
Dim OS As String
Dim SERIE As String
Dim MODELO As String
Dim ultimafila As Long
Dim ultimafilaPROVEEDOR As Long
Dim cont As Long
Dim PALABRABUSQUEDA As String
PALABRABUSQUEDA = Sheets("DIAGNOSTICO").Cells(5, 59)
PALABRABUSQUEDA = "*" & PALABRABUSQUEDA & "*"
ultimafila = Sheets("DIAGNOSTICO").Range("A" & Rows.Count).End(xlUp).Row
If ultimafila < 4 Then
Exit Sub
End If
For cont = 4 To ultimafila
If Sheets("DIAGNOSTICO").Cells(cont, 1) Like PALABRABUSQUEDA Then
ESTATUS = Sheets("DIAGNOSTICO").Cells(cont, 1)
FECHA = Sheets("DIAGNOSTICO").Cells(cont, 2)
CLIENTE = Sheets("DIAGNOSTICO").Cells(cont, 3)
OS = Sheets("DIAGNOSTICO").Cells(cont, 4)
MODELO = Sheets("DIAGNOSTICO").Cells(cont, 5)
SERIE = Sheets("DIAGNOSTICO").Cells(cont, 6)
ultimafilaPROVEEDOR = Sheets("PROVEEDOR").Range("A" & Rows.Count).End(xlUp).Row
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 1) = ESTATUS
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 2) = FECHA
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 3) = CLIENTE
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 4) = OS
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 5) = MODELO
Sheets("PROVEEDOR").Cells(ultimafilaPROVEEDOR + 1, 6) = SERIE
End If
Next cont
MsgBox "Garantias actualizadas", vbInformation, "Garantias"
End Sub

2 respuestas

Respuesta

Y cómo saber cuáles son nuevas, por el número de serie o por cuál columna, ¿se puede identificar si ya está copiado?

Ti no tienes una columna en específico, entonces que revise todas las columnas desde la A hasta la F y si todas son iguales al nuevo registro a copiar, entonces No lo copie, ¿de lo contrario Sí lo copie?

Si es por el numero de serie, esa columna no se repite y cada una tiene una serie diferente por esa se puede diferenciar.

Te anexo la macro actualizada

Sub Transferir_Datos()
'Act.Por.Dante Amor
    Set h1 = Sheets("DIAGNOSTICO")
    Set h2 = Sheets("PROVEEDOR")
    palabra = "*" & h1.Cells(5, 59) & "*"
    For i = 4 To h1.Range("A" & Rows.Count).End(xlUp).Row
        If h1.Cells(i, "A") Like palabra Then
            Set b = h2.Columns("F").Find(h1.Cells(i, "F"), lookat:=xlWhole)
            If b Is Nothing Then
                u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
                h2.Cells(u, "A") = h1.Cells(i, "A") 'ESTATUS
                h2.Cells(u, "B") = h1.Cells(i, "B") 'FECHA
                h2.Cells(u, "C") = h1.Cells(i, "C") 'CLIENTE
                h2.Cells(u, "D") = h1.Cells(i, "D") 'OS
                h2.Cells(u, "E") = h1.Cells(i, "E") 'MODELO
                h2.Cells(u, "F") = h1.Cells(i, "F") 'SERIE
            End If
        End If
    Next i
    MsgBox "Garantias actualizadas", vbInformation, "Garantias"
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas