• DİKKAT

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

Personel için çalışma tablosu

S.Yiğit

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

Personellerimiz için çalışma tablosu oluşturuyorum. Belirli tarihlerde personele ikinci işi vermemek için bir makroya ihtiyacımım var.

G sutununda Ekip yazıyor ise I ve J sutununda bulunan tarih aralığında ekibe 1 iş verilmeli. İkinci bir iş verilmemeli.
Eğer Tedarikçi yazıyor ise birden fazla iş verebilir ama ikinci üçüncü işi verdiğinde uyarıda verirse güzel olur.

Tablom ekte. Kafanıza takılan bişey olursa burdayım, hemen cevaplarım. Yardımcı olanlara şimdiden teşekkür ederim.
 

Ekli dosyalar

Merhaba,
Aşağıdaki kodu deneyin.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
kontrol = False
If Intersect(Target, [o3:x15]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
Set Bul = [o3:x15].Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
If Not Bul Is Nothing Then
Adres = Bul.Address
tarih = Cells(Target.Row, "I")
Do
If Bul.Address = Target.Address Then GoTo Atla
    For x = Format(Cells(Target.Row, "I"), "y") To Format(Cells(Target.Row, "J"), "y") - 1
    tarih2 = Cells(Bul.Row, "I")
        For y = Format(Cells(Bul.Row, "I"), "y") To Format(Cells(Bul.Row, "J"), "y")
        If tarih = tarih2 Then
        If Cells(Target.Row, "G") = "Ekip" Then
        mesaj = mesaj & Chr(10) & Bul.Address(False, False)
        MsgBox "Bu kişiye daha önce servis yazmışsınız. Servis adresi aşağıda belirtilmiştir: " _
        & Chr(10) & Bul.Address(False, False), vbCritical, "UYARI"
        Target = ""
        Exit Sub
        ElseIf Cells(Target.Row, "G") = "Tedarikçi" Then
        MsgBox "Bu tedarikçiye bu tarih aralığında iş verdiniz, bilginiz olsun. Servis adresi aşağıda belirtilmiştir: " & _
        Chr(10) & Bul.Address(False, False), vbInformation, "DURUM"
        Exit Sub
        End If
        End If
        tarih2 = tarih2 + 1
        Next
        tarih = tarih + 1
    Next
Atla:
Set Bul = [o3:x15].FindNext(Bul)
Loop While Not Bul Is Nothing And Bul.Address <> Adres
End If
son:
End Sub
 

Ekli dosyalar

Hocam Merhaba,

Verdiğniz örneği incelerken bu çalışma yeni olduğu için ve bende işe yeni girdiğim için kafamda soru işaretleri oluştu..
O3 ile X15 aralığında bulunan sayıları sildiğimde aşağıda kırmızıya boyadığım yerde hata veriyor. Çalışmanın yapısından kaynaklanacak bir iki sorun daha çıkacak ama bunları kafamdaki soru işaretlerini cevapladığım zaman belli olacak.. Tekrar yardım isteyeceğim.
Geç cevap verdim, kusura bakmayın internetimde sorun vardı. Yardımlarınız için çok teşekkürler..

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [o3:x15]) Is Nothing Then Exit Sub
[COLOR="Red"]If Target = "" Then[/COLOR] Exit Sub
Set Bul = [o3:x15].Find(Target, LookIn:=xlValues, LookAt:=xlWhole)
If Not Bul Is Nothing Then
 
Merhaba,
Kodu güncelledim. Hücreleri toplu halde sildiğinizde kod ne yapacağını şaşırdığından hata veriyor.:) Çözümünü ekledim. Bir de x döngüsüne -1 düzeltmesi yaptım. Yenilenen kısımları kırmızı ile belirttim.
 
Merhaba,
Kodu güncelledim. Hücreleri toplu halde sildiğinizde kod ne yapacağını şaşırdığından hata veriyor.:) Çözümünü ekledim. Bir de x döngüsüne -1 düzeltmesi yaptım. Yenilenen kısımları kırmızı ile belirttim.

Hocam şuanki denemelerimde sorun yok gibi. Ama ileride şöyle bir sıkıntı olacak diye düşünüyorum. Örnek Personelin numarasını girdik sorun yok ama tarihi değiştirdiğimizde veya planlanan servis gün sayısı değiştirdiğinde bu kod tekrar tetiklenmeli ve mümkünse hücre belirterek uyarı vermeli.. hücre belirtmesi çok önemli değil. Birde tedarikçi ekip olan G sutununda boşluk olabilir notta düşülmüş olabilir. G sutununda tedarikçi veya ekip yazmıyorsa kod çalışmazsa daha güzel olur.. :) yardımlarınız için tekrar teşekkürler.. Emeğinize sağlık.


Not: bu çalışma için birde boyama işlemi var ama nasıl olacağını henuz belirleyemedik. Bunu daha sonra başka başlık altında soracağım.
 
Kodu güncelledim. G sütunu i.in belirttiğiniz isteği ve adres belirtme kısmını ekledim. Trih değiştiğinde kodun tetiklenmesi konusundaki isteğinize kod mantığının yeniden kurgulanması gerektiği için şu an bakmadım. Uygun bir zaman onunla da ilgileneceğim. İyi geceler.
 
Mustafa Hocam merhaba,

Kafamdaki soru işaretlerinden yola çıkarak sorumu revize ettim ve dosyayı tekrar ekledim. Dün Ekip ve Tedarikçi olarak ayırdığımız kriterleri değiştirmek zorunda kaldık. Tedarikçileri kim ise onları belirtmemiz gerekecek. Örnek Elmas, Armoni vb..

Kısaca anlatmak gerekirse;

Kendimize ait ekiplerimiz var ve servis hizmeti veriyoruz. Kendi ekiplerimizin yetmediği durumlarda tedarikçilerden destek alıyoruz. Kendi ekiplerimiz Bir yere gidip bir işi bitirdiğinde hemen ertesi gün diğer işe gidecek ve bu şekilde devam edecek. Örnek vermem gerekirse 15 şubat'ta 2 günlük işe gitti diyelim 17 şubat'ta ikinci işe gitmeli. arada bir günlük boşluk olmayacak. Birde tedarikçiye destek olarak kendi personelimizden veriyoruz.

Yapılacak olan çalışma 2 bölümden oluşuyor birincisi,

Eğer G sutununda Ekip yazıyor ise numara verdiğimiz personele aynı tarihte bir iş vermeli ikinci işi vermemeli Eğer tedarikçilerden birisi yazıyor ise ve o işe destek olarak personel vermişsek bilgimiz olması için uyarı vermeli.. Bizim çalışmamız varsa o tarihlerde destek vermemeli.. Eğer G sutunu Tedarikçi ise ve bizim elemandan vermiyorsak istediği kadar iş verebilir. ama bilgimiz olması için uyarması güzel olur.

İkinci yapılacak işlem,

İş planlamasına göre bizim personelimiz ise "PERSONEL" sayfasında tedarikçi ise "TEDARİKÇİ" sayfasında çalıştığı günleri boyamalı. birde boyadığı hücrelere Servis No'larını getirmeli. Burada önemli olan bizim personel tedarikçiye destek vermişse PERSONEL sayfasında boyamalı.. Şöyle düşünelim O sutunu ile X sutunu arasında numara verilmiş personellerin çalışmaları PERSONEL sayfasında boyanacak.


Tedarikçiler için Boyama işlemi yapılırken ilk çalışmayı boyadıktan sonra ikinci çalışmayı boyadığında birinci çalışmanın üstüne biniyorsa ikinci satıra geçip orda boyamalı. Sonrasında üçüncü çalışma ilk çalışmayla çakışmıyorsa ilk satırda boyamalı.. Tablo sağ tarafa gittiği için boyamaya yakın tarihten başlamalı uzak tarihe doğru gitmeli. Bu sayfada bizim personelimiz için boyama yapılmayacak.

Personeller sayfasında boyama yaparken aynı tarihlerde bir iş vereceği için ikinci satırda boyamasına gerek yok.
Ben hem ekip hem tedarikçi için bütün boyamaları manuel yaptım.

Zor bir çalışma olacak :) Yardımlarınız için teşekkür ederim.
Ekte Halit hocanın buna benzer bir çalışması var. Belki fikir verebilir. linkide aşağıda.

Aynı personele aynı tarihlerde iş vermeme ve başka tabloda çalıştığı tarihleri boyama
 
Son düzenleme:
Hocam yanlış tablo eklemişim. kusura bakmayın. doğru tabloyu şimdi ekledim..
 
Son düzenleme:
Geri
Üst