Çözüldü Aynı Sicilli Personelin Çoklu Kayıt Sorunu

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Akif59

Yıllık Forum Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba Sayın @okutkan
örnek dosyada birtanesi sorun birtanesi sonradan ihtiyaç olan iki hususta müsait olduğununuzda tekrar desteğini rica ediyorum.

1_ UserFormla kaydını yaptığım personeli kayıt butonuna birden fazla basıldığından alt alta defarca kaydını yapıyor yada örneğin 5001 sicil nolu personel dikim departmanında kayıtlıysa başka departman sayfasınada yine 5001 siçil nosuyla kayıt yapılabiliyor buradadaki kurguyu siçil nosu üzerinden yapmıştınız bunun konrolü için nasıl yardımcı olbilirsiniz
siçil nosu tek ve özeldir aynı silil nosu ile ikinci bir kayıt aynı departmana yada başka bir departmana yapılamaması gerekir.

2_ ikinci husus ise hafta sonları (G ) sütunu X lenerek 6 saat mesai yazılan ve Hafta içide ( I ) Sütunu X lenerk 2 saat mesayi yazılan persenolin Karşısına Konulan (X ) Lerin gün sonunda toplu halde bir sonraki gün tekrar mesai yazılabilmesi için 18:00 Çıkışına toplu halde alabilmek için nasıl bir yol izlemeliyim.
 

Ekli dosyalar

Kaydet butonu için aşağıdaki kodu kullanın. '#' arasındaki kodlar yeni eklediğim.
Kod:
You must log in to view content
(67 satır)
 
2_ ikinci husus ise hafta sonları (G ) sütunu X lenerek 6 saat mesai yazılan ve Hafta içide ( I ) Sütunu X lenerk 2 saat mesayi yazılan persenolin Karşısına Konulan (X ) Lerin gün sonunda toplu halde bir sonraki gün tekrar mesai yazılabilmesi için 18:00 Çıkışına toplu halde alabilmek için nasıl bir yol izlemeliyim.
(Dün pazar/Cumartesi ise) ve (G* hücresi = "X" ise) I* hücresine H yaz.
(Dün haftaiçi ise) ve (I* hücresi = "X" ise) I* hücresine H yaz.

yukarıdaki koşul (Koşul yanlışsa düzeltin) ile çalışacak bir buton işinizi görür mü?
Ayrıca, bu X sütunlarının değişmesinin "O:U" arasındaki sütunlarda ne gibi değişiklikler yapar onu hesap edin. Bu hesabı haftanın her günü için yapın. Eğer olumsuzluk yaratacaksa boşuna kod yazılmış olmasın.
 
(Dün pazar/Cumartesi ise) ve (G* hücresi = "X" ise) I* hücresine H yaz.
(Dün haftaiçi ise) ve (I* hücresi = "X" ise) I* hücresine H yaz.

yukarıdaki koşul (Koşul yanlışsa düzeltin) ile çalışacak bir buton işinizi görür mü?
Ayrıca, bu X sütunlarının değişmesinin "O:U" arasındaki sütunlarda ne gibi değişiklikler yapar onu hesap edin. Bu hesabı haftanın her günü için yapın. Eğer olumsuzluk yaratacaksa boşuna kod yazılmış olmasın.
Merhaba Sayın @okutkan
ilk husus okeydir elinize sağlık


Tabiki buton işimi görür (Ama tercihim dinamik yapı olduğu için Change kodu beni daha mutlu eder.)

ikinci hususta
hafata içi örneğin pazertesi sadece 08:00 giriş 18:00 çıkış yapan persone I Sütunu X işaretlenerek 20:00 kadar 2 saat mesai yazılabiliyor. gün salı olduğunda ( I ) Sütunundaki X leri benim toplu halde H 18:00 çıkışına attırmam lazımkı salı mesaileri yazabileyim

Hafta sonu mesailerini cumadan yazılıyor.
Cuma günü G sütunu x işaretlenerek yazılıyor ve cumaetesi işe gelecek 16:00 da çıkış yapacak personel tesbit edilip servisi ayarlanmış oluyor pazartesi olduğunda G utundaki X yine H 18:00 Attırman lazımki Pazertesi mesailerini yazabilyim

çokmu karmaşık oldu bilmiyorum.

16:00 giriş 00:00 çıkış ve 00:00giriş 08:00 çıkış sütunları vardiyalı olan personel olduğu için bu sütunlarla işimiz yok
 
Denemeden de görebilirsiniz. Deneme yanılma ile gereksiz uğraş olur.

Tek tek satırlarda işlem yapıldığını düşünün.
Bir gün öncesi pazar; G hücresinde X yazıyorsa, H hücresine X yaz
 
Denemeden de görebilirsiniz. Deneme yanılma ile gereksiz uğraş olur.

Tek tek satırlarda işlem yapıldığını düşünün.
Bir gün öncesi pazar; G hücresinde X yazıyorsa, H hücresine X yaz

Merhaba Sayın @okutkan
Pazertesi dosya Açıldığında Bir gün öncesi Cumartesi yada Pazar; D = X ise G hücresinde X yazıyorsa,sil H hücresine X yaz
salı dosya Açıldığında Bir gün öncesi Pazertesi D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Çarşamba dosya Açıldığında Bir gün öncesi salı D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Perşembe dosya Açıldığında Bir gün öncesi çarşamba D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Cuma dosya Açıldığında Bir gün öncesi perşembe D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
 
Modül içerisine aşağıdaki kodu yazın. Sayfa ayrımı yapmaz ve aktif sayfada çalışır. Her sayfaya buton ekleyip içerisine "call calistir" yazarsanız bu modüldeki kodu çalıştırır.

Kod:
You must log in to view content
(20 satır)
 
Moderatörün son düzenlenenleri:
Merhaba Sayın @okutkan
Yogunluktan anca kontrol edebildim geç dönüşüm için kusura bakmayın lütfen
hafta içi 2 saatlik mesailer için I sütununa Atılan X Leri buton yardımı ile tekrar H sütununa geri alabiliyorum burası okey
Fakat Hafta sonu 6 saatlik mesaileri için G sütununa atılan X leri H sütununa geri Alamıyorum
 

Ekli dosyalar

Merhaba Sayın @okutkan
Evet o bölümü düzeltmiştim
o bölümü düzeltince de G Sütünundaki x silinip H Sütununa yazılıyor. bu seferde ( I) Sütundakiler silinmiyor.


Sub calistir()
Dim sf As Worksheet: Set sf = ActiveSheet
son = sf.Cells(Rows.Count, "D").End(3).Row
dnm = Weekday(Date - 2)
dnm2 = Date
gun = Weekday(Date - 1)

If gun = 1 Or gun = 7 Then
For i = 6 To son
If sf.Cells(i, "D") = "X" And sf.Cells(i, "I") = "X" Then
sf.Cells(i, "H") = "X"
End If
Next i
Else
For i = 6 To son
If sf.Cells(i, "D") = "X" And sf.Cells(i, "G") = "X" Then
sf.Cells(i, "H") = "X"
End If
Next i
End If

End Sub
 
Oluşturduğunuz koşullarda bir eksiklik olabilir. Koşullarınıza göre kod yazıldı.
Merhaba Sayın @okutkan

Pazertesi dosya Açıldığında Bir gün öncesi Cumartesi yada Pazar; D = X ise G hücresinde X yazıyorsa,sil H hücresine X yaz

salı dosya Açıldığında Bir gün öncesi Pazertesi D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Çarşamba dosya Açıldığında Bir gün öncesi salı D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Perşembe dosya Açıldığında Bir gün öncesi çarşamba D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Cuma dosya Açıldığında Bir gün öncesi perşembe D = X ise I hücresinde X yazıyorsa,sil H hücresine X yaz
Merhaba sayın @okutkan
9 nolu mesajdaki koşullar bu şekildeydi hafta başlangcı olan olan pazertesi günü hafta sonu yazılan mesailer yani G sütunu x silinip H sütununa Yazılması gerekiyordu.

yazdığınız kodda hafta içinde sıkıntı yok yapacak bir şey yok pazertesi günleri G sütununu da elle sileceğiz
 
9 numaralı mesajınızdaki gibi eksiklik olan yeri tanımlarsanız düzeltme yapalım.


1- Pazertesi dosya Açıldığında Bir gün öncesi Cumartesi yada Pazar; D = X ise G = X ise G deki X sil H hücresine X yaz

2- Salı, Çarşamba, Perşembe, Cuma
dosya Açıldığında Bir gün öncesi D = X ise I = X ise I daki X sil H hücresine X yaz

yani benim dosyanın kullanılacağı günki mesaileri yazabilmem için bir gün öncekileri silebilmem lazım. yada dosyanın kullanılacağı gün mesai yazmasam bile tüm çıkışları toplu halde 18:00 çıkışına geri alabilmeliyim sağlılklı bir servis organizasyonu yapabileyim
 
"Dün hafta sonu mu" koşulundaki hücredeki X karakteri kontrolü yapma olayını hatalı yazmışım. 9 numaralı mesajınızdaki koşulların hepsini kontrol ettim ve aşağıdaki kodu güncelledim. Tekrar kontrol edin.

Kod:
You must log in to view content
(20 satır)
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Konuyu başlatan
Yıllık Forum Üyesi
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
41
Üst