• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

yıllık izin hk.

Katılım
7 Kasım 2005
Mesajlar
505
Excel Vers. ve Dili
Office 365 TR-64
SN. HALİT BEY

Ekteki tabloda yer alan makroyu siz yapmıştınız ve bir şantiyeci için mükemmel bir çalışma.


FORMÜLE GÖRE 9.SATIRDAKİ KİŞİ YAŞINDAN DOLAYI (AS3 HÜCRESİNDEKİ GÜNÜN TARİHİ) 19.12.2010 TARİHİNDE İZİN GÜNÜ BB SÜTUNUNDA 14 OLARAK DEVAM ETMESİ GEREKİRKEN 20 YAPIYOR (6 GÜN DAHA EKLİYOR EKLEMEMESİ GEREK).

İZİN HAKKI KAZANDIĞI TARİHDEN SONRA YAŞI 50 NİN ÜZERİNE ÇIKMIŞ İSE İZİN GÜN SAYISINI ARTTIRMAMASI GEREKİYOR. 50 YAŞINI DOLDURDUKTAN SONRA İZİNE HAK KAZANMIŞ İSE DİREKT 20 GÜNLÜK İZİN HAKKINI KAZANIYOR.

KISACA 20 GÜNLÜK İZİN HAKKI İÇİN ÖNCE 50 YAŞ ŞARTININ OLUŞMASI GEREKLİ.

SAYGILARIMLA,
 

Ekli dosyalar

Merhaba Halit Bey,

Kasteddiğim olay eşit veya büyük olması değildi. Örneğin ben 06.06.2010 tarihinde 14 gün izin hakediyorum. Fakat benim doğum tarihim 06.10.1960. Makro 06.10.2010 tarihinde benim izin gün sayıma 6 gün daha ilave ediyor. ilave etmemesi gerek.

Ayrıca, kişinin yaşı 50 olunca ve kişi örneğin 3 yıldır çalışıyor ve de toplamda 42 gün izin hakkı var ise program otomatikman 60 güne çıkartıyor.

Biliyorum zor bir işlem gibi görünüyor ama üstesinden geleceğinize eminim.

Saygılar,
 
6 gün daha ilave etmesi 20-14 =6 farkı olarak ekliyor yani buradaki ekleme 5 yılını doldurduğu için 6 günün ekliyor

50 yaş içinde bir sınırlama yapıldı yeni giren birisi için yaşı 50 ve üzeri ise yıllık izin burada 20 gün olarak veriyor 3 yılda 3*20=60 yapıyor
 
Merhaba Halit Bey,

tablomda dikkat ederseniz izinleri kümülatif tutuyorum. 49 yaşında iken kişi 2 yıllık personel ve 14*2 = 28 gün izin hakediyor. Fakat makroda, bu kişiye ait olan geçmişte kazanılmış izin hakkını 50 yaşına girdiği için 28 günü 40 yapıyor.
 
merhaba
işten ayrılan işçiye kullanmadığı izinlerinin ücretini ödeyeceğim bu konuyla ilgili hesaplama tablosunu nasıl oluşturabilirim.
teşekkürler
 
Merhaba Halit Bey,

tablomda dikkat ederseniz izinleri kümülatif tutuyorum. 49 yaşında iken kişi 2 yıllık personel ve 14*2 = 28 gün izin hakediyor. Fakat makroda, bu kişiye ait olan geçmişte kazanılmış izin hakkını 50 yaşına girdiği için 28 günü 40 yapıyor.


birde bu kodu denermisiniz.

Kod:
Function izinbul(işebaslamatarihi, yaşı, yeni_izin_tarihi)
If işebaslamatarihi = "" Then
izinbul = ""
Exit Function
ElseIf yaşı = "" Then
izinbul = ""
Exit Function
End If
yıl = 365.25
deg1 = CDate(Sheets("yeni").Cells(3, 45).Value)
deg2 = Val((deg1 - CDate(işebaslamatarihi)) * 1) + 1
If deg2 >= yıl Then
Tarih = Val((deg2 / yıl))
Else
Tarih = 0
End If
deg3 = Val(Val(((deg1 - CDate(yaşı)) * 1) + 1) / yıl)
deg4 = Val((deg1 - CDate(yeni_izin_tarihi)) * 1) + 1
son = 0
If deg4 >= yıl Then
deg2 = Val((deg4 / yıl))
For i = deg2 To 1 Step -1
If işebaslamatarihi > 0 Then
If Tarih <= 0 Then
izinbul = 0
ElseIf deg3 <= 18 Then
izinbul = 20
ElseIf deg3 >= 50 Then
izinbul = 20
ElseIf Tarih >= 1 And Tarih <= 5 Then
izinbul = 14
ElseIf Tarih >= 6 And Tarih <= 14 Then
izinbul = 20
ElseIf Tarih >= 15 And Tarih <= 65 Then
izinbul = 26
End If
End If
deg3 = deg3 - 1
son = son + izinbul
Next i
izinbul = son
Else
izinbul = 0
End If
End Function
 
Çok çok teşekkür Halit Bey,

50 yaş dolduğunda baki izinlerin 20 ye tamamlanmasını engellediniz.
Tek sorun;
örneğin : 01.07.1960 doğumlu birinin, 01.06.2010 tarihinde 14 gün izin hakedip 01.07.2010 tarihini gelince makronun bu i14 gün izin gününü 20 ye çıkartması.

Saygılar,
 
Çok çok teşekkür Halit Bey,

50 yaş dolduğunda baki izinlerin 20 ye tamamlanmasını engellediniz.
Tek sorun;
örneğin : 01.07.1960 doğumlu birinin, 01.06.2010 tarihinde 14 gün izin hakedip 01.07.2010 tarihini gelince makronun bu i14 gün izin gününü 20 ye çıkartması.

Saygılar,

evet doğru bunu 20 güne çıkartır yıllık izinlerde yıl içinde kdemi değiştiği zaman izin günüde değişiyorsa fazla olan verilir.
 
Günaydın Halit Bey,

Çok çok özür. Ben size problem düzeldi demiştim fakat 50 yaşının üstünde olup 15 yıllık bir personel için de 20 gün izin hakkı veriyor.

Saygılar,
 
kodu deneme zamanım olmadı bir deneyiniz.

Function izinbul(işebaslamatarihi, yaşı, yeni_izin_tarihi)
If işebaslamatarihi = "" Then
izinbul = ""
Exit Function
ElseIf yaşı = "" Then
izinbul = ""
Exit Function
End If
yıl = 365.25
deg1 = CDate(Sheets("yeni").Cells(3, 45).Value)
deg2 = Val((deg1 - CDate(işebaslamatarihi)) * 1) + 1
If deg2 >= yıl Then
Tarih = Val((deg2 / yıl))
Else
Tarih = 0
End If
deg3 = Val(Val(((deg1 - CDate(yaşı)) * 1) + 1) / yıl)
deg4 = Val((deg1 - CDate(yeni_izin_tarihi)) * 1) + 1
son = 0
If deg4 >= yıl Then
deg2 = Val((deg4 / yıl))
For i = deg2 To 1 Step -1
If işebaslamatarihi > 0 Then
If Tarih <= 0 Then
izinbul = 0
ElseIf Tarih >= 1 And Tarih <= 5 Then
izinbul = 14
ElseIf Tarih >= 6 And Tarih <= 14 Then
izinbul = 20
ElseIf Tarih >= 15 And Tarih <= 65 Then
izinbul = 26
ElseIf deg3 <= 18 Then
izinbul = 20
ElseIf deg3 >= 50 Then
If izinbul < 20 Then
izinbul = 20
Else
izinbul = izinbul
End If
End If
End If
deg3 = deg3 - 1
son = son + izinbul
Next i
izinbul = son
Else
izinbul = 0
End If
End Function
 
Günaydınlar Halit Bey,

Şimdi de 50 yaş üstü 20 günü yapmıyor.
 
mesajınızı yanlış anlamışım

birde böyle deneyiniz.

Function izinbul(işebaslamatarihi, yaşı, yeni_izin_tarihi)
If işebaslamatarihi = "" Then
izinbul = ""
Exit Function
ElseIf yaşı = "" Then
izinbul = ""
Exit Function
End If
yıl = 365.25
deg1 = CDate(Sheets("yeni").Cells(3, 45).Value)
deg2 = Val((deg1 - CDate(işebaslamatarihi)) * 1) + 1
If deg2 >= yıl Then
Tarih = Val((deg2 / yıl))
Else
Tarih = 0
End If
deg3 = Val(Val(((deg1 - CDate(yaşı)) * 1) + 1) / yıl)
deg4 = Val((deg1 - CDate(yeni_izin_tarihi)) * 1) + 1
son = 0
If deg4 >= yıl Then
deg2 = Val((deg4 / yıl))
For i = deg2 To 1 Step -1
If işebaslamatarihi > 0 Then
If Tarih <= 0 Then
izinbul = 0
ElseIf Tarih >= 1 And Tarih <= 5 Then
izinbul = 14
ElseIf Tarih >= 6 And Tarih <= 14 Then
izinbul = 20
ElseIf Tarih >= 15 And Tarih <= 65 Then
izinbul = 26
End If
If deg3 <= 18 Then
izinbul = 20
ElseIf deg3 >= 50 Then
If izinbul < 20 Then
izinbul = 20
Else
izinbul = izinbul
End If
End If

End If
deg3 = deg3 - 1
son = son + izinbul
Next i
izinbul = son
Else
izinbul = 0
End If
End Function
 
Çok çok sağolun Hlit Bey. Bazı işlerimi sayenizde o kadar kolaylaştırdım ki. İyiki varsınız.
 
Geri
Üst