Menu2

Catatan menyusun jadwal Rev. Juni 2015

Catatan Menyusun jadwal Rev. 28 Juni 2015

Menyususn jadwal  di SMP yang ini agak berbeda dengan sekolah sebelumnya. Kode Guru meng unakan alfabet A,B, C, ...AA,AB,AC , tidak seperti biasanya kode guru dengan 01,02,03,04 ... Sedangkan kode mapel menggunakan 1,2,3,...10,11,12.

Karena rumus yang digunakan menggunakan 2 huruf  pertama, 01,02,10 , tetapi di sekolah ini menggunakan A,B, C, AA,AB, ... Maka untuk sementara guru A saya tulis dengan 0A(nol A), dan mapel dengan 01,02,10,11 ...
Oleh karena itu ada beberapa catatan custom untuk csv maker dan FET impor REV Juni 2015.
Seperti biasa, saya menggunakan csv maker dan FET impor yang merupakan Microsoft Excel Macro.
1.    Pada CSV maker, kode guru , jika satu digit huruf , maka ditambah 0(nol) didepan huruf, A ditulis dengan 0A. Juga pada mapel 1 ditulis 01.

Beberapa catatan pada csv versi 2015, yang belum sempat saya beri catatan sebelumnya, sebagai berikut:
a.    CSV maker 2015 bisa sekaligus untuk membuat csv untuk fet dan xml untuk asc time tables
b.    Ada perbedaan penulisan untuk split jam sebagai berikut :
Isi Split (isikan dengan angka yang telah didefinisikan di script saja , diluar itu daftar kegiatan/ activity /lessons tidak akan muncul)
  
Split untuk keperluan FET dan ASC diatur masing masing, isikan kolom split FET untuk pengaturan FET dan kolom spli ASC intuk keperluan ASC   
Perhatikan perbedaan kode splitnya pada ACS dan FET berbeda
    1). Untuk FET jika jam perminggu 2 agar  menjadi 2 maka isikan pada split FET 2
        Untuk FET jika jam perminggu 2 agar  menjadi 2 maka isikan pada split FET 1,
        Untuk FET jika jam perminggu 4 agar  menjadi 2+2 maka isikan pada split FET 2,
        Untuk 3 jam agar menjadi 3 maka isi kan 3,   
        Untuk 3 jam agar menjadi 2+1 maka isi kan 2,   
        Untuk 5 jam agar menjadi 3+2 maka isi kan 3,   
        jika 5 jam akan menjadi 2+2+1 maka isikan 2   
        memang masih agak kacau , coba buka lagi script pembuatan kegiatan, edit  
        sesuai kebutuhan   
   
    2). Untuk ASC Time Tables    
        Untuk 2 jam agar 1 tatap muka 2 jam perminggu isikan splinya dengan 1   
        Untuk 2 jam agar 2 tatap muka @1 jam perminggu isikan splinya dengan 2   
        Untuk 3 jam agar 1 tatap muka @3 jam perminggu isikan splinya dengan 1   
        Untuk 3 jam agar 2 tatap muka @2 jam dan 1 jam perminggu isikan splinya
        dengan 2   
        Untuk 5 jam agar 2 tatap muka @3 jam dan 2 jam perminggu isikan splinya   
        dengan 2   
        Untuk 6 jam agar 2 tatap muka @3 jam perminggu isikan splinya dengan 2   
        Untuk 6 jam agar 3 tatap muka @2 jam perminggu isikan splinya dengan 3   
        sementara baru dibuat 1 sampai 6 jam saja   
   
    3). Keluaran   
    a). Untuk keperluan FET akan menghasilkan beberapa file  *.csv   untuk diimpor ke  
        FET   
    b). Untuk keperluan ASC Time Tables akan menghasilkan satu file  *.xml   untuk d 
        iimpor ke ASC Time TABLES   
   
4). Tekan REFRESH untuk mengapus data sebelumnya, PROSES untuk memproses mengurai data ke sheet sheet MAKE CSV untuk membuat file csv   
    dan MAKE Asc XML untuk membuat file xml ASC Time tables   
   
5). Untuk Import   
a. Asc : buat file baru. Kemudian import ASCTime tables  xml   
b. FET : buat file baru . pertama wajib  import student, kemudian import avtivities   




Sedikit Revisi makro sebagai berikut :
 Pada FET impor , pada program baris ke 900,
'ganti prec + Left(attivita(i2, 0), 2) & prec + Left(attivita(i2, 2), 1) artinya kode guru 2 huruf terkiri dan kode mape 1 huruf terkiri
'dengan prec + Left(attivita(i2, 0), 2) & prec + Left(attivita(i2, 2), 2)artinya kode guru 2 huruf terkiri dan kode mape 2 huruf terkiri sehingga baris 900 menjadi
 ActiveCell.Offset(i1, lora).Value = prec + Left(attivita(i2, 0), 2) & prec + Left(attivita(i2, 2), 2)

Agak sulit untuk merealisasikan jadwal disekolah ini  tanpa memecah jam dengan 2 jam per pertemuan. Maka beberapa mapel  “di paksa” dijadikan 1+1.
Bagaimana tidak, Senin 7 jam, selasa 8 jam, rabu 8 jam, kamis 7 jam , jumat 3 jam, sabtu 2 jam. Kalau saya lihat pembagian tugas , semua mapel berdurasi genap, 2 dan 4, kecuali BK 1 jam.
Minimal ada 3 jam berdurasi 1 jam untuk 1 kelasnya.  Saya coba untuk memecah salah satu mapel disemua kelas.  Saya lakukan pengaturan waktu untuk siswa dan untuk guru tanpa permintaan.

Jadwal gagal tersusun, paling tinggi 90 % saja, meski sudah ditunggu lebih dari 20 menit, waktu maksimal yang saya toleransi.

Saya tambah lagi 1 mapel yang dipecah jamnya menjadi berdurasi 1. Mapel IPS jadi sasaran,  karena bukan mapel UN,dibeberapa kelas dengan komposisi  4+1+1. Mapel  lain yang berdurasi 2 jadi 1+1 antara lain B. Daerah, Pend. Agama, Seni Budaya. Dibuat berbeda kelasnya sehingga mapel yang dipecah menjadi merata pada beberapa guru.

Hey, jadwal berhasil disusun dalam 1 menit. 
   

Convert Asc Time Tables Schedules to Microsoft Excel

Asc Time Tables 2015Has been released Asc Time Tables knowledge output in 2015.
Asc Delivering as follows:What's new in version 2015?
1. Schedule Randomization FasterWhen you start to scramble the schedule software will first check your data, your lesson, request and then generates a low-level machine code that fits your schedule. Furthermore, that code is executed and produce the best schedule. The result will be 2x times faster than Asc Time Tables releases the previous year!Mobile applicationsThis application work offline, so it is great for classrooms no internet signal. The students can see the date of homework or exams. Parents can see presence, send electronic records presence for teachers and more.
2. Schedule Use of SpaceSchedule Use of Space, can now be set separately for each week or a certain time period.When you define the use of space while looking at a particular week, the software will add the use of space just in that week. If you define it in "a few weeks", the use of space will be defined in all week:
3. Study Group by studentsThe new feature "group" allows multiple groups into a single unit. So for example when you have 4 students asked IPS Physics and Biology 2 Students requesting IPA, you can ask the software to schedule the same teacher in the same room at the same time.
4. Schedule temporary Subjects
5. The new print optionsYou can delete multiple rows or small print in the color triangle, etc.
6. Substitution / Teacher Substitute CompulsoryYou can specify that for example, every teacher should have a mandatory substitution 20 per year.
Anything elseSeemed to point number 1 and 5 that feels the change, while the other points which can not be applied in schools in Country are mostly classical class.
I find it important that new:As known, after Asc Time Tables 2008 issue years later there is no option to "export pure html" and replaced with .swf format, so the results can not export html "copy-paste" to excel. This is actually a removal feature Asc capabilities that should not need to be eliminated.
 
In Asc 2015 , Export data or results of randomization have more choices. But the choice of "pure export html" still does not exist. However I found a new export feature that "Export Smart School". These exports will generate a text file, such as text data results randomization schedule format with Comma delimited. Data points such as setting a schedule per teacher, classroom where, what day, hour , appropriate division of tasks teachers.
With this export result files, can be processed into tables in Excel, as where many are needed in administrative management in the school curriculum.
You can create a bit of command macros or VBA in Excel that reading files into tables takes place in a matter of minutes. Here is an example of VBA Macro:


Sub Button1_Click()

Dim data(5000) As String, myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer, a As Integer
Dim kodeguru(100)
Dim kodemapel(150)
Dim Rombel(100)
'dim buat uniq kelas
Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer

'delete contents sheet
   Cells.Select
    Selection.ClearContents

'read from smart school format file
myFile = Application.GetOpenFilename()

a = 0
Open myFile For Input As #1
Do Until EOF(1)
    Line Input #1, textline
    text = textline
a = 1 + a
Cells(a, 1) = text
data(a) = text

'sparate data with comma
lineitems = Split(text, ",")
Cells(a, 1) = text
Cells(a, 2) = lineitems(0)
Cells(a, 3) = lineitems(1)
Cells(a, 4) = lineitems(2)
Cells(a, 5) = lineitems(3)
Cells(a, 6) = lineitems(4)
Cells(a, 7) = lineitems(5)
Cells(a, 8) = lineitems(6)
Cells(a, 9) = lineitems(7)
Cells(a, 10) = lineitems(8)


Loop
Close #1

'make unique groups
Cells(1, 10).Value = Cells(1, 3).Value
uniqueNumbers = 1
toAdd = True
For i = 1 To 1500

For j = 1 To uniqueNumbers
    If Cells(i, 3).Value = Cells(j, 10).Value Then
        toAdd = False
    End If
Next j

If toAdd = True Then
    Cells(uniqueNumbers + 1, 10).Value = Cells(i, 3).Value
    uniqueNumbers = uniqueNumbers + 1
End If
toAdd = True

Next i


'short groups
  Range("J1:J48").Select
    ActiveWorkbook.Worksheets("proses1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("proses1").Sort.SortFields.Add Key:=Range("J1:J48") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("proses1").Sort
        .SetRange Range("J1:J48")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
   
'convert groups name to number
    Range("K1").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("K2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("K3").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("K4").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("K5").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("K6").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("K7").Select
    ActiveCell.FormulaR1C1 = "7"
    Range("K8").Select
    ActiveCell.FormulaR1C1 = "8"
    Range("K9").Select
    ActiveCell.FormulaR1C1 = "9"
    Range("K10").Select
    ActiveCell.FormulaR1C1 = "10"
    Range("K11").Select
    ActiveCell.FormulaR1C1 = "11"
    Range("K12").Select
    ActiveCell.FormulaR1C1 = "12"
    Range("K13").Select
    ActiveCell.FormulaR1C1 = "13"
    Range("K14").Select
    ActiveCell.FormulaR1C1 = "14"
    Range("K15").Select
    ActiveCell.FormulaR1C1 = "15"
    Range("K16").Select
    ActiveCell.FormulaR1C1 = "16"
    Range("K17").Select
    ActiveCell.FormulaR1C1 = "17"
    Range("K18").Select
    ActiveCell.FormulaR1C1 = "18"
    Range("K19").Select
    ActiveCell.FormulaR1C1 = "19"
    Range("K20").Select
    ActiveCell.FormulaR1C1 = "20"
    Range("K21").Select
    ActiveCell.FormulaR1C1 = "21"
    Range("K22").Select
    ActiveCell.FormulaR1C1 = "22"
    Range("K23").Select
    ActiveCell.FormulaR1C1 = "23"
    Range("K24").Select
    ActiveCell.FormulaR1C1 = "24"
    Range("K25").Select
    ActiveCell.FormulaR1C1 = "25"
    Range("K26").Select
    ActiveCell.FormulaR1C1 = "26"
    Range("K27").Select
    ActiveCell.FormulaR1C1 = "27"
    Range("K28").Select
    ActiveCell.FormulaR1C1 = "28"
    Range("K29").Select
    ActiveCell.FormulaR1C1 = "29"
    Range("K30").Select
    ActiveCell.FormulaR1C1 = "30"
    Range("K31").Select
    ActiveCell.FormulaR1C1 = "31"
    Range("K32").Select
    ActiveCell.FormulaR1C1 = "32"
    Range("K33").Select
    ActiveCell.FormulaR1C1 = "33"
    Range("K34").Select
    ActiveCell.FormulaR1C1 = "34"
    Range("K35").Select
    ActiveCell.FormulaR1C1 = "35"
    Range("K36").Select
    ActiveCell.FormulaR1C1 = "36"
    Range("K37").Select
    ActiveCell.FormulaR1C1 = "37"
    Range("K38").Select
    ActiveCell.FormulaR1C1 = "38"
    Range("K39").Select
    ActiveCell.FormulaR1C1 = "39"
    Range("K40").Select
    ActiveCell.FormulaR1C1 = "40"
    Range("K41").Select
    ActiveCell.FormulaR1C1 = "41"
    Range("K42").Select
    ActiveCell.FormulaR1C1 = "42"
    Range("K43").Select
    ActiveCell.FormulaR1C1 = "43"
    Range("K44").Select
    ActiveCell.FormulaR1C1 = "44"
    Range("K45").Select
    ActiveCell.FormulaR1C1 = "45"
    Range("K46").Select
    ActiveCell.FormulaR1C1 = "46"
    Range("K47").Select
    ActiveCell.FormulaR1C1 = "47"
    Range("K48").Select
    ActiveCell.FormulaR1C1 = "48"
    Range("K48").Select
   
    'conversion
    ActiveWindow.SmallScroll Down:=-25
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "'=VLOOKUP(C1;$J$1:$K$48;2)"
    Range("M1").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-10],R1C10:R48C11,2)"
    Range("M1").Select
    Selection.Copy
    Range("M1:M333").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Columns("M:M").Select
    Range(Selection, Selection.End(xlUp)).Select
    Range("M1:M1461").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False


'write schedule to sheet2
For data = 1 To 1500
isitidak = Cells(1, 1)
If isitidak = "" Then Exit For
kodegurudanmapel = Cells(data, 4) & Cells(data, 5)
hari = Val(Cells(data, 7))
sellhari = (hari * 10 + 1) - 10
jamke = Val(Cells(data, 8))
selljamke = sellhari + jamke
kelas = Val(Cells(data, 13))
Sheets("jadwal").Cells(kelas + 2, selljamke) = kodegurudanmapel

Next data
 

End Sub
Run Macro from sheet1 and schedule will write in sheet2