Crear macro - Actualizar libro Excel usando otros Libros

Tengo una planilla general que se actualiza con libros de otras personas, me gustaría automatizar este proceso y que me guiaran de por donde empezar si se puede hacer

Abro el libro de destino (donde van a quedar todos los datos) y le paso el libro de origen (que tiene datos nuevos y viejos)

El encabezado va de la columna B7 hasta S7.

No pueden haber filas con fecha de inicio "Columna C" sin numero de incidente.
Si "Columna P" es igual a "Pendiente" en "En Progreso" o "Nuevo" no pueden tener fecha de finalizado en la "Columna N".
Si "Columna P" es igual a "Finalizado" "Cerrado" o "Cancelado" tienen que tener fecha de Finalizado en la "Columna N".
Las fechas no pueden ser < al año actual.

//Si esta todo bien continuamos con actualizar datos

//Si esta mal que me avise solamente y se revisa a mano igual

Fijarse si el numero de incidente existe "Columna O".

Si no existe Agregarlo al final. En el libro de destino que es el que tengo abierto
Si existe fijarse que sea "derivado" en la "Columna P" entonces se agrega.
Si no es "derivado" en la "Columna P" actualizar datos. De toda la fila (reemplazar)

1 Respuesta

Respuesta
1

Solución parte de las validación que este bien completada la planilla

Private Sub CommandButton1_Click()
'Fila Columna Cells(1,1)
Dim colFechaF As Integer: colFechaF = 14
Dim colFechaE As Integer: colFechaE = 13
Dim colFechaC As Integer: colFechaC = 3

Dim minDate As Date
minDate = #1/1/2018#
'desde fila 7 hasta la ultima que encuentre
For f = 7 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Dim strError As String: strError = ""
'Cerrado Cancelado Finalizado Derivado Tienen que tener fecha Finalizado
If (Cells(f, 16).Value = "Cerrado" Or Cells(f, 16).Value = "Cancelado" Or Cells(f, 16).Value = "Finalizado" Or Cells(f, 16).Value = "Derivado") Then
If Cells(f, colFechaF).Value <> "" Then
Cells(f, 23).Interior.Color = RGB(166, 255, 77)
Cells(f, 23).Value = "Ok"
Else:
strError = strError + " - Falta fecha Finalizado"
End If
'Nuevo En Progreso Pendiente no Tienen que tener fecha Finalizado
ElseIf (Cells(f, 16).Value = "En Progreso" Or Cells(f, 16).Value = "Pendiente" Or Cells(f, 16).Value = "Nuevo") Then
If Cells(f, colFechaF).Value <> "" Then
strError = strError + " - No Llevan fecha Finalizado"
Else:
Cells(f, 23).Interior.Color = RGB(166, 255, 77)
Cells(f, 23).Value = "Ok"
End If
End If
'comprobacion de fechas
If Cells(f, colFechaC).Value < minDate Then
strError = strError + " - Fecha mal ingresada"
End If
'Prioridad no puede estar vacia
If Cells(f, 2).Value = "" Then
strError = strError + " - Prioridad vacia"
End If
'Cuenta no puede estar vacia
If Cells(f, 4).Value = "" Then
strError = strError + " - Cuenta vacia"
End If
'Corporativa no puede estar vacia
If Cells(f, 5).Value = "" Then
strError = strError + " - Corporativa vacia"
End If
'Cliente no puede estar vacia
If Cells(f, 6).Value = "" Then
strError = strError + " - Cliente vacia"
End If
'Tarea no puede estar vacia
If Cells(f, 7).Value = "" Then
strError = strError + " - Tarea vacia"
End If
'Origen no puede estar vacia
If Cells(f, 8).Value = "" Then
strError = strError + " - Origen vacia"
End If
'Tipo no puede estar vacia
If Cells(f, 9).Value = "" Then
strError = strError + " - Tipo vacia"
End If
'Naturaleza no puede estar vacia
If Cells(f, 10).Value = "" Then
strError = strError + " - Naturaleza vacia"
End If
'Comunicacion no puede estar vacia
If Cells(f, 11).Value = "" Then
strError = strError + " - Comunicacion vacia"
End If
'Incidente no puede estar vacio
If Cells(f, 15).Value = "" Then
strError = strError + " - Falta Nº Incidente"
End If
'Estado no puede estar vacio
If Cells(f, 16).Value = "" Then
strError = strError + " - Falta Estado"
End If
'Nivel de Soporte no puede estar vacio
If Cells(f, 17).Value = "" Then
strError = strError + " - Falta Nivel de Soporte"
End If
'Tiempo Dedicado no puede estar vacio
If Cells(f, 18).Value = "" Then
strError = strError + " - Falta Tiempo"
End If
'hay errores?
If strError <> "" Then
Cells(f, 23).Value = strError
Cells(f, 23).Interior.Color = RGB(255, 106, 77)
End If
Next f
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas