• FORUMU MOBİL UYGULAMADAN TAKİP EDİN

    Forumu isteyen üyelerimiz Tapatalk (Harici bir hizmet) üzerinden mobil uygulamadan takip edebilirler.
    iOS için : https://itunes.apple.com/app/id307880732?mt=8
    Android için : https://play.google.com/store/apps/details?id=com.quoord.tapatalkpro.activity
    adreslerinden indirebilirsiniz.

    Bir iki haftaya da foruma özel kendi uygulamamız yayında olacak.
ALTIN ÜYELİK Hakkında Bilgi
-----------------------

Mesai Formu Yazdırma Hk.

Katılım
6 Mart 2011
Mesajlar
94
Beğeniler
1
Excel Vers. ve Dili
Microsoft Office 2010
#1
Merhaba

Şantiyemizde çalışmakta olan personellerimize ait birimlerinde yapmış oldukları mesaileri ay sonunda toplu şekilde yazdırmak istiyorum. Örnek dosyamda mesai yapan birimlere ait personeller var Form sayfasında Oluşturmuş olduğum (Beton İşleri, Toprak İşleri, Jeoteknik, Hava Hattı) butonuna bağlı olarak sarı renkte belirttiğim alanlara (Personelin mesaiye kaldığı tarih, adı soyadı, görevi,mesaiye kaldığı yer) alanlarını doldurup yazdırmasını istiyorum. Personellerin karşısına hangi günde mesaiye kalmış ise (1) yazıyorum. Daha öncede farklı bir çalışma ile hazırlanmış kodu bu sisteme uyarlayamadım. Yardımcı olabilir misiniz.

... Örnek Dosya ...

Sub PAZAR_YAZDIR()
Set p = Sheets("PERSONEL"): Set m = Sheets("MESAİ ÇALIŞMA")
sonp = p.Cells(Rows.Count, "B").End(3).Row
If p.Cells(1, Columns.Count).End(xlToLeft).Column = 7 Then Exit Sub
For psut = 8 To p.Cells(1, Columns.Count).End(xlToLeft).Column
If WorksheetFunction.CountIf(p.Range(p.Cells(5, psut), p.Cells(sonp, psut)), 1) > 0 Then
m.[B8] = p.Cells(1, psut)
m.[F23] = p.Cells(1, psut)
m.[F31] = p.Cells(1, psut)
For sat = 5 To sonp Step 2
If p.Cells(sat, psut) = 1 Then
m.[F20] = p.Cells(sat, 2): m.[F21] = p.Cells(sat, 3)
m.[F22] = p.Cells(sat, 4): m.PrintOut
Application.Wait (Now + TimeValue("00:00:02"))
End If
Next
End If
Next
MsgBox "İşlem tamamlandı."
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,059
Beğeniler
89
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#2
Aşağıdaki makroyu deneyiniz. Makro BETON İŞLERİ sayfasına göre düzenlendi. Diğer sayfalar için set s2 satırını sayfa adına göre değiştirerek kendiniz ayarlayabilirsiniz:

PHP:
Sub mesai()
Set s1 = Sheets("BETON İŞLERİ")
Set s2 = Sheets("Form")
son = s2.Cells(Rows.Count, "B").End(3).Row
tarih = s2.[N22]
If Month(tarih) <> Month(s1.[E2]) Then
    MsgBox "Veri tablosundaki ay ile seçilen tarih uyumsuz", vbCritical
    Exit Sub
End If

gun = Day(tarih) + 4
For i = 1 To son
    If s1.Cells(i, gun) = 1 Then
        s2.[G20] = s1.Cells(i, "B")
        s2.[G21] = s1.Cells(i, "C")
        s2.[B15] = s1.Cells(i, "D")
        s2.PrintOut
    End If
Next
End Sub
 
Katılım
6 Mart 2011
Mesajlar
94
Beğeniler
1
Excel Vers. ve Dili
Microsoft Office 2010
#3
Merhaba
tarih = s2.[N22]
If Month(tarih) <> Month(s1.[E2]) Then
kontrolünü yapmasa olmaz mı?
Örnek : Beton İşlerini yazdırmak istediğimde ilk sıradan başlasın personelin kaldığı bütün mesaileri sırayla yazdırsın işlem bittikten sonra diğer personelin kaldığı mesaileri sırayla yazdırsın listede olan bütün personellere sırayla aynı işlemi yapabilir mi?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,059
Beğeniler
89
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#4
Deneyiniz. Ancak tarih kısmının düzgün olması için öncelikle ilgili sayfalarda F2 hücrelerine aşağıdaki formülü yapıştırıp sağa doğru kopyalayın. Böylece E2 hücresine girilen ay, örneğin Şubat ise 28'inden sonraki sütunlar boş kalır:

Kod:
=EĞER(E2="";"";EĞER(AY(E2)=AY(E2+1);E2+1;""))
PHP:
Sub mesai()
Set s1 = Sheets("BETON İŞLERİ")
Set s2 = Sheets("Form")
son = s2.Cells(Rows.Count, "B").End(3).Row
For kisi = 1 To son
    For gun = 5 To 34
        If s1.Cells(2, gun) <> "" Then
            If s1.Cells(kisi, gun) = 1 Then
                s2.[G20] = s1.Cells(kisi, "B")
                s2.[G21] = s1.Cells(kisi, "C")
                s2.[B15] = s1.Cells(kisi, "D")
                s2.[B8] = s1.Cells(2, gun)
                s2.[G22] = s1.Cells(2, gun)
                s2.PrintOut
            End If
        End If
    Next
Next
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,059
Beğeniler
89
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#6
Ben denediğimde farklı sonuçlar veriyor. Dosyayı o haliyle yüklerseniz inceleyelim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,059
Beğeniler
89
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#10
Evet. Eğer dosyada başka sayfa olmayacaksa ya da sayfalar önceden belliyse tek makroyla tüm sayfalar ayrı ayrı değerlendirilebilir.
 
Üst