Sistem Absensi Dan Laporan Penggajian

Sistem Absensi dan Laporan Penggajian

Tutorial ini bisa dikembangkan lagi dan digunakan di tempat kerja yang tidak mempunyai Software applikasi pengolahan Data. Rancangan sistem yang saya buat ini terdiri dari 4 Sesion :

Sesion # 1. Membuat Form Input Data Karyawan
Sesion # 2. Membuat Form Input Absensi Karyawan
Sesion # 3. Membuat Form Input Data Slip Gaji Karyawan
Sesion # 4. Membuat Template Laporan Absensi dan Laporan Penggajian

Sesion # 2 Membuat Form Input Data Absensi Karyawan

Form Inputan Data Absensi Karyawan dibuat untuk mengetahui ketidak Hadiran Karyawan, Jumlah Jam kerja, Jam Lembur, Jam Terlambat, Jam Pulang Awal dimana Data ini sangnat diperlukan pada saat melakukan proses penggajian.

Berikut ini  rancangan Sheet dan Form yang saya buat :


Pada Sheet ("Absesnsi") Coulomn H masukkan rumus =IF(C4>$F$2,C4-$F$2,0)
Pada Sheet ("Absesnsi") Coulomn I masukkan rumus =IF($H$2>D4,$H$2-D4,0)
Pada Sheet ("Absesnsi") Coulomn J masukkan rumus =H4+I4

Form Input Data Absensi Karyawan di rancang pada Sheet ("Template")


Pada Range ("C7") buatlah DataValidation untuk Keterangan Hari Kerja :
"Hari Kerja Normal,Hari Libur Nasional" tanpa tanda kutip

Pada Range ("C8") masukkan Fungsi untuk Status Absensi :
"=IF(E5=0,"Tidak Kerja",IF(E5>E4,"Terlambat",IF(G4>E6,"Pulang Awal","Tepat Waktu")))" tanpa tanda kutip

Pada Range ("G5") masuk Fungsi Rumus untuk menghitung jumlah Jam Lembur Karyawan :
"=(IF(C7="Hari Kerja Normal",(IF($G$4<E6,E6-$G$4,0)),IF(E5<E6,(E6-E5)-1,($G$3-E5+E6)-1)))" tanpa tanda kutip

Pada Range ("G6") masukkan Fungsi Rumus untuk menghitung jumlah perkalian jam Lembur Karyawan :
"=IF(G5<=G3,"0",(IF(C7="Hari Kerja Normal",(G5*2-0.5),IF(G5<=$C$4,G5*2,G5*4-17))))" tanpa tanda kutip

"Untuk Penjelasan dari Fungsi - Fungsi tersebut silahkan Sobat lihat Tutorial Video YuoTube di atas"

Pada Form Inputan Data Absensi Karyawan ini saya juga membuat Tombol Perintah untuk Simpan, Cari, Edit dan Hapus Data ke Sheet ("Absensi").

Berikut ini Koding Module untuk Simpan Data :


Sub Simpan_Absensi()
Dim Absensi As Long
Set WsAbsensi = Worksheets("Absensi")
If Worksheets("Template").Range("C5") = "" Then
MsgBox "NIK Karyawan Masih Kosong", vbOKOnly + vbInformation, "Data Absensi"
Worksheets("Template").Range("C5").Select
Exit Sub
ElseIf Worksheets("Template").Range("C6") = "" Then
MsgBox "Data Tanggal Masih Kosong", vbOKOnly + vbInformation, "Data Absensi"
Worksheets("Template").Range("C6").Select
Exit Sub
ElseIf Worksheets("Template").Range("C7") = "" Then
MsgBox "Keterangan Hari Masih Kosong", vbOKOnly + vbInformation, "Data Absensi"
Worksheets("Template").Range("C6").Select
Exit Sub
ElseIf Worksheets("Template").Range("E5") = "" Then
MsgBox "Data Jam Masuk Masih Kosong", vbOKOnly + vbInformation, "Data Absensi"
Worksheets("Template").Range("E5").Select
Exit Sub
ElseIf Worksheets("Template").Range("E6") = "" Then
MsgBox "Data Jam Pulang Masih Kosong", vbOKOnly + vbInformation, "Data Absensi"
Worksheets("Template").Range("E6").Select
Exit Sub
End If
With WsAbsensi
Absensi = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).row
.Cells(Absensi, 1).Value = Range("C5").Value
.Cells(Absensi, 2).Value = Range("C6").Value
.Cells(Absensi, 3).Value = Range("E5").Value
.Cells(Absensi, 4).Value = Range("E6").Value
.Cells(Absensi, 5).Value = Range("C7").Value
.Cells(Absensi, 6).Value = Range("C8").Value
.Cells(Absensi, 7).Value = Range("G6").Value
End With
Worksheets("Template").Range("C5,E5:E6").Value = ""
End Sub


Berikut ini Koding Module untuk Cari Data :


Sub Cari_Absensi()
Dim nik
Dim Tglmasuk
If Worksheets("Template").Range("C5") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("C6") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
Tglmasuk = Format(Worksheets("Template").Range("C6").Value, "mm/dd/yy")
Worksheets("Absensi").Range("B3").AutoFilter Field:=2, Criteria1:=">=" & Tglmasuk
With Worksheets("Absensi").Range("A:A")
    nik = Worksheets("Template").Range("C5")
    Set C = .Find(nik, LookIn:=xlValues)
    If Not C Is Nothing Then
        Baris = C.row
        Worksheets("Template").Range("E5").Value = Worksheets("Absensi").Cells(Baris, 3).Value
        Worksheets("Template").Range("E6").Value = Worksheets("Absensi").Cells(Baris, 4).Value
        Worksheets("Template").Range("C7").Value = Worksheets("Absensi").Cells(Baris, 5).Value
    Else
        MsgBox "Nik Karyawan belum terdaftar" & vbCrLf & "Cek Kembali Tanggal Masuk dan Nik Karyawan", 64, "Data Absensi"
    End If
End With
With Worksheets("Absensi")
If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("B4").AutoFilter
        End If
End With
End Sub


Berikut ini Koding Module untuk Edit Data :


Sub Edit_Absensi()
Dim nik
Dim Tglmasuk
If Worksheets("Template").Range("C5") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("C6") = "" Then
MsgBox "Tanggal Masuk Masih Kosong"
Exit Sub
End If
Tglmasuk = Format(Worksheets("Template").Range("C6").Value, "mm/dd/yy")
Worksheets("Absensi").Range("B3").AutoFilter Field:=2, Criteria1:=">=" & Tglmasuk
    nik = Worksheets("Template").Range("C5")
    If MsgBox(" Apakah Anda Yakin Edit Data : " & nik, vbYesNo + 48, "Komfirmasi") = vbYes Then
    Set C = Worksheets("Absensi").Range("A:A").Find(nik, LookIn:=xlValues)
    If Not C Is Nothing Then
        Baris = C.row
         With Worksheets("Absensi")
         .Cells(Baris, 2).Value = Worksheets("Template").Range("C6").Value
         .Cells(Baris, 3).Value = Worksheets("Template").Range("E5").Value
         .Cells(Baris, 4).Value = Worksheets("Template").Range("E6").Value
         .Cells(Baris, 5).Value = Worksheets("Template").Range("C7").Value
         .Cells(Baris, 6).Value = Worksheets("Template").Range("C8").Value
         .Cells(Baris, 7).Value = Worksheets("Template").Range("G6").Value
    End With
    End If
    MsgBox "Data Telah DiRubah...", 64, "Data Absensi"
    Else
    MsgBox "Data Batal di Edit", 64, "Data Absensi"
    End If
Worksheets("Template").Range("C5:C7,E5:E6").Value = ""
With Worksheets("Absensi")
If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("B4").AutoFilter
        End If
End With
End Sub


Berikut ini Koding Module untuk Hapus Data :


Sub Hapus_Absensi()
Dim nik
Dim Tglmasuk
If Worksheets("Template").Range("C5") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
If Worksheets("Template").Range("C6") = "" Then
MsgBox "Nik Karyawan Masih Kosong"
Exit Sub
End If
Tglmasuk = Format(Worksheets("Template").Range("C6").Value, "mm/dd/yy")
Worksheets("Absensi").Range("B3").AutoFilter Field:=2, Criteria1:=">=" & Tglmasuk
    nik = Worksheets("Template").Range("C5")
    Set C = Worksheets("Absensi").Range("A:A").Find(nik, LookIn:=xlValues)
    If Not C Is Nothing Then
    Baris = C.row
    cDelete = MsgBox("Apakah Anda Yakin Untuk Menghapus Data Absensi: " & nik, vbYesNo + 48, "Komfirmasi")
    If cDelete = vbYes Then
    Worksheets("Absensi").Cells(Baris, 2).EntireRow.Delete
    MsgBox "Data Telah Di Hapus...", 64, "Data Karyawan"
    Else
    MsgBox "Data Batal di Hapus", 64, "Data Karyawan"
    End If
Clear_Data
Else
MsgBox "Nik Karyawan belum Terdaftar Untuk Di Hapus" & vbCrLf & "Cek Kembali Nik Karyawan", 64, "Data Karyawan"
End If
Worksheets("Template").Range("C5:C7,E5:E6").Value = ""
With Worksheets("Absensi")
If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("B4").AutoFilter
        End If
End With
End Sub


Setelah koding selesai dibuat  atau Sobat bisa CopyPaste kan saja, lalu koneksikan tiap - tiap tombol perintah dengan Sub Koding Module masing - masing.

Demikian Tutorial untuk sesion # 2 Pembuatan Form Absensi Karyawan, Silahkan Sobat Kembangkan lagi dan Lanjutkan lagi untuk mempelajari semua Tutorial Sistem Absensi dan Laporan Penggajian pada Sesion # 3 Membuat Form Input Data Slip Gaji Karyawan.

Salam...,

No comments:

Post a Comment