Visual Basic - VOLCADO DE DATOS

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de JAIME
Val: 39
Ha disminuido su posición en 7 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

VOLCADO DE DATOS

Publicado por JAIME (39 intervenciones) el 31/07/2021 15:52:52
Muy Buenas a todos
Alguien por favor me puede ayudar con estos dos archivos, se trata de pasar información de un archivo a otro, la dinamica es la siguiente, el archivo llamado PLANIFICACION A960 2021 es un calendario de trabajo donde la fecha del día esta en el encabezado en las filas 2 y 3 luego en la columna A estan los números de los trabajadores que son códigos , en total pueden ser unos 900 +-, por lo tanto el archivo lleva bastantes filas.
En la columna B va el nombre de los trabajadores que los he borrado por que no tiene importancia para lo que yo busco.
El archivo va enfocado a que si un trabajador no va al trabajo por enfermedad le ponemos en su fila y en la fecha que corresponde "JP", que significa jornada perdida pero sin las comillas.
En el archivo he echo una simulación sobre el mes de agosto, le he puesto a varios trabajadores "JP", que puede ser de un solo día o de varios días, incluso que haya un domingo por medio o cualquier otra situación que se pueda dar como puedes un día de descanso un día de asuntos propios etc.

Pues ahora lo que busco es que al otro archivo llamado ABS se pase esa información, que en la columna A ponga el numero de operario, en la columna E que ponga la causa que esta escrita en el comentario, en la columna F rl inicio de la primera JP en la columna G el ultimo día que tiene puesto JP, y por ultimo en la columna H que haga la suma del total de JP que tiene puestas en el archivo de PLANIFICACION A960 2021.

El archivo de ABS la información que he puesto es como debería de quedar al final, esta puesto en verde
Hay que tener en cuenta que se puede dar el caso que un trabajador en el mismo mes tenga varias veces JP, al principio del mes y luego al final, o en la misma semana el lunes y luego el sábado.
Y tambien hay que tener en cuenta el archivo llamado ABS va por hojas de meses.

Bueno espero no haber complicado esto con la explicación.
Doy las gracias por adelantado a quien con leer esto intente echarme una mano y lo agradezco mucho.

un saludo
Jaime Gombau
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: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

VOLCADO DE DATOS

Publicado por Antoni Masana (563 intervenciones) el 02/08/2021 19:09:02
Buenas tardes Jaime.

Creo recordar que ya estuvimos en contacto hace un tiempo.
Cuando pueda le doy un vistazo.

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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

VOLCADO DE DATOS

Publicado por Antoni Masana (563 intervenciones) el 03/08/2021 16:57:02
Me estoy mirando los libros y tengo unas preguntas.

- ¿En que libro ha de estar la macro?

- Si la macro esta en el libro PLANIFICACION A960 2021 debe buscar el libro ABS.xlsb es ese caso si no esta abierto:
- -- ¿Se queja y finaliza?
- -- ¿Lo busca y lo abre?

- Si la macro esta en el libro ABS.xlsb debe buscar el libro PLANIFICACION A960 2021 es ese caso si no esta abierto:
- -- ¿Se queja y finaliza?
- -- ¿Lo busca y lo abre?
- -- Debe tener el cuenta que el 2021 es el año.

Una vez tiene localizados los libros la macro recorre las hojas del libro ABS.xlsb (ignora la hoja BASE DE DATOS)
Comprueba que los dos últimos dígitos de la hoja corresponden al año del libro planificación.
Recorre todos la hoja Turnos del libro Planificación y borra las marca JP
Coloca las nuevas marcas.

Quizás te preguntes por que quito las que tiene el libro antes de volver a ponerlas bien pongamos que en el libro ABS se a puesto el código 0642246 con tres días marcados y se ejecuta la macro.
El responsable se da cuenta del error y modifica el código en el libro ABS y pone el correcto 0652245 y ejecuta la macro para corregir el error.
La macro en la primera ejecución marco los tres días al 0642246.
En la segunda ejecución marca los tres días al nuevo 0652245 pero ¿Como sabe que tiene que quitar los del 0642246?.
La respuesta es simple: cuando se ejecuta la macro los JP que hay en planificación no vale, hay que volver a poner todos los JP de nuevo.

Cuéntame que te parece el planteamiento.

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
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

VOLCADO DE DATOS

Publicado por Antoni Masana (563 intervenciones) el 03/08/2021 19:55:15
Ves dando un vistazo a la macro.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Option Explicit
 
Sub Poner_JP()
    Dim Yosoy As String, a As Integer, Year As String, Text As String, _
        Book_New As String, Fila As Long, Dia1 As Long, _
        Desde As Long, Codig As String, Causa As String, _
        Hasta As Long, Dest_Fila As Long, Dest_Colu As Long
 
    Yosoy = ActiveWorkbook.Name
 
    ' ---&--- Busca el año para saber como se llama el planificador
 
    For a = 1 To Sheets.Count
        If Sheets(a).Name <> "BASE DATOS" Then
           Text = Mid(Sheets(a).Name, InStr(Sheets(a).Name, "-") + 1, 2)
           If InStr(Year, Text) = 0 Then
               Year = Year + Text
           End If
        End If
    Next
 
    ' ---&--- Nombre de PLANIFICADOR
 
    Book_New = "PLANIFICACION A960 20" & Year & ".xlsx"
 
    ' ---&--- Busca el 1 de enero para calcular la columna de cada fecha
 
    On Error GoTo Error
        Dia1 = Workbooks(Book_New).Sheets("TURNOS").Range("C2") - 3
    On Error GoTo 0
 
    ' ---&--- Procesa todas las hojas
 
    For a = 1 To Sheets.Count
        If Sheets(a).Name <> "BASE DATOS" Then
            Sheets(a).Select
            Fila = 2
            While Cells(Fila, "A") <> ""
                Codig = Cells(Fila, "A")
                Causa = Cells(Fila, "E")
                Desde = Cells(Fila, "F") - Dia1
                Hasta = Cells(Fila, "G") - Dia1
 
                With Workbooks(Book_New).Sheets("TURNOS")
 
                    ' ---&--- Busca el Codigo
 
                    Dest_Fila = 4
                    While .Cells(Dest_Fila, "A") <> Codig And _
                         (.Cells(Dest_Fila, "A") <> "" Or _
                          .Cells(Dest_Fila, "B") <> "")
                          Dest_Fila = Dest_Fila + 1
                    Wend
 
                    ' ---&--- Marca los dias vacios y pone la Causa
 
                    For Dest_Colu = Desde To Hasta
                        If .Cells(Dest_Fila, Dest_Colu) = "" Then
                           .Cells(Dest_Fila, Dest_Colu) = "JP"
                           If Dest_Colu = Desde Then
                               With .Cells(Dest_Fila, Dest_Colu)
                                    .AddComment
                                    .Comment.Visible = False
                                    .Comment.Text Text:=Causa
                                End With
                            End If
                        End If
                    Next
                End With
                Fila = Fila + 1
            Wend
        End If
    Next
    Exit Sub
Error:
    MsgBox "No encuentro el libro: " & Book_New
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