Saltar al contenido

Formulario registre/muestre Fechas programadas/reprogramadas


yameregistre

Recommended Posts

publicado

Hola a todos

En este problema espero me puedan ayudar, ya que he intentado muchas cosas y si bien es cierto algunas conseguí, otras aún no y ya llevo varios días en esto y se está volviendo un poco frustrante

 

Es un archivo que he estado creando sobre programar/reprogramar fechas

 

En el archivo adjunto muestro la lista de operaciones que debe realizar el formulario

Algunas tareas ya las conseguí automatizar, otras no

 

Las que pido ayuda es en las tareas que aún no

Pongo toda la explicación de lo que se necesita en el archivo adjunto ya que allí es más fácil de entender

 

Nuevamente agradezco bastante su colaboración

Gracias!

 

MODELO VACACIONES.xlsm

publicado

Bueno, podemos intentar ir resolviendo caso a caso, pero necesitaríamos que nos explicases, al menos, a través de qué formulario se realiza cada acción que necesitas resolver :huh:

publicado

Hola, a la altura de la celda N1 está el botón para invocar al userform llamado Vacaciones

La idea sería poner en el textbox el nro de contrato y con eso ya se puede programar alguna nueva vacacion por la parte izquierda del formulario

y mostrar en el listbox de la derecha sus vacaciones ya programadas

 

Luego para hacer efectiva una vacacion se selecciona la misma del listbox y se presionaria el boton hacer efectivo

Y si se desea reprogramar una vacacion se selecciona la misma del listbox y se presionaria el boton reprogramar. Eso llamaria al otro formulario llamado Reprogramar para reprogramarla

 

Esa es la idea. He resumido mi idea en este diseño minimalista, pero si hay que modificar el diseño y hacerlo mejor o separar algo en otro form, o agregar algún control no hay problema, la idea es que funcione muy bien, pero creo que quizás como esta planteado sí se puede realizar

 

Gracias por el comentario, saludos

publicado

Pero es que viendo tu formulario, si elijo el contrato 4, no vencido y ya programado, en él no aparece nada. ¿Esto también te falta, o es que no es necesario?

Mejor explicar todo bien claro desde el principio,por que si no es imposible intentar hacer algo si cada vez hay que andar preguntando qué hace qué y cómo

publicado

Así es @Haplox eso es lo que falta, que al elegir un numero de contrato muestre sus detalles en el ListBox, tal como lo pongo en los comentarios del Excel que adjunté a partir de la columna N

 

La idea es asi, lo voy explicando nuevamente por partes

Columnas A,B,C,D

De forma manual (directamente en cada celda, sin userform) se ingresará las columnas A,B,C,D

Es decir, se pondrá el Nro de Contrato (que es único) el empleado, el nombre del Empleado, la fecha de inicio de contrato de y la fecha de fin de ese contrato en particular.

Entonces originalmente los datos se verán así

Inicial1.jpg

 

Un empleado puede tener varios contratos en el transcurso del tiempo, no hay problema, el código de cada contrato lo diferenciará como se ve en el caso del Empleado 2, que tiene los contratos con código 2 y 8

Aquí no hay problema ni nada que resolver

 

Columna E y G

Inicial2.jpg

La columna E calculará de acuerdo a la fecha de inicio de contrato y la fecha de fin de contrato cuantos días gana de vacaciones (30 por cada año de trabajo que cumple). Estos 30 se cumplen así. por ejemplo si ingresa el 3/04/2015, sus 30 días ganados de vacaciones se dan el 2/04/2016, los 60 días el 2/04/2017, etc

Aquí no hay problema ni nada que resolver

La columna G calculará si es un Contrato de tipo VENCIDO o NO VENCIDO basándose en la fecha actual

Aquí no hay problema ni nada que resolver

 

Continuo en un momento con el siguiente mensaje

 

 

 

 

 

 

 

 

publicado

Para terminar con los detalles de mi problema, y ver si es factible el ayudarme

 

Todo esto es lo que no consigo resolver aún

ListBox1

En el UserForm, si coloco el número de contrato, en ListBox1 debe mostrarse las fechas programadas del empleado que tiene asociado ese contrato si las hubiera.

En este ejemplo no las hay aún, pero la vamos a agregar luego

userform.jpg

 

Si deseo agregar la programación por Primera Vez a alguien

Si un empleado desea una vacación, primero pide la programación y se registra dicha programación en nuestro Excel mediante el UserForm donde está el Marco Programar, por el lado izquierdo (como se ve en la captura de arriba).

El procedimiento sería ingresar primero el número de contrato, y aparece el nombre del empleado debajo. Ya con eso luego se puede programar ingresar los datos en la parte inferior (Fecha inicio, Días, Fecha Final). Luego se presionaría el botón programar.

 

Por ejemplo, al Empleado 4 le hago la primera programación, por 10 días.

La columna H, I, J son ingresadas por el Userform (Fecha Inicio, Fecha Fin, Dias)

 

En la siguiente captura he marcado en un círculo los datos ingresados.

inicial3.jpg

Luego la columna F debe mostrar dicho total.

 

Si deseo confirmar la programación de alguien, es decir hacerla Efectiva

Llegado el día, si el Empleado mantiene la programación que indicó y sale de vacaciones el día pactado, entonces deben suceder dos cosas:

- El número 10 pasaría de la columna J (días programados) a la columna K (días efectivos) ya que el empleado ha hecho realidad el irse de vacaciones.

- Las columnas H,I,J deben quedarse sin el resaltado amarillo.

Para que esto suceda se selecciona la programación deseada del ListBox y se presiona el botón Hacer Efectivo. El ListBox también actualiza los cambios de la Columna J a la K

 

Si deseo reprogramar una programación

Si un empleado decide reprogramar una vacción programada (es decir, que aún no es efectiva) lo puede hacer

El procedimiento sería:

Seleccionar la programación del ListBox y presionar Reprogramar

Eso abriría el formulario Reprogramar donde se cambiaría la Fecha Inicio, Fecha Final, Días y se presiona el botón respectivo

Luego de reprogramar dicha vacación (después de presionar el botón):

- En el Excel se insertaría una nueva fila debajo de la vacación programada que se desea reprogramar. En esa fila nueva va como datos Fecha Inicio, Fecha Fin y Dias para esta reprogramacion

- La fecha programada que acabamos de reprogramar, debe perder el resaltado amarillo y debe borrarse el número de dias. Y ahora la fila con la reprogramación es la que debe tener el color de fondo fucsia en las columnas H,I,J

- Se actualiza el número de la columna F (el cual es la suma de todo lo programado/reprogramado

inicial4.jpg

 

- Se actualiza el saldo días en la columna L (el cual es la diferencia del número de la columna F para cada contrato menos la suma de todos los días de vacaciones tomados de manera efectiva en la columna k)

Agrego la foto de otro caso más grande, para el Empleado 2 por ejemplo para que se entienda todo lo anterior. En donde vemos que Saldo Días = Nro Dias (Col F) - SUMA(Todos los Dias Efectivos)

60 - 52 = 8

 

inicial5.jpg

 

 

Espero con esto y las indicaciones que puse en el Excel original, me puedan ayudar, ya avance todo lo que pude, el resto que planteo en este mensaje no consigo dar con la solución

Gracias por tomarse la molestía de leer

Les estaré eternamente agradecido por su ayuda

Saludos!

 

 

 

 

 

 

 

 

 

publicado

Me estoy volviendo un poco loco... :huh:

El pasar los datos al listbox me está dando problemas y no sé por qué. Si el empleado tiene más de una línea programada, funciona bien, pero si solo tiene una, me rellena con las filas de abajo. A ver si algún gurú del foro sabe por qué:
 

Private Sub txtContrato_Change()
Dim Contrato As String
Dim fila As Integer
Dim celda As Range
Dim Rango As String

Dim InicioRango As String
Dim FinRango As String

Contrato = txtContrato.Value

For fila = 6 To 100
Set celda = Range("A:A").cells(fila, 1)
    If celda.Value <> "" And celda.Value = Contrato And Range("G" & fila).Value = "NO VENCIDO" Then
    ListBox1.Clear
    InicioRango = Worksheets("HISTORICO").cells(fila, 8).Address
    FinRango = Worksheets("HISTORICO").cells(fila, 8).End(xlDown).Row '<------ aquí me da el problema

    Rango = InicioRango & ":" & "K" & FinRango

    ListBox1.RowSource = "HISTORICO! " & Rango
    End If
Next fila

End Sub

Dejo el fichero a ver si hay solución

Por cierto ¿Tienes protegido el documento? Hay cosas que no me deja modificar

MODELO VACACIONES.xlsm

publicado

Hola, no, no he protegido el documento ni nada

 

Ahora la duda es si teniendo la base de datos como una Tabla de Excel, deja o no deja insertar filas en cualquier lugar mediante programación, quizás sea eso?

publicado

No sé, por eso preguntaba. De momento parece que lo he solucionado. Te dejo el ejemplo para que veas cómo va.

Fíjate que entre contrato y contrato he tenido que dejar una LINEA VACÍA para poder discriminar rangos.

Además lo he hecho para los contratos "NO VENCIDOS", que supongo que es lo que quieres

MODELO VACACIONES.xlsm

publicado

Bueno, te dejo una solución bastante funcional, según lo que te he entendido, pero está sin depurar. Faltan mensajes de error si no encuentra algo, o hay que seleccionar algo, etc.

Además creo que tienes varias cosas sin solucionar como lo suma de los días, pero eso es una simple fórmula de excel. Miralo y trabaja con él, para poder ir depurándolo según vayas encontrando fallos.

MODELO VACACIONES.xlsm

publicado

Hola gracias por responder, de momento según la prueba que estoy haciendo, si ingreso un nuevo contrato manualmente en el excel llevaría el número 10, cuando cargo el userform y busco el 10, sale los datos del 1. Si busco el contrato 6 no aparecen datos. Voy a chequear el código para ver ese detalle y lo voy a seguir probando para ver qué puedo afinar y qué no y comentar luego

 

Muchas gracias

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.