Excel - macro compleja

 
Vista:
sin imagen de perfil
Val: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 28/04/2020 00:34:19
Hola foreros, quisiera a ver si alguien me pudiera ayudar con este archivo que paso a continuación. quisiera que al marcar un dia en v ,b, n de un trabajador de un dia concreto de la hoja "parte diario"me salga en la hoja de "parte tarea" y en la "parte tarea2" que trabajador es y si cambio de dia cambie tambien en los partes tareas.Gracias
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

macro compleja

Publicado por Antoni Masana (2481 intervenciones) el 28/04/2020 18:01:08
Esta macro se tiene que poner en la hoja: Parte diario

1
2
3
4
5
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "Esta en la celda: " & Target.Address & vbCrLf & _
                                                   vbCrLf & _
           "Su contenido es: " & Target.Text
End Sub

Falta codificarla, porque no se exactamente lo que quieres hacer.
Esta macro se ejecuta a se ejecuta al seleccionar una tecla o un rango.

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: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 28/04/2020 22:26:08
Hola Antoni,gracias por interesarte.Perdon por no explicarme mejor ,lo que necesito conseguir es que cuando en la hoja "parte tarea" le indique un dia concreto por ejemplo el dia 14/5/2020 me diga que trabajador es V,B o N y tambien me lo reporte en la hoja "parte tarea2",no se si me habre explicado mejor. 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
sin imagen de perfil
Val: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 29/04/2020 00:28:41
Hola Antoni,gracias por interesarte.Perdon por no explicarme mejor ,lo que necesito conseguir es que le indique un dia concreto por ejemplo el dia 14/5/2020 me diga que trabajador de la hoja "parte diario" tiene V,B o N y me lo reporte en la hoja "parte tarea" y "parte tarea2",no se si me habre explicado mejor. 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

macro compleja

Publicado por Antoni Masana (2481 intervenciones) el 29/04/2020 13:35:22
Creo entender un poco mejor lo que quieres hacer.
Es facíl, la parte más complicada ya la tienes resuelta aunque no lo sepas.

Tomemos el ejemplo con la fecha del 5 de mayo de 2020 corresponde a la columna EI o la columna 139.

Ahora el concepto me diga que trabajador de la hoja "parte diario" tiene V,B o N ¿Como lo debe decir?

Siguiendo con el ejemplo:

1
2
3
4
El trabajador  1  -  Tiene un valor en la celda de: " "  -  ¿Donde debe reportarlo?
El trabajador  2  -  Tiene un valor en la celda de: "V"  -  ¿Donde debe reportarlo?
El trabajador 11  -  Tiene un valor en la celda de: "B"  -  ¿Donde debe reportarlo?
El trabajador 18  -  Tiene un valor en la celda de: "N"  -  ¿Donde debe reportarlo?

En que momento se debe ejecutar la macro:

¿Al introducir la fecha?
¿A voluntad del operador?
¿Ambos?

He escrito esta respuesta como 4 o 5 veces y la he perdido porque el ratón tiene un botón que me cierra la ventana y ya no recuerdo todo lo que debo preguntarte, puede que me deje algo en el tintero teclado.
El ratón es para jugar al DOOM, que me va muy bien pero para lo demás es un desastre.


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: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 29/04/2020 13:58:57
Hola Antoni ,la macro la debe ejecutar cuando en la hoja "parte tarea" le indique una fecha me devuelva que trabajador es b,v o n en formato por ejemplo del mismo color que la letra ( si es V seria en rosa si es b en azul) y si el trabajador no tiene ninguna letra pues que lo deje en formato de blanco y tambien lo debe señalizar en el "parte tarea2"
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: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 29/04/2020 18:52:58
uauh!!!!!!!!!!! es justo lo que queria MUCHAS GRACIAS ANTONI.
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: 35
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

macro compleja

Publicado por Joan (23 intervenciones) el 29/04/2020 23:20:52
Una cosa mas Antoni ¿como se puede hacer para que cuente a partir de la fila 14 y no 10? porque tengo que crear 4 filas para poner otros datos y no se como modificarlos sin estropear lo que has echo.¿ No lo has echo con ninguna macro ? porque no la encuentro, se nota que esto no es lo mio
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

macro compleja

Publicado por Antoni Masana (2481 intervenciones) el 29/04/2020 23:40:04
Te pongo solo los dos primeros procesos para indicarte cada uno lo que hace con un comentario

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
78
Option Explicit
 
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dia As Byte, Mes As Byte, Col As Integer, Fil As Long, _
        Trab As String, Tipo As String
 
    If Target.Address = "$E$2" Then
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
        ActiveSheet.DisplayPageBreaks = False
 
        Dia = Day(Range("E2"))
        Mes = Month(Range("E2"))
        Col = Mes * 31 - 29 + Dia - 1 ' <== Esta es la parte que me era mas
                                      '     complicada de resolver, buscar
                                      '     la columna y tu ya la tenias.
 
        Fil = 10                      ' <-- Aqui indica la primera fila
                                      '     de la hoja PARTE DIARIO
        With Sheets("Parte Diario")
            While .Cells(Fil, "A") <> ""
                Trab = .Cells(Fil, "A")
                Tipo = .Cells(Fil, Col)
 
                Call Busca_Trabajador(Trab, Tipo, "Parte Tareas")
                Call Busca_Trabajador(Trab, Tipo, "Parte Tareas (2)")
                Fil = Fil + 1
            Wend
        End With
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        Application.EnableEvents = True
        ActiveSheet.DisplayPageBreaks = True
        Application.CutCopyMode = False
 
        Sheets("Parte Tareas").Select
        Range("E2").Select
    End If
End Sub
 
' </> ------------------------------------------------------------ </>
' </> ---&--- Busca el trabajador en las hojas de tareas
' </> ------------------------------------------------------------ </>
 
Private Sub Busca_Trabajador(Trab, Tipo, Hoja)
    Dim Col As String, Fil As Integer
 
    Col = "E"  ' <-- Aqui indico la columna el primer cuadro
    Fil = 5    ' <-- Aqui indico la 1ª fila de la columna
    Sheets(Hoja).Select
 
    With Sheets(Hoja)
        While .Range(Col & Fil) <> ""
            If UCase(.Range(Col & Fil)) = UCase(Trab) Then
                .Range(Col & Fil).Select
 
                Select Case UCase(Tipo)
                    Case "B":  Call Color_Azul
                    Case "V":  Call Color_Rosa
                    Case "N":  Call Color_Verde
                    Case Else: Call Color_Blanco
                End Select
                Fil = 1    ' <--- Esto es para buscar una celda vacia y
                Col = "A"  '      salir del bucle
            End If
            Fil = Fil + 1
 
            ' Cuando acaba la primera columna salta a la segundo
 
            If Range(Col & Fil) = "" And Col = "E" Then Col = "I": Fil = 5
 
            ' Cuando acaba la SEGUNDA columna salta a la TERCERA
 
            If Range(Col & Fil) = "" And Col = "I" Then Col = "K": Fil = 5
        Wend
    End With
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
1
Comentar