Mejorar Macro que Copia datos de Hoja a Hoja segun condición
Espero lo hayan pasado bien en esta navidad y que este año nuevo sea de lo mejor para todos ustedes, escribo.
Por que tengo un problema:
Y es que quiero mejorar esta macro:
Lo que hace el primer procedimeinto, es copiar los datos de una hoja a otra ( Hoja3 a Hoja1) si coniciden los códigos, es decir si es que los código que estan en la columna (A) de la hoja 3 coinciden con los códigos qu esta en la columna ("G") de la hoja1, se copian los datos de la columnas Cy D de la hoja 3 a las columnas ( "Q" y "P") de la hoja 1, respectivamente. Y si no encuentra el código sale un mensaje que indica que el código no existe en la Hoja1 por lo que nos e copia ningún dato.
Hasta ahí todo bien, sin embargo he tratado de poner una "X" en las columna "E" de la hoja 3 a aquellos códigos cuyos datos fuerón copiados a la hoja 1 pero no lo he conseguido. La macro que se ha tratado de hacer esta en el segundo procedimiento("ponex"), pero lo hace a todos cuyo celda este vacia incluyendo a aquellas filas cuyos datos no han sido pasado a la hoja1 por que el código no existe.
Lo que busco es que ponga una X a las celdas de la columna "E" cuyos datos hans sido copiados por que los código coinciden.
Espero puedan ayudarme y haberme dejado entender.
Sub CopiaDatosHoja1() 'esta macro actualiza los datosÁCTUALIZA EL KARDEX DE LA MADERA EN TROZAS CON RESPECTO A LO ASERRADO
Application.ScreenUpdating = False
Ufc = Hoja3.Range("A9").End(xlDown).Row
Hoja3.Select
Range("A10").Select
Do Until ActiveCell = "" 'ubica el código
varcod = ActiveCell
VarPlanta = ActiveCell.Offset(0, 2)
VarFecha = ActiveCell.Offset(0, 3)
VARMOV = ActiveCell.Offset(0, 4)
Hoja1.Select
Range("G13").Select 'busca el código en la column "g" partuendo desde G13
sw = 0
Do Until ActiveCell = ""
If ActiveCell.Value = varcod Then
sw = 1
If VARMOV = "" Then 'entrada
ActiveCell.Offset(0, 9).Value = VarFecha
ActiveCell.Offset(0, 10).Value = VarPlanta
VARMOV = "X" 'debe poner una x pero no lo hace?
Else
End If
End If
ActiveCell.Offset(1, 0).Select
Loop
If sw <> 1 Then
MsgBox ("Troza no registrada:" & "" & varcod)
End If
Hoja3.Select
ActiveCell.Offset(1, 0).Select
'ponex '=====como modifico esta macro DE TAL MANERA QUE LO HAGA SOLAMENTE CUANDO LOS CÓDIGOS COINCIDEN TAL COMO
Loop
End Sub
'____________________
Sub ponex()
'http://www.todoexpertos.com
'ESTA MACRO PONE UNA X CUANDO LOS DATOS DE LAS COLUMNAS C Y D FUERON COPIADOS A
'LA HOJA1, SIN EMBARGO SE NECESITA MODIFICAR POR QUE LO HACE en toda la columna siempre que esten vacios.
Ufc = Hoja3.Range("A9").End(xlDown).Row
Hoja3.Select
ActiveCell.Offset(1, 0).Select
Contador = 0
For i = 10 To Ufc
If Range("E" & i) = "" Then
Contador = Contador + 1
Range("E" & i) = "X"
End If
Next
MsgBox ("Se han considerado " & Str(Contador) & " Trozas")
Hoja3.Activate
'End If
End SubSaludos.
Y un Gran Año venidero para todos ustedes.
Celim