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 # 4 Membuat Template Laporan Absensi dan Laporan Penggajian


Template Laporan dibuat untuk menampilkan Data Laporan Absensi dan Laporan Penggajian.
Untuk Lebih jelas silahkan lihat video tutorial Youtube nya diatas.

Berikut ini Tampilan Rancangan untuk Template Laporan Absensi dan Laporan Penggajian.


Fungsi pada Range ("C12")  = SUM(F17:F1000) 'untuk menghitung seluruh Total Gaji yang dibayar
Buatlah Dynamic Name Manager "keterangan" tanpa tanda kutip
=Absensi!$F$4:$F$998

Fungsi pada Range ("K12") 'untuk menghitung jumlah karyawan yang Tidak Kerja dari periode tanggal pada Range ("I12") sampai Range ("J12")

=COUNTIFS(Tgl_Absensi,">="&I12,Tgl_Absensi,"<="&J12,keterangan,K11)

Fungsi pada Range ("L12") 'untuk menghitung jumlah karyawan yang Terlambat dari periode tanggal pada Range ("I12") sampai Range ("J12")

=COUNTIFS(Tgl_Absensi,">="&I12,Tgl_Absensi,"<="&J12,keterangan,L11)

Fungsi pada Range ("M12") 'untuk menghitung jumlah karyawan yang Pulang Awal dari periode tanggal pada Range ("I12") sampai Range ("J12")

=COUNTIFS(Tgl_Absensi,">="&I12,Tgl_Absensi,"<="&J12,keterangan,M11)

Fungsi pada Range ("N12") 'untuk menghitung jumlah karyawan yang Tidak Kerja dari periode tanggal pada Range ("I12") sampai Range ("J12")

=COUNTIFS(Tgl_Absensi,">="&I12,Tgl_Absensi,"<="&J12,keterangan,N11)

Buatlah Diagaram Tampilan Data Lapor an Absensi



Chart data range : =Template!$K$11:$N$12

Berikut ini Module Koding untuk menampilkan data laporan pada Template :

Untuk Menampilkan Laporan Penggajian sesuai Periode ( Tanggal Penerimaan Gaji ) pada Range ("B12")


Sub Lap_Gaji() 'Koneksikan pada Tombol Perintah Laporan Gaji
Dim periode
Dim Rng As Range
On Error GoTo errHandler:
Set Rng = Worksheets("DataPenggajian").Range("B4")
Application.ScreenUpdating = False
periode = Format(Worksheets("Template").Range("B12").Value, "mm/dd/yy")
If Worksheets("Template").Range("B12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Periode "
Exit Sub
Worksheets("Template").Range("B12").Select
End If
Clear_Template
Rng.AutoFilter Field:=2, Criteria1:=">=" & periode
Worksheets("DataPenggajian").Range("Nik_Gaji").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("B17")
Worksheets("DataPenggajian").Range("DT_Gaji").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("D17")
With Worksheets("DataPenggajian")
       If Worksheets("DataPenggajian").AutoFilterMode Then
                Worksheets("DataPenggajian").Range("B4").AutoFilter
        End If
    End With
Exit Sub
errHandler:
MsgBox "Data Tidak Ada"
End Sub



Sub Clear_Template() 'Koneksikan pada Tombol Perintah Clear Data
With Worksheets("Template").Range("B17:F1000").Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.499984740745262
End With
With Worksheets("Template").Range("B17:F1000")
.Borders.LineStyle = xlNone
.ClearContents
End With
End Sub

Untuk Menampilkan Laporan Absensi Tidak Kerja sesuai Periode ( Tanggal Penerimaan Gaji ) pada Range ("I12") dan Range ("J12")

Sub Tdk_Kerja() 'Koneksikan pada Tombol Perintah Cek Tdk Kerja
Dim daritgl
Dim sdtgl
Dim Keterangan
Dim Rng As Range
On Error GoTo errHandler:
Set Keterangan = Worksheets("Template").Range("K11")
Set Rng = Worksheets("Absensi").Range("F4")
Application.ScreenUpdating = False
daritgl = Format(Worksheets("Template").Range("I12").Value, "mm/dd/yy")
sdtgl = Format(Worksheets("Template").Range("J12").Value, "mm/dd/yy")
If Worksheets("Template").Range("I12").Value > Worksheets("Template").Range("J12").Value Then
MsgBox " Nilai Sampai Tanggal Tidak Boleh Lebih Kecil Dari Tanggal"
Exit Sub
Else
If Worksheets("Template").Range("I12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Mulai Transaksi "
Exit Sub
Worksheets("Template").Range("I12").Select
End If
If Worksheets("Template").Range("J12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Akhir Transaksi "
Exit Sub
Worksheets("Template").Range("J12").Select
End If
If Keterangan = "" Then Keterangan = "*"
Clear_Template2
Rng.AutoFilter Field:=2, Criteria1:=">=" & daritgl, _
Operator:=xlAnd, Criteria2:="<=" & sdtgl
Rng.AutoFilter Field:=6, Criteria1:=Keterangan & "*"
Worksheets("Absensi").Range("DT_Absensi").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("I17")
With Worksheets("Absensi")
       If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("F5").AutoFilter
        End If
    End With
End If
On Error GoTo 0
Exit Sub
errHandler:
MsgBox "Data Tidak Ada"
End Sub

Untuk Menampilkan Laporan Absensi Terlambat sesuai Periode ( Tanggal Penerimaan Gaji ) pada Range ("I12") dan Range ("J12")

Sub Terlambat() 'Koneksikan pada Tombol Perintah Cek Terlambat
Dim daritgl
Dim sdtgl
Dim Keterangan
Dim Rng As Range
On Error GoTo errHandler:
Set Keterangan = Worksheets("Template").Range("L11")
Set Rng = Worksheets("Absensi").Range("F4")
Application.ScreenUpdating = False
daritgl = Format(Worksheets("Template").Range("I12").Value, "mm/dd/yy")
sdtgl = Format(Worksheets("Template").Range("J12").Value, "mm/dd/yy")
If Worksheets("Template").Range("I12").Value > Worksheets("Template").Range("J12").Value Then
MsgBox " Nilai Sampai Tanggal Tidak Boleh Lebih Kecil Dari Tanggal"
Exit Sub
Else
If Worksheets("Template").Range("I12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Mulai Transaksi "
Exit Sub
Worksheets("Template").Range("I12").Select
End If
If Worksheets("Template").Range("J12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Akhir Transaksi "
Exit Sub
Worksheets("Template").Range("J12").Select
End If
If Keterangan = "" Then Keterangan = "*"
Clear_Template2
Rng.AutoFilter Field:=2, Criteria1:=">=" & daritgl, _
Operator:=xlAnd, Criteria2:="<=" & sdtgl
Rng.AutoFilter Field:=6, Criteria1:=Keterangan & "*"
Worksheets("Absensi").Range("DT_Absensi").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("I17")
With Worksheets("Absensi")
       If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("F4").AutoFilter
        End If
    End With
End If
On Error GoTo 0
Exit Sub
errHandler:
MsgBox "Data Tidak Ada"
End Sub


Untuk Menampilkan Laporan Absensi Pulang Awal sesuai Periode ( Tanggal Penerimaan Gaji ) pada Range ("I12") dan Range ("J12")
Sub Plg_awal() 'Koneksikan pada Tombol Perintah Cek Plg Cepat
Dim daritgl
Dim sdtgl
Dim Keterangan
Dim Rng As Range
On Error GoTo errHandler:
Set Keterangan = Worksheets("Template").Range("M11")
Set Rng = Worksheets("Absensi").Range("F4")
Application.ScreenUpdating = False
daritgl = Format(Worksheets("Template").Range("I12").Value, "mm/dd/yy")
sdtgl = Format(Worksheets("Template").Range("J12").Value, "mm/dd/yy")
If Worksheets("Template").Range("I12").Value > Worksheets("Template").Range("J12").Value Then
MsgBox " Nilai Sampai Tanggal Tidak Boleh Lebih Kecil Dari Tanggal"
Exit Sub
Else
If Worksheets("Template").Range("I12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Mulai Transaksi "
Exit Sub
Worksheets("Template").Range("I12").Select
End If
If Worksheets("Template").Range("J12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Akhir Transaksi "
Exit Sub
Worksheets("Template").Range("J12").Select
End If
If Keterangan = "" Then Keterangan = "*"
Clear_Template2
Rng.AutoFilter Field:=2, Criteria1:=">=" & daritgl, _
Operator:=xlAnd, Criteria2:="<=" & sdtgl
Rng.AutoFilter Field:=6, Criteria1:=Keterangan & "*"
Worksheets("Absensi").Range("DT_Absensi").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("I17")
With Worksheets("Absensi")
       If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("F5").AutoFilter
        End If
    End With
End If
On Error GoTo 0
Exit Sub
errHandler:
MsgBox "Data Tidak Ada
End Sub

Untuk Menampilkan Laporan Absensi secara keseluruhan sesuai Periode ( Tanggal Penerimaan Gaji ) pada Range ("I12") dan Range ("J12")

Sub Lap_Absensi() 'Koneksikan pada Tombol Perintah Laporan Absensi
Dim daritgl
Dim sdtgl
Dim Keterangan
Dim Rng As Range
On Error GoTo errHandler:
Set Rng = Worksheets("Absensi").Range("B2")
Application.ScreenUpdating = False
daritgl = Format(Worksheets("Template").Range("I12").Value, "mm/dd/yy")
sdtgl = Format(Worksheets("Template").Range("J12").Value, "mm/dd/yy")
If Worksheets("Template").Range("I12").Value > Worksheets("Template").Range("J12").Value Then
MsgBox " Nilai Sampai Tanggal Tidak Boleh Lebih Kecil Dari Tanggal"
Exit Sub
Else
If Worksheets("Template").Range("I12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Mulai Transaksi "
Exit Sub
Worksheets("Template").Range("I12").Select
End If
If Worksheets("Template").Range("J12").Value = "" Then
MsgBox "Masukkan Terlebih Dahulu Tanggal Akhir Transaksi "
Exit Sub
Worksheets("Template").Range("J12").Select
End If
Clear_Template2
Rng.AutoFilter Field:=2, Criteria1:=">=" & daritgl, _
Operator:=xlAnd, Criteria2:="<=" & sdtgl
Worksheets("Absensi").Range("DT_Absensi").SpecialCells(xlCellTypeVisible).Copy _
Destination:=Worksheets("Template").Range("I17")
With Worksheets("Absensi")
       If Worksheets("Absensi").AutoFilterMode Then
                Worksheets("Absensi").Range("B2").AutoFilter
        End If
    End With
End If
On Error GoTo 0
Exit Sub
errHandler:
MsgBox "Data Tidak Ada"
End Sub

Sub Clear_Template2()
With Worksheets("Template").Range("I17:M1000").Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = -0.499984740745262
End With
With Worksheets("Template").Range("I17:M1000")
.Borders.LineStyle = xlNone
.ClearContents
End With
End Sub

Buatlah Tombol Koneksi Perintah untuk Menampilkan Form Template, Form Input Data Karywan dan Form Data Slip Gaji 


Berikut ini Module Koding Koneksi nya :

Sub Input_gaji() 'Koneksikan pada Tombol Perintah Input Data Penggajian
    Columns("W:AE").EntireColumn.Hidden = False
    Columns("B:V").EntireColumn.Hidden = True
    Columns("AF:AQ").EntireColumn.Hidden = True
    Range("A2").Select
End Sub

Sub Input_kryw() 'Koneksikan pada Tombol Perintah Input Data Karyawan
    Columns("AL:AQ").EntireColumn.Hidden = False
    Columns("B:AK").EntireColumn.Hidden = True
    Range("A2").Select
End Sub

Sub Template() 'Koneksikan pada Tombol Perintah Template Lap Gaji    Columns("B:U").EntireColumn.Hidden = False
    Columns("V:BM").EntireColumn.Hidden = True
    Range("A2").Select
End Sub

Demikian Rancangan Tutorial Sistem Absensi dan Laporan Penggajian, Silahkan Sobat kembang lebih lagi.

Salam..., 





 

No comments:

Post a Comment