Soru Makro ile veri aktarma

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Arkadaşlar İyi Akşamlar

Ekli dosyada

G2 hücresindeki Ay Sayısına göre AI4 deki tutarı AT - BE sütunlarındaki ilgili aylara Makro ile yazılmasını istiyorum.

Yardımlarınızı rica ederim.
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kod:
Public Sub Deneme()

Dim col As Integer

col = Month(Range("G2")) + 45

Cells(4, col) = Range("AI4")

End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın Necdet Hocam Merhaba

Sizden ricam iki durumda değişiklik yapabilrmiyiz.

- Buton kullanmadan (hesaplama yaptırmadan) ilgili ayda (G2 ay durumuna göre) otomatik kayıt yaptırabilir miyiz
- Örneğin Şubat ayında iken, Ocak ayına dönüp (Bordro da değişiklik) yapabilmek adına Ocak ayına dönüldüğünde Şubat ayına (AU4) ait kaydının silinmesi mümkün müdür
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Pek anlamadım açıklamanızı.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Merhaba

Makroyu Aktarma butonu kullanmadan Aylara (AT-BE) Otomatik aktarma yapması için makroya ilave yapabilir miyiz. Gün içinde veya gün sonunda Aktar butonuna basmak ihtiyacı duyuluyor. "Bordro hesabı gün üzerinden yapıldığından AI4 hücresi günlük veya ücret durumuna göre değişiklik gösteriyor.".

Birde; Örneğin Şubat ayında iken (G2) Ocak ayına döndüğümüzde AU4 da oluşan tutarın sıfırlanması mümkün mü
Yani hangi ayda isek bulunduğumuz aydan sonraki aylarda kayıtların silinmesi
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Umarım doğru anlamışımdır.
Aşağıdaki kodları BORDRO sayfasının kod bölümüne kopyalayıp dener misiniz?
G2 deki tarih değiştiğinde kod çalışır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [G2]) Is Nothing Then Exit Sub

Dim col As Integer
col = Month(Range("G2")) + 45
Cells(4, col) = Range("AI4")
If Month(Range("G2")) < 12 Then Cells(4, col).Offset(0, 1) = ""

End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Merhaba

Evet Hocam Tamda budur.

Size Ekte Orijinal dosyayı gönderdim. Sayfa tek satır olmadığı için 1, 2 dokunuşa daha ihtiyacım var

4. satırdan aşağıya doğru bulunan satırlarda da "Genel Toplam" satırına kadar aynı uygulamayı yapabilir miyiz.
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Yine Aşağıdaki kodları BORDRO sayfasının kod bölümüne kopyalayıp deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [G2]) Is Nothing Then Exit Sub

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Dim col As Integer
Dim i   As Integer
Dim rng As Range

col = Month(Range("G2")) + 46
Set rng = Range("B2").CurrentRegion

i = 4
Do
    rng(i, col) = Cells(i, "AK")
    If Month(Range("G2")) < 12 Then _
        rng(i, col + 1).Resize(1, rng.Columns.Count - col) = ""
    i = i + 1
Loop Until rng(i, 1) = "GENEL TOPLAM" Or rng(i, 2) = ""

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With

End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Sayın Necdet Bey

5. satırdan kayıt yapıyor nereden düzeltme yapayım. Yani 1 satır kaydırıyor
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
i=4 ü i=3 ile deneyin. eğer ilk satırı atlıyorsa

Ben son gönderdiğiniz dosya üzerinde çalışmıştım, sıkıntı yoktu.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Necdet Hocam

i=3 yaptım AK3 sütun başlığı yazısını alıyor.

Dosyayı tekrar yolladım. Dosyayı güncelleyip gönderebilir misiniz.
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, [G2]) Is Nothing Then Exit Sub

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Dim col As Integer
Dim i   As Integer

col = Month(Range("G2")) + 47

i = 4
Do
    Cells(i, col) = Cells(i, "AK")
    Range(Cells(i, col + 1), Cells(i, 60)) = ""
    i = i + 1
Loop Until Cells(i, "B") = "GENEL TOPLAM"

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With

End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Merhaba

Hocam enteresan bir durumla karşılaştım.

Benim mantığıma, deneme ve gözlemlerime göre, Durumu ifade edebildiğim kadar anlatmaya çalışayım.

1. ayda Matrah aktarımında sorun yok Çünkü Bordro hesaplamalarını bitirmiş oluyor.

2. aya geçildiğinde Bordro hesaplaması Dosyada Fazla sayfa ve buna bağlı olarak verilerin alınacağı hücreler, Vergi dilimi faktörü, oluşan Geçen ayın Matrahı vb. durumlardan dolayı formül hesaplaması biraz süre alıyor dolayısıyla Vergi matrahı oluşumu da bu süreye tabi olduğundan, Bordro hesaplaması tamamlanmadan Makro aktar kodu daha hızlı işlem yaptığından özellikle 1. aydan sonraki aylarda 4. satırda aktarma tutarı azda olsa bir fark veriyor. G2 tarihini İkinci kez yazdığımda sorun çözülüyor. Aynı Vergi Dilimi aralığında bu fark olmuyor çünkü Bordro hesaplayacak farklı bir şey bulamıyor.

2. Aydan geri 1. Aya dönüldüğünde de Yine aynı sorun yaşanıyor. Bordronun hesaplama süresi içinde Makro hızlı aktarma yaptığı için AK deki yakaladığı tutarı aktarıyor. Ve Bordronun doğru hesaplama yapması gereken Vergi Matrahını almadığı için, Bordro da hatalı duruma düşüyor.
Yine G2 deki tarihi İkinci kez yazdığımda doğru matrahı aktarıyor ve bordro tutarları da düzeliyor. Çünkü Bordro hesaplaması tamamlanmış oluyor
Bende böyle bir kanaat oluştu Yazdıklarımın karşılığı var mı çözüm ne olabilir Fikrinizi almak isterim Hocam

Bu durumda;

Kod yazılımına hesaplama süresini uzatacak bir ilave olabilir mi diye aklımdan geçti de? ""Herkes Makroyu hızlandırma için uğraşırken"" Başka nasıl bir çözüm düşünebiliriz bilemedim

Bordro sayfasının tamamı makro ile hesaplaması yapılmış olsaydı Bu sorun olmazdı diye düşünüyorum. Şu an öyle bir şansım yok gibi

Sizde vaktiniz olur ise Bordro sayfasında G2 tarihini ileri geri alarak oluşan tutarları ve Bordro hesaplama ile Kod kaydetme hızını görebilirsiniz.

Hocam siz fazlasıyla Zaman ve Emek verdiniz Çok Teşekkür Ederim. Ama sorun bence Bordronun Formülle hesaplanmasında diye düşünüyorum.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodun başlangıcındaki aşağıdaki bölümdeki bold kısmı True olarak yaparak deneyiniz.

With Application
.ScreenUpdating = False
.EnableEvents = False
End With
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Korhan Hocam Merhaba

Yaptım daha önce belirttiğim sonuçlar veriyor.

Buton ile çalıştırmak en doğru karar gibime geliyor siz ne dersiniz.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Necdet Hocam İyi Akşamlar

12 no'lu mesajınızdaki Kodu Butonla çalıştırmak istiyorum. En doğru seçenek galiba

Kodu günceller misiniz.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,435
Excel Vers. ve Dili
Ofis 365 Türkçe
Aşağıdak kodu bir modüle kopyalanız.
Kod:
Sub MatrahAktar()

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Dim col As Integer
Dim i   As Integer

col = Month(Range("G2")) + 47

i = 4
Do
    Cells(i, col) = Cells(i, "AK")
    Range(Cells(i, col + 1), Cells(i, 60)) = ""
    i = i + 1
Loop Until Cells(i, "B") = "GENEL TOPLAM"

With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With

End Sub
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Necdet Hocam

Her şey için Çok Teşekkür ederim. İyi Akşamlar

Kolay Gelsin
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bahsi geçen komut satırı olayları askıya alan kod satırıdır. Mesajınızı hesaplama tepki vermiyor gibi algıladım. Belki faydası olabilir diye cevap vermiştim. Neyse ki Necdet Bey son noktayı koymuş.
 

ckarabacak

Altın Üye
Katılım
12 Ocak 2010
Mesajlar
340
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
10-07-2026
Her ikinize de Çok Teşekkür ederim. Elinize Emeğinize Sağlık

Sorun Dosyanın veya Bordro sayfasının tamamının Makro kodu ile çalışması sonucu düzeleceği kanaatindeyim.

Şimdilik hesaplamayı Buton ile yapacağım başka çaresi yok gibi

Konu çözümlenmiştir. Hoşça kalın
 
Üst