** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Ayuda con Software de Planificacion produccion
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoAyuda con Software de Planificacion produccion

 Responder Responder
Autor
Mensaje
alfare Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 28/Junio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 702
Enlace directo a este mensaje Tema: Ayuda con Software de Planificacion produccion
    Enviado: 04/Septiembre/2023 a las 18:08
Estimadxs espero se encuentren bien.

En esta ocasión deseo que puedan ayudarme con una herramienta para la planificación de procesos que me compartió un compañero de trabajo y de la cual requiero hacer una modificación para adaptarla al lugar donde me encuentro trabajando actualmente.  Las premisas son las siguientes:

  1. Comparto libremente la aplicación con Uds. Para que la apliquen en caso de que lo crean conveniente.
  2. Aplicación 100% en Excel con código VBA abierto
  3. La herramienta cuenta con 12 módulos.
  4. Partir de los datos que dejo en las imágenes a continuación que son idénticos al archivo que dejo en este foro. link de descarga. http://https://we.tl/t-8clfxEuvQh

Menu : Este menu tiene las tres opciones que maneja la herramienta. ( Para este caso la hoja de MAQUINAS esta oculta, ya que no hace parte de la consulta que hare mas adelante.

Programador: Esta opcion tiene como objetivo basico, establecer para cada producto que se va a planificar, la secuencia de procesos-máquinas y tiempo de cada proceso ( el tiempo se define en cantidad de horas como valor entero). En la columna G se coloca la fecha que tiene formato ( fecha + hora ) de inicio de cada producto, de inicio se puede colocar los mismos datos para todos los productos y en la columna H, la herramienta devuelva automaticamente la fecha + hora de finalización de cada secuencia.



Planeador : Lo que hace esta opción que se activa cuando se da click en el menu PLANEADOR, es que devuelve de manera grafica en las celdas de excel, la secuenciación de cada producto con sus respectiva maquinas y numero de horas definidas en cada proceso en la opción PROGRAMADOR. Es en esta opción donde se devuelve la fecha y hora FINAL que se coloca automáticamente en la columna H de la hoja PROGRAMADOR. el sistema automáticamente analiza la disponibilidad de máquinas y las asigna a medida que queden libres.



¿Cuál es el problema o necesidad?
Cuando se coloca la fecha y hora INICIAL en la columna G de la hoja PROGRAMADOR y posteriormente se corre el PLANEADOR; esta misma fecha y hora inicial debería ser el inicio de los procesos en la hoja PLANEADOR la cual se puede visualizar desde la columna O en adelante. Se necesita que la hora y fecha inicial que se coloque en la hoja PROGRAMADOR sea el mismo inicio de cada proceso que visualiza en la hoja PLANEADOR.





Editado por alfare - 04/Septiembre/2023 a las 18:09
Slds desde Cali Colombia
Arriba
alfare Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 28/Junio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 702
Enlace directo a este mensaje Enviado: 04/Septiembre/2023 a las 18:12
archivo por si no funciona el link anterior :   https://we.tl/t-HPa713rGaj

Slds desde Cali Colombia
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5990
Enlace directo a este mensaje Enviado: 06/Septiembre/2023 a las 22:54
¿Que has intentado?
¿Que resultado te devuelve?
¿Que resultado esperabas?

Editado: En tus imágenes no se ven bien los encabezados de columnas.




Editado por AnSanVal - 06/Septiembre/2023 a las 22:56
Saludos desde Tenerife.
Arriba
alfare Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 28/Junio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 702
Enlace directo a este mensaje Enviado: 07/Septiembre/2023 a las 03:22
Hola Antonio, 
me alegra volver a cruzar hilos contigo. Dando respuesta a tus interrogantes,
concretamente necesito que la fecha de inicio que se digite en la columna G de la hoja PROGRAMADOR: 
1. se replique en la columna I de la hoja PLANEADOR.
2. Según la fecha de punto # 1, el primer proceso-maquina se situé exactamente en la fecha y hora correspondiente que se encuentran establecidas en FILA # 5 a partir de la columna O.…en la hoja PLANEADOR cuando se corre el proceso.

El punto # 1 funciona bien, lo que no funciona es el punto # 2 que anteriormente.

Hoja programador 




Hoja Planeador :


.

Slds desde Cali Colombia
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5990
Enlace directo a este mensaje Enviado: 07/Septiembre/2023 a las 20:06

De las 3 preguntas que te hice no respondiste a ninguna, solamente repetiste lo que quieres que te hagamos.


Por esta vez "lo pasaré por alto":

[O5]     =ENTERO(I6)

[P5]     =O5+"1:00"

[Q5]     =P5+"1:00"


... y así con el resto ....



Saludos desde Tenerife.
Arriba
alfare Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 28/Junio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 702
Enlace directo a este mensaje Enviado: 07/Septiembre/2023 a las 23:26
Estimado AnSanval
No soy experto en VBA. Creo que se deberá hacer una modificación en alguna de las siguientes líneas de código para que cuando el proceso de planeación se corra, las fechas y horas de cada actividad se sitúen justo debajo de la fecha y hora de cada columna de la hoja PLANEADOR que inicia a partir de la columna "O".  Actualmente la fecha sitúa en el día correspondiente, pero no en la hora. Por ejemplo:

01-sep-23 2:00 am, se sitúa en 01-sep-23-12:00 am. Tengo las siguientes líneas :

'VARIABLES LOCALES AL PROCEDIMIENTO
Private FechaInicio As Date
Private FechaFinaliza As Date
Private FechaTestActual As Date
Private Prioridad As Date
Private GrupoMaquina As String
Private NumeroDias As Integer
Private NombreMaquina As String
Private FilaMaquina As Integer
Private DiasCorrimiento As Integer
Private offsetGrupoMaquinaRequerida As Integer
Private FilaActualPlaneador As Double
Private FilaActualProgramador As Double
Private OffsetFecha As Integer
Private OffsetDiasUsadosPlaneacionTarea As Integer
Private NumDiasMaquinaFestiva As Integer
Private ColorThemeIndex As Double
Private BanderaEncabe As Byte
Private Const ConstGREncabe = "ENB"

Type struct_ENB_Estado_Actual
        FilaActualProgramador As Double
        FechaInicio As Date
        GrupoMaquina As String
        offsetGrupoMaquinaRequerida As Integer
        NumeroDias As Integer
        OffsetFecha As Integer
        DiasCorrimiento As Integer
        OffsetDiasUsadosPlaneacionTarea As Integer
        FechaFinaliza As Date 'indica la fecha en que ocurre el encabe
End Type
Private EnbEstadoActual As struct_ENB_Estado_Actual

-------------------------------------------------------------------------

Private Sub PrintVars()
    strQdef = ""
    strQdef = strQdef + "Fecha de inicio......." + Str(FechaInicio) + Chr(13)
    strQdef = strQdef + "Numero de Dias........" + Str(NumeroDias) + Chr(13)
    strQdef = strQdef + "Grupo Maquina........." + GrupoMaquina + Chr(13)
    strQdef = strQdef + "Nombre Maquina........" + NombreMaquina + Chr(13)
    strQdef = strQdef + "Fila Maquina.........." + Str(FilaMaquina) + Chr(13)
    strQdef = strQdef + "Dias de Corrimiento..." + Str(DiasCorrimiento) + Chr(13)
    strQdef = strQdef + "Fila Actual Planeador." + Str(FilaActualPlaneador) + Chr(13)
    strQdef = strQdef + "Offset GR Maquina....." + Str(offsetGrupoMaquinaRequerida) + Chr(13)
    MsgBox strQdef
End Sub

------------------------------------------------------------------------------------------
Private Sub Almacenar_Estado_Actual()
    'Esta funcion almacena los datos actuales de posicion, filas etc donde encontro ENCABE
    EnbEstadoActual.FechaInicio = FechaInicio
    EnbEstadoActual.FilaActualProgramador = FilaActualProgramador
    EnbEstadoActual.GrupoMaquina = GrupoMaquina
    EnbEstadoActual.NumeroDias = NumeroDias
    EnbEstadoActual.OffsetFecha = OffsetFecha
    EnbEstadoActual.offsetGrupoMaquinaRequerida = offsetGrupoMaquinaRequerida
    EnbEstadoActual.DiasCorrimiento = DiasCorrimiento
    EnbEstadoActual.OffsetDiasUsadosPlaneacionTarea = OffsetDiasUsadosPlaneacionTarea
    EnbEstadoActual.FechaFinaliza = FechaInicio + OffsetDiasUsadosPlaneacionTarea - 1 + DiasCorrimiento
    
End Sub

-------------------------------------------------------------------------------------------------------------------Public Sub TEST()
    'CargarFechaInicio 6
    'BuscarGrupoMaquina 6, "J"
    'BuscarNumeroDiasRequeridos 6, "K"
    'BuscarMaquinaenGrupo
    'MaquinaDisponibleParada
    
    For FilaActualPlaneador = 6 To 6 Step 1
            '20 copia la actividad
            Copy_Encabezado_op FilaActualPlaneador
            '21 Extrae la fecha de inicio y el grupo de maquina requridos
            ExtraeFechaIni_DiasReq FilaActualPlaneador
            '22 Calcula cuantos dias hay entre el inicio del ano y el inicio de la tarea
            OffsetFecha = DateDiff("d", ANO_EVALUACION, FechaInicio)
            '40 Busca la primera maquina y empieza a desplazarse en maquinas y dias
            For offsetGrupoMaquinaRequerida = 0 To 9 Step 2
                    '42 Busca la maquina que pertenece al grupo
                    FilaMaquina = 5 'inicia una fila antes
                    If BuscarMaquinaenGrupo = False Then
                            MsgBox "NO EXISTE MAQIUNA PARA EL GRUPO", vbCritical, "ADVERTENCIA"
                            Exit Sub
                    Else
                            '50 Verifica si la maquina se encuentra disponible por parada
                            DiasCorrimiento = 0 'Inicia el corriemiento en cero
                            If MaquinaDisponibleParada = False Then
                                    'no disponible
                                    MsgBox "NO"
                                    PrintVars
                            Else
                                    MsgBox "SI"
                                    'si disponible
                                    '60 Busca si la maquina se encuentra o no programada ya
                                    If MaquinaDisponibleDia = False Then
                                            'no dispoble en planeador
                                            MsgBox "NO2"
                                            PrintVars
                                    Else
                                            'si disponible planeador --> copiar el nombre en las celdas-
                                            MsgBox "SI2"
                                            PrintVars
                                    End If
                            End If
                    End If
            Next offsetGrupoMaquinaRequerida
    Next FilaActualPlaneador
End Sub
-----------------------------------------------------------------------------
Private Sub InicFilaProgramador()
    HOJA_SELECCIONAR_V3 "MENU"
    CELDA_SELECCIONAR_V3 "L10"
    FilaActualProgramador = CELDA_LEER_VALOR_V3
End Sub
Private Sub IncFilaProgramador()
    FilaActualProgramador = FilaActualProgramador + 1
End Sub
Private Sub InicFilaPlaneador()
    HOJA_SELECCIONAR_V3 "MENU"
    CELDA_SELECCIONAR_V3 "L10"
    FilaActualPlaneador = CELDA_LEER_VALOR_V3
End Sub
Private Sub IncFilaPlaneador()
    FilaActualPlaneador = FilaActualPlaneador + 1
End Sub
'offsetGrupoMaquinaRequerida
Private Sub InicOffsetMaquinaRequeridaPlaneador()
    offsetGrupoMaquinaRequerida = 0
End Sub
Private Sub IncOffsetMaquinaRequeridaPlaneador()
    offsetGrupoMaquinaRequerida = offsetGrupoMaquinaRequerida + 2
End Sub
Private Sub InicFilaMaquina()
    FilaMaquina = 5
End Sub
Private Sub IncFilaMaquina()
    FilaMaquina = FilaMaquina + 1
End Sub
Private Sub InicDiasCorrimiento()
    DiasCorrimiento = 0
End Sub
Private Sub IncDiasCorrimiento()
    DiasCorrimiento = DiasCorrimiento + 1
End Sub
Private Function GrupoMaquinaEsEncabe() As Boolean
    'Comprueba si el grupo de maquina es del ENCABE.
    'la verificacion se hace con la constante ConstGREncabe
    If GrupoMaquina = ConstGREncabe Then
        GrupoMaquinaEsEncabe = True
    Else
        GrupoMaquinaEsEncabe = False
    End If
End Function

AnSanval te ruego puedas ayudarme...donde tengo y como tengo que hacer el cambio?


Slds desde Cali Colombia
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5990
Enlace directo a este mensaje Enviado: 08/Septiembre/2023 a las 10:37
"AnSanval te ruego puedas ayudarme...donde tengo y como tengo que hacer el cambio?"

¡Lo siento pero yo no te lo haré!


► En este foro muchos de los que participan (de: España, Argentina, Colombia...) son profesionales que viven de esto.

Puedo ayudarte, en una duda puntual que tengas, pero si te hago el trabajo... ¿Que les estaría haciendo a ellos?.

Como se suele decir "Contrata un chofer o aprende a conducir.". La mayoría de lo que quieres hacer podrías hacerlo sin VBA, pero si lo quieres con VBA... tendrás que ponerte a la labor.

 


Saludos desde Tenerife.
Arriba
alfare Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 28/Junio/2006
Localización: Colombia
Estado: Sin conexión
Puntos: 702
Enlace directo a este mensaje Enviado: 08/Septiembre/2023 a las 16:45
De todas formas, Ansanval gracias por que invirtió tiempo.
Por favor cerrar este hilo

Slds desde Cali Colombia
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable