• DİKKAT

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

Çalışanlar için çalışma tablosu (Basitleştirdim)

S.Yiğit

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2008
Mesajlar
1,748
Excel Vers. ve Dili
2019 TR
Merhabalar,

Kısaca anlatmak gerekirse, Kendimize ait ekiplerimiz var ve servis hizmeti veriyoruz.

G sutununda Ekip yazıyorsa; Örnek vermek gerekirse birinci satırdaki iş için 05.02.2011 ile 07.02.2011 tarihleri arası A.Topal ve L.Yay verilmiş. İkinci satırdaki İşin tarihleri 06.02.2011 ile 08.02.2011'dir. Bu tarihlerde A.Topal için iş veriliyorsa uyarı vermeli çünkü A.Topal 05.02.2011 ile 07.02.2011 tarihleri arasında birinci satırdaki iş işin yazıldı. Uyarıyı verirken girdiğimiz veriyi kabul etmeli biz sadece uyarı istiyoruz..

Eğer ekipten başka bişey yazıyorsa aynı tarihlerde birden fazla iş verebilir. Uyarı verirsede güzel olur ama şart değil.

Dikkat edilmesi gereken bişey var oda kodun çalışması hakkında. Örnek aynı tarihlerde personele iş verdik uyarıyı aldık diyelim. Hemen tarihlere veya işin yapılacağı gün sayısında oynama yapabiliriz. Bu durumda da makro çalışmalı. G I J M sutunlarındaki değerler değiştimi makro çalışmalı

Yardım edenlere şimdiden teşekkürler..
 

Ekli dosyalar

Merhaba,
Aşağıdaki kodu deneyin. Tarih değişikliğinde ya da isim girişinde kod çalışacaktır. Ekip yazıyorsa ilgili hücreyi kırmızıya, diğerlerinde sarıya boyayacaktır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
If Intersect(Target, [o3:x15,I3:j15]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
[o3:x15].Interior.ColorIndex = xlNone
If Not Intersect(Target, [I3:j15]) Is Nothing Then
If WorksheetFunction.CountA(Range(Cells(3, "o"), Cells(3, "x"))) > 0 Then
    Set Aralik = Range(Cells(Target.Row, "o"), Cells(Target.Row, "x")).SpecialCells(xlCellTypeConstants, 23)
    Else
    Set Aralik = Cells(Target.Row, Target.Column)
End If
Else:
Set Aralik = Range(Target.Address)
End If

For Each hcr In Aralik
Set Bul = [o3:x15].Find(Cells(hcr.Row, hcr.Column), LookIn:=xlValues, LookAt:=xlWhole)
If Not Bul Is Nothing Then
Adres = Bul.Address
tarih = Cells(Target.Row, "I") - 1
Do
If Bul.Address = Cells(hcr.Row, hcr.Column).Address Then GoTo Atla

For x = 1 To DateDiff("d", tarih, CDate(Cells(Target.Row, "J")), vbMonday)
trh = trh & "-" & tarih + x
Next

    tarih2 = Cells(Bul.Row, "I")
        For y = 1 To DateDiff("d", Cells(Bul.Row, "I"), CDate(Cells(Bul.Row, "J"))) + 1
            If InStr(1, trh, tarih2) > 0 Then
            If Cells(Target.Row, "G") = "Ekip" Then
                mesaj = mesaj & Chr(10) & Bul.Address(False, False)
                MsgBox hcr & "'e servis yazmışsınız. Bu kişiye servis veremezsiniz. Servis adresi aşağıda belirtilmiştir: " _
                & Chr(10) & Bul.Address(False, False), vbCritical, "UYARI"
                Cells(hcr.Row, hcr.Column).Interior.ColorIndex = 3
                Exit Sub
            Else:
                MsgBox hcr & "'e bu tarih aralığında iş verdiniz, bilginiz olsun. Servis adresi aşağıda belirtilmiştir: " & _
                Chr(10) & Bul.Address(False, False), vbInformation, "DURUM"
                Cells(hcr.Row, hcr.Column).Interior.ColorIndex = 6
                Exit Sub
            End If
        End If
        tarih2 = tarih2 + y
        Next
        
Atla:
Set Bul = [o3:x15].FindNext(Bul)
Loop While Not Bul Is Nothing And Bul.Address <> Adres
End If
Next
son:
End Sub
 

Ekli dosyalar

Merhaba hocam,

Aklıma gelen bütün olasılıkları denedim kod süper çalışıyor. Modul 1'deki kod ile çalışmanın alakası var mı anlayamadım :) Çok teşekkür ederim..

Şimdi sıra bu çalışmanın devamı olan ikinci soruda :)

Tedarikçi sayfasında sadece ekip dışında kalanlar için boyama yapılacak..
Ana tablo sayfasında I ve J sutunu tarih aralığına göre iş hangi tedarikçiye verildiyse ona göre tedarikçi sayfasında boyama yapılacak.
Tedarikçilere aynı tarihlerde birden fazla iş verildiği için boyama işleminde üst üste binmemesi için ikinci üçüncü ve dördüncü satırları oluşturduk.
Örnek vermek gerekirse Armoni için 18.02.2011 tarihinde 5 günlük iş verilmiş ikinci işin başlangıcı 20.02.2011'dir. ve ilk çalışmanın üstüne binmektedir. bu durumda ikinci çalışmayı ikinci satırda boyamalı.. Sonrasında üçüncü çalışma ilk çalışmayla çakışmıyorsa ilk satırda boyamalı.. Tabloda tarihler sağ tarafa gittiği için boyamaya yakın tarihten başlamalı uzak tarihe doğru gitmeli.
Ana tabloda O ve X sutunu arasında verdiğimiz personel için bu sayfada boyama yapılmayacak.
Ben tedarikçiler için boyamayı manuel olarak yaptım.
Tekrar çok teşekkür ederim.

Not: eke benzer bir çalışmayı ekledim. Aşağı yukarı birbirine benziyor. Onu başka bir işin kullanıyoruz bunu başka bir iş için kullanacağız. Sayfa yapıları falan farklı..
 

Ekli dosyalar

Geri
Üst