Para KL Re: Calendario de a?o, contar dias trabajo,domingo,feriado

04/04/2006 - 19:28 por KM**VE | Informe spam
Hola amigo KL sobre lo que me mandaste la formula de Excel esta bien. Ahora
es una manera al revés. Te explico.



En esta formula solo colocar la fecha de entrada y la salida y me da los
días domingo y días de fiesta que tenemos fijada abajo y el total de los
días. Hasta allí esta bien.



Ahora nenecito una manera de colocar la fecha de salida y colocar el tiempo
de vacación (es el numero 20 que son dias que es devacación) y la formula
que me coloca la fecha de entrada y los días domingo y fiestas y el total
días entre fechas.



Gracias

KM**VE



Salida Entrada Tiempo Vacación
20/04/2006 13/05/2006 20
Domingos : 3
Fiestas (domingos excl.) 0
Total Dias 24


Festivos en Venezuela 2006
Fecha Fiesta
01/01/2006 Ano Nuevo
02/01/2006 Ano Nuevo. Traslado al lunes siguiente
09/01/2006 Epifania
27/02/2006 Carnaval.
28/02/2006 Carnaval.
19/03/2006 Fiesta de San Jose
13/04/2006 Jueves Santo
14/04/2006 Viernes Santo
19/04/2006 Declaracion de la Independencia
01/05/2006 Dia del Trabajo
24/06/2006 Aniversario de la Batalla de Carabobo
26/06/2006 Festividad de San Pedro y San Pablo.
05/07/2006 Día de la Independencia.
24/07/2006 Aniversario del nacimiento de Simón Bolívar.
15/08/2006 Asunción
12/10/2006 Día de la Hispanidad
03/11/2006 Día de los Difuntos
11/12/2006 Inmaculada Concepción
25/12/2006 Navidad
31/12/2006 Noche Vieja






Hola KM**VE,

Para calcular el numero de
1) DiasTrabajados (incluidos los sabados, excluidos los domingos y fiestas):
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

2) Domingos:
=SUMAPRODUCTO(--(DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)=7))

3) Fiestas que no coincidan con domingos:
±-A1+1-DiasTrabajados-Domingos
o si no se dispone de DiasTrabajados y Domingos
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)>0))

Saludos,
KL



"KM**VE" <NOSPAMkhaledmourad@NOSPAMhotmail.com> wrote in message
news:eOd2gx2SGHA.4600@TK2MSFTNGP11.phx.gbl...

Hola amigo KL

Gracias por la formula esta perfecta lo que necesitaba pero me falto
cuanto
dia domingo entre las fechas.



NOTA: Hay algun formula para hacer una lista de fecha de un ano, es para
hacer una lista que despliega que tengas fecha de un ano especifico.



Gracias

KM**VE



"KL" <NOSPAMlapink2000@PLEASEhotmail.com> escribio en el mensaje
news:usPIifpSGHA.5108@TK2MSFTNGP11.phx.gbl...
Hola KM**VE,

1) Si tienes que calcular los dias laborables en periodos que se solapan
con
el ano 2007, como sabras los dias oficiales de fiesta? No suelen aprobarse
por el gobierno al final del ano vigente las fechas para el ano que viene?

2) Creo recordar que estas en Venezuela, asi que en mi ejemplo usare el
calendario laboral 2006 de Venezuela que he encontrado en la web (es
posible
que tengas que corregirlo).

Suponiendo que...
- celda [A1] contiene la fecha inicial
- celda [B1] contiene la fecha final
- la fecha inicial y la final se encuentran dentro del mismo ano
- rango [F3:F22] contiene las fechas festivas

Usa la siguiente formula:

=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

Tambien te pongo un ejemplo aqui:
http://www.telefonica.net/web/kl/SS...rkDays.xls

Saludos,
KL







"KM**VE" <NOSPAMkaledmourad@NOSPAMhotmail.com> wrote in message
news:eslvfghSGHA.1728@TK2MSFTNGP11.phx.gbl...

Hola amigos en verdad no es lo que t? me mandaste,

Ejemplo:



Desde 09/12/2006 hasta el 15/01/2007



01/01/2007 d?as feriado comienzo del a?o

10/01/2007 d?a fiesta

11/01/2007 d?a fiesta



Hay 38 d?as

Hay 6 domingo

Hay 6 s?bado

Hay 26 d?as laborales



Mi resultado de d?as de Laborales = 29 d?as

Son:

38 d?as entre fechas

6 domingo

3 d?as fiesta



La formula que Quero es que me saca cuentas cuantos d?a laborales hay
contando los s?bado, esta cuenta puede varias la fecha Desde hasta.



Gracias


KM**VE



"Adolfo" <sumidecan@pimental.net> escribi? en el mensaje
news:%23nLN7YRSGHA.2156@tk2msftngp13.phx.gbl...

No entiendo muy bien lo que quieres hacer, pero bueno veamos a ver si me
he
enterado de algo.
Si lo que te hace falta es saber cuantos dias son laborables entre dos
fechas utiliza la funci?n DIAS.LAB.
Si quieres saber si una fecha es domingo la funcion DIASEM te puede
ayudar,
esta unida a un contar o un suma condicional te resolverian el problema
de
saber cuantos domingos hay entre dos fechas.

Si era esto lo que preguntabas pues hay lo tienes.
Un saludo,
Adolfo

"KM**VE" <NOSPAMkhaledmourad@NOSPAMhotmail.com> escribi? en el mensaje
news:epXT7tLSGHA.1844@TK2MSFTNGP12.phx.gbl...

hola amigos,
1- como hago un calendario de un a?o en forma automatica y saber cual
son
los dias domingo del clendario, y decirle cual son los dias feriado.
Ejemplo feriado: 01/01/2006 prencipio del a?o
12/03/2006 Carnaval
13/03/2006 Carnaval
14/03/2006 Carnaval
y los demas feriado continua

2- como hago esta formula, (A3)(A4)(A5)


A B C
D
1 desde 05/01/2005
2 hasta 14/03/2006
3 =trabajo
4 =domingo
5 =feriado
6
-



Gracias
KM**VE














Preguntas similare

Leer las respuestas

#1 KL
04/04/2006 - 20:56 | Informe spam
Hola KM**VE,

Creo que va a ser complicado (si es que es posible) hacerlo mediante formulas ya que se trata de iteraciones. Creo que si podrias hacerlo mediante VBA o menu Herramientas>Buscar objetivo...

Saludos,
KL


"KM**VE" wrote in message news:
Hola amigo KL sobre lo que me mandaste la formula de Excel esta bien. Ahora
es una manera al revés. Te explico.



En esta formula solo colocar la fecha de entrada y la salida y me da los
días domingo y días de fiesta que tenemos fijada abajo y el total de los
días. Hasta allí esta bien.



Ahora nenecito una manera de colocar la fecha de salida y colocar el tiempo
de vacación (es el numero 20 que son dias que es devacación) y la formula
que me coloca la fecha de entrada y los días domingo y fiestas y el total
días entre fechas.



Gracias

KM**VE



Salida Entrada Tiempo Vacación
20/04/2006 13/05/2006 20
Domingos : 3
Fiestas (domingos excl.) 0
Total Dias 24


Festivos en Venezuela 2006
Fecha Fiesta
01/01/2006 Ano Nuevo
02/01/2006 Ano Nuevo. Traslado al lunes siguiente
09/01/2006 Epifania
27/02/2006 Carnaval.
28/02/2006 Carnaval.
19/03/2006 Fiesta de San Jose
13/04/2006 Jueves Santo
14/04/2006 Viernes Santo
19/04/2006 Declaracion de la Independencia
01/05/2006 Dia del Trabajo
24/06/2006 Aniversario de la Batalla de Carabobo
26/06/2006 Festividad de San Pedro y San Pablo.
05/07/2006 Día de la Independencia.
24/07/2006 Aniversario del nacimiento de Simón Bolívar.
15/08/2006 Asunción
12/10/2006 Día de la Hispanidad
03/11/2006 Día de los Difuntos
11/12/2006 Inmaculada Concepción
25/12/2006 Navidad
31/12/2006 Noche Vieja






Hola KM**VE,

Para calcular el numero de
1) DiasTrabajados (incluidos los sabados, excluidos los domingos y fiestas):
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

2) Domingos:
=SUMAPRODUCTO(--(DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)=7))

3) Fiestas que no coincidan con domingos:
±-A1+1-DiasTrabajados-Domingos
o si no se dispone de DiasTrabajados y Domingos
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)>0))

Saludos,
KL



"KM**VE" wrote in message
news:
Hola amigo KL

Gracias por la formula esta perfecta lo que necesitaba pero me falto
cuanto
dia domingo entre las fechas.



NOTA: Hay algun formula para hacer una lista de fecha de un ano, es para
hacer una lista que despliega que tengas fecha de un ano especifico.



Gracias

KM**VE



"KL" escribio en el mensaje
news:
Hola KM**VE,

1) Si tienes que calcular los dias laborables en periodos que se solapan
con
el ano 2007, como sabras los dias oficiales de fiesta? No suelen aprobarse
por el gobierno al final del ano vigente las fechas para el ano que viene?

2) Creo recordar que estas en Venezuela, asi que en mi ejemplo usare el
calendario laboral 2006 de Venezuela que he encontrado en la web (es
posible
que tengas que corregirlo).

Suponiendo que...
- celda [A1] contiene la fecha inicial
- celda [B1] contiene la fecha final
- la fecha inicial y la final se encuentran dentro del mismo ano
- rango [F3:F22] contiene las fechas festivas

Usa la siguiente formula:

=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

Tambien te pongo un ejemplo aqui:
http://www.telefonica.net/web/kl/SS...rkDays.xls

Saludos,
KL







"KM**VE" wrote in message
news:
Hola amigos en verdad no es lo que t? me mandaste,

Ejemplo:



Desde 09/12/2006 hasta el 15/01/2007



01/01/2007 d?as feriado comienzo del a?o

10/01/2007 d?a fiesta

11/01/2007 d?a fiesta



Hay 38 d?as

Hay 6 domingo

Hay 6 s?bado

Hay 26 d?as laborales



Mi resultado de d?as de Laborales = 29 d?as

Son:

38 d?as entre fechas

6 domingo

3 d?as fiesta



La formula que Quero es que me saca cuentas cuantos d?a laborales hay
contando los s?bado, esta cuenta puede varias la fecha Desde hasta.



Gracias


KM**VE



"Adolfo" escribi? en el mensaje
news:%
No entiendo muy bien lo que quieres hacer, pero bueno veamos a ver si me
he
enterado de algo.
Si lo que te hace falta es saber cuantos dias son laborables entre dos
fechas utiliza la funci?n DIAS.LAB.
Si quieres saber si una fecha es domingo la funcion DIASEM te puede
ayudar,
esta unida a un contar o un suma condicional te resolverian el problema
de
saber cuantos domingos hay entre dos fechas.

Si era esto lo que preguntabas pues hay lo tienes.
Un saludo,
Adolfo

"KM**VE" escribi? en el mensaje
news:
hola amigos,
1- como hago un calendario de un a?o en forma automatica y saber cual
son
los dias domingo del clendario, y decirle cual son los dias feriado.
Ejemplo feriado: 01/01/2006 prencipio del a?o
12/03/2006 Carnaval
13/03/2006 Carnaval
14/03/2006 Carnaval
y los demas feriado continua

2- como hago esta formula, (A3)(A4)(A5)


A B C
D
1 desde 05/01/2005
2 hasta 14/03/2006
3 =trabajo
4 =domingo
5 =feriado
6
-



Gracias
KM**VE


















Respuesta Responder a este mensaje
#2 KM**VE
04/04/2006 - 22:30 | Informe spam
hola amigo me puede explicar mejor cual es la forma de solucionar.

Gracias
KM**VE

"KL" escribió en el mensaje
news:%
Hola KM**VE,

Creo que va a ser complicado (si es que es posible) hacerlo mediante
formulas ya que se trata de iteraciones. Creo que si podrias hacerlo
mediante VBA o menu Herramientas>Buscar objetivo...

Saludos,
KL


"KM**VE" wrote in message
news:
Hola amigo KL sobre lo que me mandaste la formula de Excel esta bien.
Ahora
es una manera al revés. Te explico.



En esta formula solo colocar la fecha de entrada y la salida y me da los
días domingo y días de fiesta que tenemos fijada abajo y el total de los
días. Hasta allí esta bien.



Ahora nenecito una manera de colocar la fecha de salida y colocar el
tiempo
de vacación (es el numero 20 que son dias que es devacación) y la formula
que me coloca la fecha de entrada y los días domingo y fiestas y el total
días entre fechas.



Gracias

KM**VE



Salida Entrada Tiempo Vacación
20/04/2006 13/05/2006 20
Domingos : 3
Fiestas (domingos excl.) 0
Total Dias 24


Festivos en Venezuela 2006
Fecha Fiesta
01/01/2006 Ano Nuevo
02/01/2006 Ano Nuevo. Traslado al lunes siguiente
09/01/2006 Epifania
27/02/2006 Carnaval.
28/02/2006 Carnaval.
19/03/2006 Fiesta de San Jose
13/04/2006 Jueves Santo
14/04/2006 Viernes Santo
19/04/2006 Declaracion de la Independencia
01/05/2006 Dia del Trabajo
24/06/2006 Aniversario de la Batalla de Carabobo
26/06/2006 Festividad de San Pedro y San Pablo.
05/07/2006 Día de la Independencia.
24/07/2006 Aniversario del nacimiento de Simón Bolívar.
15/08/2006 Asunción
12/10/2006 Día de la Hispanidad
03/11/2006 Día de los Difuntos
11/12/2006 Inmaculada Concepción
25/12/2006 Navidad
31/12/2006 Noche Vieja






Hola KM**VE,

Para calcular el numero de
1) DiasTrabajados (incluidos los sabados, excluidos los domingos y
fiestas):
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

2) Domingos:
=SUMAPRODUCTO(--(DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)=7))

3) Fiestas que no coincidan con domingos:
±-A1+1-DiasTrabajados-Domingos
o si no se dispone de DiasTrabajados y Domingos
=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)>0))

Saludos,
KL



"KM**VE" wrote in message
news:
Hola amigo KL

Gracias por la formula esta perfecta lo que necesitaba pero me falto
cuanto
dia domingo entre las fechas.



NOTA: Hay algun formula para hacer una lista de fecha de un ano, es para
hacer una lista que despliega que tengas fecha de un ano especifico.



Gracias

KM**VE



"KL" escribio en el mensaje
news:
Hola KM**VE,

1) Si tienes que calcular los dias laborables en periodos que se solapan
con
el ano 2007, como sabras los dias oficiales de fiesta? No suelen
aprobarse
por el gobierno al final del ano vigente las fechas para el ano que
viene?

2) Creo recordar que estas en Venezuela, asi que en mi ejemplo usare el
calendario laboral 2006 de Venezuela que he encontrado en la web (es
posible
que tengas que corregirlo).

Suponiendo que...
- celda [A1] contiene la fecha inicial
- celda [B1] contiene la fecha final
- la fecha inicial y la final se encuentran dentro del mismo ano
- rango [F3:F22] contiene las fechas festivas

Usa la siguiente formula:

=SUMAPRODUCTO((DIASEM(A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1;2)<7)*(CONTAR.SI(F3:F22;A1+FILA(INDIRECTO("1:"&(B1-A1+1)))-1)=0))

Tambien te pongo un ejemplo aqui:
http://www.telefonica.net/web/kl/SS...rkDays.xls

Saludos,
KL







"KM**VE" wrote in message
news:
Hola amigos en verdad no es lo que t? me mandaste,

Ejemplo:



Desde 09/12/2006 hasta el 15/01/2007



01/01/2007 d?as feriado comienzo del a?o

10/01/2007 d?a fiesta

11/01/2007 d?a fiesta



Hay 38 d?as

Hay 6 domingo

Hay 6 s?bado

Hay 26 d?as laborales



Mi resultado de d?as de Laborales = 29 d?as

Son:

38 d?as entre fechas

6 domingo

3 d?as fiesta



La formula que Quero es que me saca cuentas cuantos d?a laborales hay
contando los s?bado, esta cuenta puede varias la fecha Desde hasta.



Gracias


KM**VE



"Adolfo" escribi? en el mensaje
news:%
No entiendo muy bien lo que quieres hacer, pero bueno veamos a ver si
me
he
enterado de algo.
Si lo que te hace falta es saber cuantos dias son laborables entre dos
fechas utiliza la funci?n DIAS.LAB.
Si quieres saber si una fecha es domingo la funcion DIASEM te puede
ayudar,
esta unida a un contar o un suma condicional te resolverian el problema
de
saber cuantos domingos hay entre dos fechas.

Si era esto lo que preguntabas pues hay lo tienes.
Un saludo,
Adolfo

"KM**VE" escribi? en el mensaje
news:
hola amigos,
1- como hago un calendario de un a?o en forma automatica y saber cual
son
los dias domingo del clendario, y decirle cual son los dias feriado.
Ejemplo feriado: 01/01/2006 prencipio del a?o
12/03/2006 Carnaval
13/03/2006 Carnaval
14/03/2006 Carnaval
y los demas feriado continua

2- como hago esta formula, (A3)(A4)(A5)


A B C
D
1 desde 05/01/2005
2 hasta 14/03/2006
3 =trabajo
4 =domingo
5 =feriado
6
-



Gracias
KM**VE


















Respuesta Responder a este mensaje
#3 Hernandez, Roberto
04/04/2006 - 23:39 | Informe spam
KM**VE

Perdona que me entromenta en el hilo, pero te paso un código [la verdad ando
apretado de tiempo y quizás te parezca algo complicado].
Yo lo uso para marcar vacaciones en una tabla en donde registro la
'actividad' de mis empleados.
Como puedes ver los festivos están en la columna S, uno en cada celda sólo
adaptalos a los de Venezuela.
Escribo los datos de los trabajadores en tres columnas, [ID_empleado],
[InicioVacaciones],[Día_Descanso]
Quizás puedas eliminarle la parte que 'escribe', para obtener la fecha de
retorno de vacaciones...
Saludos desde MX!


Sub Vacaciones()
Dim NuevaCelda As Range
Dim Holidays As String
Dim Descanso As String

Festivos = Range("S1") & Range("S2") & Range("S3") & Range("S4") &
Range("S5") & _
Range("S6") & Range("S7") & Range("S8") & Range("S9") & Range("S10") &
Range("S11")

DiasVacaciones = 0
Dias = 1

On Error Resume Next

Sheets("Vacaciones").Select
Range("E2:E8176").Select
Selection.ClearContents
Range("A2").Select
Application.ScreenUpdating = True
Set NuevaCelda = Application.InputBox( _
Prompt:="Selecciona numeros de trabajador a descargar", _
Title:="SOLO IBMs", _
Default:=("$A$2"), _
Type:=8) ' Type:=8
If NuevaCelda Is Nothing Or NuevaCelda.Columns.Count > 1 Then
MsgBox "Seleccione sólo numeros de trabajador": Exit Sub
Else

ProgressDlg2.Caption = "Descargando Vacaciones, por favor espere..."
Reg_porProcesar = NuevaCelda.Rows.Count
Reg_Procesados = 1


For Each c In ActiveSheet.Range(NuevaCelda.Address)
Sheets("Vacaciones").Select
DiasVacaciones = 0
Application.StatusBar = "Downloading..."
Trabajador = c.Value
If Trabajador = 0 Then Exit Sub
Fecha = c.Offset(, 1).Value
If Fecha < 1 / 1 / 2005 Then Exit Sub
Descanso = c.Offset(, 3).Value
If Descanso = "" Then Exit Sub
Dias = c.Offset(, 2).Value
Do While DiasVacaciones < Dias
If Sheets("Vacaciones").Range("G2") = "" Then
Sheets("Vacaciones").Range("G2") =
"=IF(ISERROR(+MATCH(G1,Primero!6:6,0)),0,+MATCH(G1,Primero!6:6,0))" 'crea
las formulas de coincidir si no existen
If Sheets("Vacaciones").Range("H2") = "" Then
Sheets("Vacaciones").Range("H2") =
"=IF(ISERROR(+MATCH(H1,Primero!I:I,0)),0,+MATCH(H1,Primero!I:I,0))"
Sheets("Vacaciones").Range("H1") = Trabajador
Sheets("Vacaciones").Range("G1") = Fecha
c.Offset(, 4).Value = "Descarga efectuada"
If Sheets("Vacaciones").Range("h2") = 0 Then
c.Offset(, 4).Value = "Este trabajador no existe"
ElseIf Sheets("Vacaciones").Range("g2") = 0 Then
c.Offset(, 4).Value = "La fecha no existe"
End If
Sheets("Primero").Select
If Not Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "" And Not
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
c.AddComment "No se descargó V en la fecha " & Fecha & " porque tenía
antes " & Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2"))
If Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
Resume Next
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")).Select
If InStr(1, Festivos, Fecha, vbTextCompare) <> 0 Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "F"
ElseIf LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
End If
Fecha = Fecha + 1
ProgressBar2 "Analizando día " & DiasVacaciones & " de " & Dias,
DiasVacaciones / Dias, "Analizando trabajador " & _
Reg_Procesados & " de " & Reg_porProcesar, Reg_Procesados /
Reg_porProcesar
Loop
If LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
'Fecha = Fecha + 1
Sheets("Vacaciones").Range("G1") = Fecha
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
c.Offset(, 4).Value = Fecha + 1
Else
c.Offset(, 4).Value = Fecha
End If
Reg_Procesados = Reg_Procesados + 1
Next

End If
Application.StatusBar = False
Sheets("Vacaciones").Select
MsgBox "Vacaciones Registradas", vbInformation, Application.UserName
Unload ProgressDlg2
End Sub
Respuesta Responder a este mensaje
#4 KM**VE
05/04/2006 - 00:10 | Informe spam
Hola Héctor gracias por tu atención pero cuando copie el macro me salio
muchas Lina en rojo y no puede arreglarlo por favor verifica y me comenta.



Gracias
KM**VE


"Hernandez, Roberto" escribió en el mensaje
news:
KM**VE

Perdona que me entromenta en el hilo, pero te paso un código [la verdad
ando apretado de tiempo y quizás te parezca algo complicado].
Yo lo uso para marcar vacaciones en una tabla en donde registro la
'actividad' de mis empleados.
Como puedes ver los festivos están en la columna S, uno en cada celda sólo
adaptalos a los de Venezuela.
Escribo los datos de los trabajadores en tres columnas, [ID_empleado],
[InicioVacaciones],[Día_Descanso]
Quizás puedas eliminarle la parte que 'escribe', para obtener la fecha de
retorno de vacaciones...
Saludos desde MX!


Sub Vacaciones()
Dim NuevaCelda As Range
Dim Holidays As String
Dim Descanso As String

Festivos = Range("S1") & Range("S2") & Range("S3") & Range("S4") &
Range("S5") & _
Range("S6") & Range("S7") & Range("S8") & Range("S9") & Range("S10") &
Range("S11")

DiasVacaciones = 0
Dias = 1

On Error Resume Next

Sheets("Vacaciones").Select
Range("E2:E8176").Select
Selection.ClearContents
Range("A2").Select
Application.ScreenUpdating = True
Set NuevaCelda = Application.InputBox( _
Prompt:="Selecciona numeros de trabajador a descargar", _
Title:="SOLO IBMs", _
Default:=("$A$2"), _
Type:=8) ' Type:=8
If NuevaCelda Is Nothing Or NuevaCelda.Columns.Count > 1 Then
MsgBox "Seleccione sólo numeros de trabajador": Exit Sub
Else

ProgressDlg2.Caption = "Descargando Vacaciones, por favor espere..."
Reg_porProcesar = NuevaCelda.Rows.Count
Reg_Procesados = 1


For Each c In ActiveSheet.Range(NuevaCelda.Address)
Sheets("Vacaciones").Select
DiasVacaciones = 0
Application.StatusBar = "Downloading..."
Trabajador = c.Value
If Trabajador = 0 Then Exit Sub
Fecha = c.Offset(, 1).Value
If Fecha < 1 / 1 / 2005 Then Exit Sub
Descanso = c.Offset(, 3).Value
If Descanso = "" Then Exit Sub
Dias = c.Offset(, 2).Value
Do While DiasVacaciones < Dias
If Sheets("Vacaciones").Range("G2") = "" Then
Sheets("Vacaciones").Range("G2") =
"=IF(ISERROR(+MATCH(G1,Primero!6:6,0)),0,+MATCH(G1,Primero!6:6,0))" 'crea
las formulas de coincidir si no existen
If Sheets("Vacaciones").Range("H2") = "" Then
Sheets("Vacaciones").Range("H2") =
"=IF(ISERROR(+MATCH(H1,Primero!I:I,0)),0,+MATCH(H1,Primero!I:I,0))"
Sheets("Vacaciones").Range("H1") = Trabajador
Sheets("Vacaciones").Range("G1") = Fecha
c.Offset(, 4).Value = "Descarga efectuada"
If Sheets("Vacaciones").Range("h2") = 0 Then
c.Offset(, 4).Value = "Este trabajador no existe"
ElseIf Sheets("Vacaciones").Range("g2") = 0 Then
c.Offset(, 4).Value = "La fecha no existe"
End If
Sheets("Primero").Select
If Not Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "" And Not
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
c.AddComment "No se descargó V en la fecha " & Fecha & " porque tenía
antes " & Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2"))
If Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
Resume Next
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")).Select
If InStr(1, Festivos, Fecha, vbTextCompare) <> 0 Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "F"
ElseIf LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
End If
Fecha = Fecha + 1
ProgressBar2 "Analizando día " & DiasVacaciones & " de " & Dias,
DiasVacaciones / Dias, "Analizando trabajador " & _
Reg_Procesados & " de " & Reg_porProcesar, Reg_Procesados /
Reg_porProcesar
Loop
If LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
'Fecha = Fecha + 1
Sheets("Vacaciones").Range("G1") = Fecha
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
c.Offset(, 4).Value = Fecha + 1
Else
c.Offset(, 4).Value = Fecha
End If
Reg_Procesados = Reg_Procesados + 1
Next

End If
Application.StatusBar = False
Sheets("Vacaciones").Select
MsgBox "Vacaciones Registradas", vbInformation, Application.UserName
Unload ProgressDlg2
End Sub



Respuesta Responder a este mensaje
#5 Hernandez, Roberto
05/04/2006 - 00:18 | Informe spam
Regards,
No Hector, no copy and paste.
I sent you this code, so you can modify it to match your requirements.
It is working in a whole application, and will send error messages if you
only copy and paste in yours.
Sorry, but i have no time enough to modify it for you.
HTH,

"KM**VE" escribió en el mensaje
news:
Hola Héctor gracias por tu atención pero cuando copie el macro me salio
muchas Lina en rojo y no puede arreglarlo por favor verifica y me comenta.



Gracias
KM**VE


"Hernandez, Roberto" escribió en el mensaje
news:
KM**VE

Perdona que me entromenta en el hilo, pero te paso un código [la verdad
ando apretado de tiempo y quizás te parezca algo complicado].
Yo lo uso para marcar vacaciones en una tabla en donde registro la
'actividad' de mis empleados.
Como puedes ver los festivos están en la columna S, uno en cada celda
sólo adaptalos a los de Venezuela.
Escribo los datos de los trabajadores en tres columnas, [ID_empleado],
[InicioVacaciones],[Día_Descanso]
Quizás puedas eliminarle la parte que 'escribe', para obtener la fecha de
retorno de vacaciones...
Saludos desde MX!


Sub Vacaciones()
Dim NuevaCelda As Range
Dim Holidays As String
Dim Descanso As String

Festivos = Range("S1") & Range("S2") & Range("S3") & Range("S4") &
Range("S5") & _
Range("S6") & Range("S7") & Range("S8") & Range("S9") & Range("S10")
& Range("S11")

DiasVacaciones = 0
Dias = 1

On Error Resume Next

Sheets("Vacaciones").Select
Range("E2:E8176").Select
Selection.ClearContents
Range("A2").Select
Application.ScreenUpdating = True
Set NuevaCelda = Application.InputBox( _
Prompt:="Selecciona numeros de trabajador a descargar", _
Title:="SOLO IBMs", _
Default:=("$A$2"), _
Type:=8) ' Type:=8
If NuevaCelda Is Nothing Or NuevaCelda.Columns.Count > 1 Then
MsgBox "Seleccione sólo numeros de trabajador": Exit Sub
Else

ProgressDlg2.Caption = "Descargando Vacaciones, por favor espere..."
Reg_porProcesar = NuevaCelda.Rows.Count
Reg_Procesados = 1


For Each c In ActiveSheet.Range(NuevaCelda.Address)
Sheets("Vacaciones").Select
DiasVacaciones = 0
Application.StatusBar = "Downloading..."
Trabajador = c.Value
If Trabajador = 0 Then Exit Sub
Fecha = c.Offset(, 1).Value
If Fecha < 1 / 1 / 2005 Then Exit Sub
Descanso = c.Offset(, 3).Value
If Descanso = "" Then Exit Sub
Dias = c.Offset(, 2).Value
Do While DiasVacaciones < Dias
If Sheets("Vacaciones").Range("G2") = "" Then
Sheets("Vacaciones").Range("G2") =
"=IF(ISERROR(+MATCH(G1,Primero!6:6,0)),0,+MATCH(G1,Primero!6:6,0))" 'crea
las formulas de coincidir si no existen
If Sheets("Vacaciones").Range("H2") = "" Then
Sheets("Vacaciones").Range("H2") =
"=IF(ISERROR(+MATCH(H1,Primero!I:I,0)),0,+MATCH(H1,Primero!I:I,0))"
Sheets("Vacaciones").Range("H1") = Trabajador
Sheets("Vacaciones").Range("G1") = Fecha
c.Offset(, 4).Value = "Descarga efectuada"
If Sheets("Vacaciones").Range("h2") = 0 Then
c.Offset(, 4).Value = "Este trabajador no existe"
ElseIf Sheets("Vacaciones").Range("g2") = 0 Then
c.Offset(, 4).Value = "La fecha no existe"
End If
Sheets("Primero").Select
If Not Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "" And Not
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
c.AddComment "No se descargó V en la fecha " & Fecha & " porque tenía
antes " & Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2"))
If Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "Pn" Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
Resume Next
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")).Select
If InStr(1, Festivos, Fecha, vbTextCompare) <> 0 Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "F"
ElseIf LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
Else
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "V"
DiasVacaciones = DiasVacaciones + 1
End If
End If
Fecha = Fecha + 1
ProgressBar2 "Analizando día " & DiasVacaciones & " de " & Dias,
DiasVacaciones / Dias, "Analizando trabajador " & _
Reg_Procesados & " de " & Reg_porProcesar, Reg_Procesados /
Reg_porProcesar
Loop
If LCase(WeekdayName(Weekday(Fecha), False, vbSunday)) =
LCase(Descanso) Then
'Fecha = Fecha + 1
Sheets("Vacaciones").Range("G1") = Fecha
Sheets("Primero").Cells(Sheets("Vacaciones").Range("h2"),
Sheets("Vacaciones").Range("g2")) = "D"
c.Offset(, 4).Value = Fecha + 1
Else
c.Offset(, 4).Value = Fecha
End If
Reg_Procesados = Reg_Procesados + 1
Next

End If
Application.StatusBar = False
Sheets("Vacaciones").Select
MsgBox "Vacaciones Registradas", vbInformation, Application.UserName
Unload ProgressDlg2
End Sub







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida