............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Vencimiento de Términos en excel vba

Ver el tema anterior Ver el tema siguiente Ir abajo

Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Miér Jul 12, 2017 2:16 pm

Tengo un userform que me ingresa datos: en la celda B3 (Fecha de Radicación) y estos datos me los inserta en en la Hoja1...
Mi pregunta como hacer el código para que me de la Fecha de Vencimiento de términos en el Rango M3, teniendo en cuenta que son 15 días hábiles para el v/to de Términos y en Colombia hay más días festivos...mil gracias y en espera de la respuesta.

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Miér Jul 12, 2017 9:12 pm

buenas tardes
unas preguntas
¿sábado lo consideras feriado?
existe algún día feriado que sea el primer o ultimo dia de algun mes
ejemplo: en Mexico (LFT art 74)
días de descanso obligatorio aparecen:
El primer lunes de febrero en conmemoración del 5 de febrero
El tercer lunes de marzo en conmemoración del 21 de marzo
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Jue Jul 13, 2017 12:32 pm

Buenos días, Moisés Gracias por interesarte en la consulta...Te cuento que necesito para el trabajo que estoy realizando, que los días hábiles serian de Lunes a Viernes y por ejemplo en Colombia el 19/06/2017 es un día Lunes y es festivo, igualmente el 26/06/2017; el mes de Julio también tiene otros días festivos que están dentro del Lunes a Viernes, como es el 3/06/2017 (Lunes) y el 20/07/2017(Jueves). Necesito saber el código en excel vba para que me de directamente los 15 días de vencimiento de términos. Que por ejm. si me llega una petición el día 16/06/2017 (viernes), a partir de ese día me cuente solamente los 15 días hábiles que en este caso el vencimiento de términos, seria el día 11/07/2017. mil gracias hermano desde aquí de Jamundi.

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Jue Jul 13, 2017 1:17 pm

buen dia
gracias por detallarme mejor la informacion

en unas horas seran mis horas de descanso y realizare un ejemplo que puedas adecuar a tu userform
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Jue Jul 13, 2017 2:39 pm

agradeciendote de antemano...

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Jue Jul 13, 2017 4:54 pm

buenas tardes

adjunto un archivo en excel
la solución que use fue usar el equivalente de la funcion de excel =dias.lab Junto a un bucle do ..loop (como usar solver desde excel) como fecha final colocar la fecha inicial + los dias de vencimiento, luego si al evaluar la formula el resultado no dan esos dias de vencimiento, la fecha final se incrementa en 1, asi hasta que dias.lab = 15 , cuando pase eso se habra encontrado la fecha final

REalice un ejemplo para que se integre al userform y otro que es un modulo que contiene la macro pero como una formula personalizada de excel (la formula funciona solo para libros que contenga dicho modulo) (el modulo es independiente a la macro del userform)

Macros:
Userform
Código:
Dim fechai, fechaf, vencimiento, s

With Sheets("Hoja1").Range("B3")
    .Formula = "=VALUE(" & """" & TextBox1.Text & """" & ")"'<---Para que en la celda la fecha se coloque como "fecha" y no como texto
    .NumberFormat = "m/d/yyyy"
End With

fechai = Sheets("Hoja1").Range("B3").Value'<----uso la de la celda de excel por que si uso directamente la del cuadro de texto arrojara error
vencimiento = 15'<---dias de vencimiento
fechaf = fechai + vencimiento'<----fecha vencimiento estimada (inicial)(recordar que el bucle incrementara el valor hasta encontrar el buscado)

Do
s = WorksheetFunction.NetworkDays(fechai, fechaf, Sheets("Hoja1").Range("O2:O" & Rows.Count))'<--fundion dias.lab de excel
fechaf = fechaf + 1
Loop Until s = vencimiento '<---condición mencionada anteriormente

fechaf = fechaf - 1'<---aqui ya saliro del bucle (encontro la fecha buscada) ahora le resto uno por el bucle le habia sumado 1

With Sheets("Hoja1").Range("M3")
    .Value = fechaf
    .NumberFormat = "m/d/yyyy"
End With
MsgBox ("listo")
Unload Me

modulo como funcion personalizada (Plus:esta la hice asi por que me parecio una buena opcion y facil de usar en varios casos)
para eso copiar esta macro (abajo) en un modulo de VBA del libro donde se requiera usar)
fechafinal es la fecha de vencimiento (le puse asi por que me base en dias.lab
=fechafinal(fecha_inicial,dias_vencimiento,rango_dias_feriado)
Código:
Function fechafinal(fechai, vencimiento, diasferiados As Range) As Date
Dim fechaf, s

fechaf = fechai + vencimiento

Do
s = WorksheetFunction.NetworkDays(fechai, fechaf, diasferiados)
fechaf = fechaf + 1
Loop Until s = vencimiento
fechafinal = fechaf - 1
End Function

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Jue Jul 13, 2017 11:26 pm

!EXCELENTE¡ Moisés, muy agradecido...
Moisés, Te agradezco, si es posible de tenerme en cuenta para otras dudas sobre el trabajo que estoy realizando
me sirvió mucho el del modulo:
Function fechafinal(fechai, vencimiento, diasferiados As Range) As Date
Dim fechaf, s

fechaf = fechai + vencimiento

Do
s = WorksheetFunction.NetworkDays(fechai, fechaf, diasferiados)
fechaf = fechaf + 1
Loop Until s = vencimiento
fechafinal = fechaf - 1
End Function

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Vie Jul 14, 2017 4:36 am

normalmente busco la manera de responder los temas que publican en el foro, aunque no responda inmediatamente. a veces no puedo responder, todo depende del trabajo.
Aunque no se pierde nada con publicar las dudas. capaz alguien ya tiene la respuesta

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Vie Jul 14, 2017 9:12 am

Gracias Moisés estaré siempre pendiente del foro.

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Vie Jul 14, 2017 4:57 pm

Si tienes alguna pregunta no dudes es publicar en el foro
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por carlos2010 el Lun Jul 17, 2017 2:49 pm

Moisés, buenas tarde, otra vez con una inquietud....ya me ha dado la fecha final del proyecto, ahora tengo una duda para poder que cuando me salga el formulario y al escribir los datos a ingresar como hacer para que me siga copiando esas formulas en ese rango. Mil gracias hermano, y como te das cuenta no tengo mucho conocimiento de excel vba... Que Dios te bendiga.

carlos2010

Masculino Cantidad de envíos : 6
Edad : 37
Ciudad - Pais : colombia
Version de Excel : 2016
Fecha de inscripción : 12/07/2017

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por moises melgar el Lun Jul 17, 2017 5:32 pm

Buenas tardes
La verdad no comprendo lo que dices
Para nuevas consultas es mejor abrir nuevos temas.

ahora voy a suponer que buscas que se escriba la formula por cada nuevo dato en la columna B
si es así, se me ocurren 2 opciones:

1.podría conseguir copiando y pegando una celda con la formula a la celda donde se requiere
ejemplo en la fila 1(celda M1) coloco la formula que quiero usar (recuerda hacer uso de las referencias para evitar que se mueva el rango de feriado)
celda M1=fechafinal(B1,15,$O$2:$O$365)

luego con esta macro consigo ese efecto (el que supongo)
Código:
Sub copiar_celda()
Dim filaf
filaf = Sheets("Hoja1").Range("M" & Rows.Count).End(xlUp).Row + 1
Sheets("Hoja1").Range("M1").Copy Destination:=Sheets("Hoja1").Range("M" & filaf)
End Sub
filaf esla fila donde se copiara

2. la otra opción (cuyo resultado es el mismo) es el de "escribir" la formula desde la macro (usando  Sheets("Hoja1").Range("M" & filaf).Formula), por lo que se tiene que enseñar con la macro cuales con los datos que se usaran en la formula
Código:
Sub insertarfuncion()
Dim filaf, fechai, vencimiento, diasferiados

filaf = Sheets("Hoja1").Range("M" & Rows.Count).End(xlUp).Row + 1
'datos que usa la formula:
fechai = Sheets("Hoja1").Range("B" & filaf).Address(RowAbsolute:=False, ColumnAbsolute:=False)
vencimiento = 15
diasferiados = "$O$2:$O$365"

'se crea la formula y se le da formato
With Sheets("Hoja1").Range("M" & filaf)
    .Formula = "=fechafinal(" & fechai & "," & vencimiento & "," & diasferiados & ")"
    .NumberFormat = "m/d/yyyy"
End With

End Sub
ejemplo con 2 botones: (recuerda que jugando con las referencias (este signo $ ) puedes conseguir distintos resultados

avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: Vencimiento de Términos en excel vba

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.