• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Soru ile İşlem Yapma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

mcexrem

Gold Üye
Katılım
22 Nis 2022
Mesajlar
725
Çözümler
2
Aldığı beğeni
132
Excel V
Office 2019 TR
Gold Bitiş
15 Nisan 2026
Konu Sahibi
Merhabalar üstadlarım ve hocalarım,

-Dosyamın Bordro İşlemleri makrosunu çalıştırdığımda “Özlük dosyasındaki Yeni ibareleri Silinsin mi?” sorusu ile ÖZLÜK DOSYASI E sütunundaki verilerin silinip silinmeyeceğine karar vermekteyim. Aynı makroya MAAŞ ÖDEME SAYFASI E, F, G sütunlarındaki verileri silmek/silmemek için “Özlük dosyasındaki Yeni ibareleri Silinsin mi?” sorusundan sonra “Avanslar Silinsin mi?” sorusunun eklenerek Bordro İşlemleri makrosunun düzenlenmesini arz/rica ediyorum.

Mevcut kodda Bordro İşlemleri makrosunu çalıştırdıktan sonra Avansları manuel olarak yazıp HALKBANK sayfasındaki buton vasıtasıyla avansları düşmekteyim. Makroyu 2. kez çalıştırmam gerektiğinde avansları tekrar yazmam gerekiyor. Bu sorunu aşabilmem adına yardımlarınıza ihtiyacım olduğunu arz eder saygılar sunarım.

HALKBANK ve EFT LİSTESİ sayfalarına tutarları aktarırken hedef sütunun MAAŞ ÖDEME LİSTESİ D sütununu baz almasını rica ediyorum.
 
BORDRO_ISLEMLERI makrosunun sonunda temizleBES
makrosunu çalıştırarak bir temizlik yapıyorsunuz zaten.
temizleBES makrosunda bir ekleme yaptım. Pasife aldım.
Bakın olması istenen işlem oysa aktife alın.

Sorunuzun ikinci kısmına gelince.
Önce soruyu ben sorayım.
Halkbank sayfasındaki butonu çalıştırdığınızda
doğru sonuç aldığınızdan emin misiniz?
Kodların yazılımında sıkıntı yok. Bu kodlar Ozluk sayfasında
M sütununu referans alarak çalışıyor.
Ama ozluk sayfası M sütunundaki formül sanırım yanlış.
EĞER(PARÇAAL(L4;3;5)="00012";"HALK";"") değil
EĞER(PARÇAAL(L4;5;5)="00012";"HALK";"") olacak sanırım.
Böyle düşünmemin sebebi sizin HALKBANK_SAYFASINA makrosunda
If Mid(XD.Offset(0, -1), 5, 5) = "00012" Then şartını kullanıyor olmanız.
Önce bu çelişkiyi düzeltelim. Sonra yol alırız.
 
Konu Sahibi
Emeğinize sağlık hocam. Bilgisayar ortamına geçince kontrol edeceğim.
 
Konu Sahibi
Evet hocam EĞER(PARÇAAL(L4;5;5)="00012";"HALK";"") şeklinde olacak. Çünki öncesinde başında TR ibaresi yoktu sonradan eklemiştim.
 
Avansları manuel olarak yazıyorsanız
Halkbank sayfasındaki butonu çalıştırdıktan sonra
tekrar avans yazmanız icap ediyorsa doğal olarak
manuel yazacaksınız. Halkbank sayfasındaki buton
Ozluk sayfasında M sütunundaki verilerden hareketle
önce bir sütun sola bakıp L sütununda ibanno lar
içinde 5.karakterden itibaren "00012" arar bulduğu
satırdaki verilerin bir kısmını alır.
Halkbank sayfasında belirttiğiniz hücrelere işler.
Burda avans düşmekten kasıt nedir anlamadım.
Sanıyorum avansları manuel olarak nasıl ve nereye yazdığınızı
çözmemiz gerekiyor. Sonra da bunu rutin bir şablona dönüştürmemiz.
 
Konu Sahibi
Avans düşmekten kastım, Bordroda yazan tutardan avans tutarlarını düşerek maaşlarını yatırıyorum. Avansları Maaş ödeme sayfası E F G sütunlarına yazarak toplamını D sütunundan düşüp ödeme yapıyorum.
 
Sayın mcexrem bu avansları hangi sayfada
hangi sütunlarda tutuyorsunuz. O sayfa ve sütunlardan
ara-bul-topla-çıkar-çarp-böl her ne ise o işlemleri yapıp maasodemelıstesi sayfasına
e-f-g sütunlarına almak yeterli olacaktır.
 
Konu Sahibi
Hocam avanslarda kayıt tutmuyorum, personelleri bordrodan aktardıktan sonra son aşama olarak manuel olarak avansları yazıyorum. Çünki personellerin bilgileri bordro ile geldiği için kayıt tutmuyorum
 
Sayın mcexrem o zaman şöyle olacak.
Yedekleme diye bir sayfa oluşturacaksınız.
maas_odeme_lıstesı sayfasında işlem yaptığınızda
mesela atıyorum avanslarla ilgili sütunlar doluysa
bu şarta bağlı olarak avansları yedeklemek ister misiniz
diye soracak evet derseniz yedekleme sayfasına bir kopya alıp
diğer işlemlere devam edecek. Siz de ihtiyacınız olduğunda
yedekleme sayfasından o avans bilgilerini alacaksınız.
 
Konu Sahibi
saygıdeğer hocam excelcan,

avanslarla ilgili satırlar dolu olması mümkün değil çünki en fazla 3 avans hakkı var,
daha öncesinde böyle bir kod kullanmıştım. bordro işlemleri makrosunu çalıştırdımda listenin yanına atıyordu verileri buton vasıtasıyla da tekrar yapıştırabiliyordum ama kullanışlı olmadığı için bu yöntemi kullanmak istiyorum. Talebim; Bordro İşlemleri makrosunu çalıştırdığımda nasıl "yeni veriler silinsin mi" sorarak ÖZLÜK DOSYASI sayfası E sütunundaki verileri silmek/silmemek işlemini yapıyorsa bunun da aynı şekilde çalışmasını talep ediyorum hatta şöyle yapalım, yeni bordro geldiğinde veriler yenileniyor. Sorulan soruyu “Özlük dosyasındaki Yeni ibareleri Silinsin mi?” sorusunu “Özlük Dosyası Yeni ibareleri ve Personel Avansları Silinsin mi?” şeklinde yaparak aynı işlemi uygulayabilir miyiz?
 
Konu Sahibi
SÜRE DOLDUĞU İÇİN DÜZELTMEDİR:

saygıdeğer hocam excelcan,

avanslarla ilgili satırlar dolu olması mümkün değil çünki en fazla 3 avans hakkı var ve avanslar silinmeden tüm verileri başka sayfaya yapıştırıyorum. Yani bu dosyadaki avanslar tamamen geçicidir.

Daha öncesinde söylediğiniz gibi bir kod kullanmıştım. bordro işlemleri makrosunu çalıştırdımda listenin yanına atıyordu verileri buton vasıtasıyla da tekrar yapıştırabiliyordum ama kullanışlı olmadığı için yeni yöntem kullanmak istiyorum. Talebim; Bordro İşlemleri makrosunu çalıştırdığımda nasıl "yeni veriler silinsin mi" sorarak ÖZLÜK DOSYASI sayfası E sütunundaki verileri silmek/silmemek işlemini yapıyorsa bunun da aynı şekilde çalışmasını talep ediyorum hatta şöyle yapalım, yeni bordro geldiğinde veriler yenileniyor. Sorulan soruyu “Özlük dosyasındaki Yeni ibareleri Silinsin mi?” sorusunu “Özlük Dosyası Yeni ibareleri ve Personel Avansları Silinsin mi?” şeklinde yaparak aynı işlemi uygulayabilir miyiz?

Sizleri seviyorum saygılar sunuyorum.
 
Konu Sahibi
2. mesajınızı ve dosyayı inceledim hocam,

temizlebes makrosundaki eklentiyi aktifleştirdim ama avanslar silinsin mi sorusuna Hayır seçeneğini seçtiğim halde avansları siliyor. (evet seçeneğini de denedim o da siliyor)

ÖZLÜK DOSYASI sayfası M sütunundaki formül devre dışı kaldı gibi bir şey oldu yani makroda If Mid(XD.Offset(0, -1), 5, 5) = "00012" Then kullanıldığı için onu ilk zamanlarda bankaları ayırmak için kullanıyordum ama farklı sayfalara ayırınca kod işimi görüyor formülü de =EĞER(PARÇAAL(L4;5;5)="00012";"HALK";"") şeklinde güncelledim.
 
BORDRO_ISLEMLERI makrosunda başlarda
mol.Range("A4:K" & Rows.Count).Clear satırı var.
Bu makroyu çalıştırdığınızda daha başlangıçta siliyor.
'mol.Range("A4:K" & Rows.Count).Clear
şeklinde pasife alırsanız sorun kalmaz.
temizleBES maksosunda ozluk sayfasında şarta bağlı olarak E sütununu siliyor.
 
Konu Sahibi
hocam çok ilginçtir iki kodu da pasit ettim ama resimdeki gibi avansı olan personelleri alt satıra kopyaladı.
Başka bir kod daha var galiba ki EFG sütunlarındaki verileri LMN sütunlarına atıyor.
1663530979895.png
 
Konu Sahibi
BORDRO İŞLEMLERİ makrosundaki mol.Range("A4:K" & Rows.Count).Clear kodunu pasif yapınca tüm personeli çift yapıyor hocam.
 
Sayın mcekrem
BORDRO İŞLEMLERİ makrosunda zaten yaptığınız bu.
psat = mol.Cells(Rows.Count, 1).End(3).Row + 1 satırında
ilk boş satırı bulup devamında psat satırına işlem yapmışsınız.
Yani kodlar yapılması isteneni yapıyor. Bunu istemişsiniz.
İlginç bir durum yok yani. Bu durumda
mol.Range("A4:K" & Rows.Count).Clear satırını aktifleştirin.
Burda bir akıl yürütme hatası var. Kodlarda sorun yok.
Onlar isteneni yapıyor. kodları yerleştirme hatası var.
yeni kayıt almak için maas sayfasında
A:K sütunlarını mecbur sileceksiniz.

BORDRO İŞLEMLERİ makrosundaki satır ile
If WorksheetFunction.CountIf(ozl.[e4:e65536], "Yeni") > 0 Then temizleBES
mol.Range("A4:K" & Rows.Count).Clear

Yani siz temizleBes makrosunda hayır deseniz de silecek.
2.satırda silme kodunu iptal ettiğinizde
psat ile yeni kayıtları aşağıya alıyorsunuz.
Artı silme kodları içinde L:N sütunları yok.
Orda eski veriler kalıyor.

BORDRO İŞLEMLERİ makrosunun sonuna bir dizi
kodu yazdım. Bu kodlar siz butona tıkladığınızda
o an yazılı olan neyse onu hafızaya alır.
Kodların sonunda size sorar. Avanslar eklensin mi diye.
Evet derseniz L:N sütunlarında kayıtlı avans bilgilerini
(mol.[l4:n1000] = mol.[e4:g1000].Value ile girişte bunu yapıyorsunuz zaten)
E:G sütunlarına işler. Hayır derseniz çıkar.
Silme kodunu A:K dan A:N olarak düzelttim. Ve aktif hale getirdim.
Sanırım akış böyle olursa sorun kalmayacak.
Kolay gelsin
 
Konu Sahibi
Sn. hocam harikasınız, ellerinize sağlık ilk defa gördüm hafızaya alma işlemini.

Tek ve son problemimiz Halkbank ve EFT Listesi sayfasına aktarılan tutarların avansların düşülmeden aktarılmasıdır.
Yani MAAS_ODEME_LISTESI sayfası D sütunundaki verilerin aktarılması gerekiyor. Yazdığınız yeni koddan sonra Halkbank sayfasındaki butona gerek kalmadan avansların düşülmüş tutarlarını Bordro İşlemleri makrosuyla aktarılmasını rica/talep ediyorum. Saygılar
 
Zaten D sütununu aktarıyor.
Ordaki sıkıntı D sütununda formül olması.
Avans yazdıkca formül çıkarma işlemi yapıp düşüyor.
Bu durumda iki olasılık var.
1) D sütunundaki formülü iptal edeceğiz.
2) O formül yerli yerinde kalacak toplam avansı
D sütunundaki veriye ekleyerek ilgili sayfalara alacağız.
Bu da şu demek: Her iki makroyu da yeniden yazacağız.
Benim anladığım bu.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst