Excel - Mejorar macro para sobre escribir información.

 
Vista:
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar macro para sobre escribir información.

Publicado por santi (24 intervenciones) el 12/12/2018 08:52:34
Buenos días.

Tengo esta macro que me coge unos datos y los pega en un libro que está cerrado. Lo hace perfecto. La macro es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Graba()
Dim intFila As Integer
Range("B195:I195").Select
Selection.Copy
Workbooks.Open Filename:= _
"C:\Users\SantiQuirante\Desktop\comercial seguimiento\seguimiento 2019.xlsx"
Sheets("Hoja1").Select
Range("B10").Select
intFila = 2
While Range("a" & CStr(intFila)).Value <> 0
intFila = intFila + 1
Wend
Range("a" & CStr(intFila)).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub.

El problema que tengo es que si en la lista hay un código igual lo sobre escriba. La información que copia está en el rango Range("B195:I195"), pero la información del B195 es la que debe tener en cuenta para ver si está en el listado y sobre escribirla. En B195 hay un código como 1812-1-330 PEPITO. que quiere decir MesAño-codigo comercial-Número oferta + nombre cliente. Necesito que si ese código ya existe lo sobre escriba.



Muchas gracias por la ayuda
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar macro para sobre escribir información.

Publicado por Antoni Masana (2481 intervenciones) el 12/12/2018 10:40:34
He añadido unos pequeños cambios (Sin verificar) que resalto en negrita:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Graba()
    Dim intFila As Integer, Codigo As String
    Codigo = Range("B195")
    Range("B195:I195").Select
    Selection.Copy
    Workbooks.Open Filename:= "C:\Users\SantiQuirante\Desktop\comercial seguimiento\seguimiento 2019.xlsx"
    Sheets("Hoja1").Select
    Range("B10").Select
    intFila = 2
    While Range("A" & CStr(intFila)).Value <> 0 AND Range("B" & CStr(intFila)).Value <> Codigo
        intFila = intFila + 1
    Wend
    Range("A" & CStr(intFila)).Select
    Selection.PasteSpecial Paste:=xlValues,
                           Operation:=xlNone, _
                           SkipBlanks:= False, _
                           Transpose:=False
    ActiveWorkbook.Save
    ActiveWindow.Close
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
0
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar macro para sobre escribir información.

Publicado por santi (24 intervenciones) el 12/12/2018 10:50:16
Hola Antoni,

Gracias por el intento, pero no funciona. Lo copia igual, aunque ya exista igual.

Un saludo
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar macro para sobre escribir información.

Publicado por Antoni Masana (2481 intervenciones) el 12/12/2018 11:30:45
Ya he visto el fallo.

La columna "B" del origen es la "A" del destino. Por eso no funciona el WHILE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Graba()
    Dim intFila As Integer, Codigo As String
    Codigo = Range("B195")
    Range("B195:I195").Select
    Selection.Copy
    Workbooks.Open Filename:= "C:\Users\SantiQuirante\Desktop\comercial seguimiento\seguimiento 2019.xlsx"
    Sheets("Hoja1").Select
    Range("B10").Select
    intFila = 2
    While Range("A" & CStr(intFila)).Value <> 0 AND Range("A" & CStr(intFila)).Value <> Codigo
        intFila = intFila + 1
    Wend
    Range("A" & CStr(intFila)).Select
    Selection.PasteSpecial Paste:=xlValues,
                           Operation:=xlNone, _
                           SkipBlanks:= False, _
                           Transpose:=False
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub.

Es lo que puede pasar sin probar.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 44
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Mejorar macro para sobre escribir información.

Publicado por santi (24 intervenciones) el 12/12/2018 11:47:10
Hola Antoni,

Muchas gracias, va perfecto.

Un saludo
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