• DİKKAT

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

Birden Fazla Sayfaya Koşullu Satır Kopyalama

Katılım
7 Mayıs 2017
Mesajlar
58
Excel Vers. ve Dili
2016 Türkçe
Değerli üstadlar, bir konuda yardım almak istiyorum. Veri Sayfasında bulunan bilgileri koşullu olarak diğer sayfalara yazdırmak istiyorum. Şöyle ki, Veri Sayfasının A sütununda personel isimleri var. Kod bu sütuna bakıp personel ismine göre ilgili satırları sayfalara dağıtacak. Bunu tek sayfa için kısmen de olsa yapabilir durumdayım. Kısmen diyorum çünkü butona her bastığımda Veri Sayfasından daha önce kopyalanmış satırları tekrar kopyalıyor. :/ Örneğin A personelinin 5 tane izin talebi varsa sadece o 5 satır gelmeli. Yeni bir talep eklenince de sadece yeni eklenen satır kopyalanmalı.

bul değeri "Personel A" ise, Personel A sayfasına gidip o satırı yapıştırıyor. Bu koda eklemek istediğim, bul değeri "Personel B" ise, Personel B sayfasına gidip yazsın. Bu şekilde kodun içinde toplam personel sayımız kadar sayfa olacak. Yani tek buton ile bu işlemi yapmak istiyorum.

Kod:
Sub izin_takibi()
    Dim s1 As Worksheet, s2 As Worksheet
    Dim bul As Range, satir As Long
    Set s1 = Sheets("Veri")
    Set s2 = Sheets("Personel A")
    Application.ScreenUpdating = False
    For Each bul In s1.Range("A4:A" & s1.Range("A65536").End(3).Row)
    If bul.Value = "Personel A" Then
    satir = satir + 1
    bul.EntireRow.Copy
    s2.Select
    sat = Sheets("Personel A").Cells(65536, "A").End(xlUp).Row + 1
    Sheets("Personel A").Range("A" & sat).PasteSpecial xlPasteValues
    End If
    Next bul
    [a1].Select
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

Yardımcı olursanız çok sevinirim.
 
Son düzenleme:
Çok çok teşekkür ederim. İşlevsel olarak tam istediğim gibi. Ufak bir değişiklik yapmak istiyorum ama bilemedim kodun neresinde oynama yapmam gerektiğini. Verilerin kopyalandığı personel sayfalarında 2. satırdan itibaren yapıştırmaya başlıyor. Bunu 3. satırdan itibaren nasıl başlatabilirim?

Bir de personel isimleri A sütunundan B sütununa taşındı. Bu durumda kodun içindeki A olanları B yapacağım değil mi? Başka yapmam gereken bir değişiklik var mı?
 
Merhaba;
Kodlarda;

sonsatir = s2.Range("A65536").End(xlUp).Row + 1

satırının altına;

If sonsatir <= 2 Then sonsatir = 3

Satırını yerleştirin.

İkinci sorunuz için;
Kodlarda A sütunu diye belirtmedim ama;
For i = 2 To s1.Range("A65536").End(xlUp).Row
Bu döngü ile Veri sayfasında A sütunundaki son dolu satıra kadar döner

yazz = s1.Cells(i, 1) & s1.Cells(i, 2) & s1.Cells(i, 3)
yazz değişkenine personel ismi + tarih + izin günü verilerini birleştirir.

If WorksheetFunction.CountIf(s2.Range("d2:d65536"), yazz) = 0 Then
İle gönderilecek sayfada D2 : D 65536 aralığında aynı veri yoksa işlem yapar

sonsatir = s2.Range("A65536").End(xlUp).Row + 1
sonsatır değişkenine gönderilecek sayfada A sütununda son dolu hücre satır no'suna 1 ekler (yani en son boş satır no'sunu belirler)

If sonsatir <= 2 Then sonsatir = 3
eğer sonsatir verisi <=2 ise bunu 3 yapar (yani boş satır olarak 3. satırı baz alır)

s2.Cells(sonsatir, 1) = s1.Cells(i, 1)
Yazılacak sayfanın son boş satır ve 1. sütununa Veri sayfası (yani s1 sayfası) i değişken nosunun 1. sütun değerini yazar.

s2.Cells(sonsatir, 1) yada s1.Cells(i, 1) yazılımında 1 değeri (birinci sütun) yani A sütunu demektir.

Bu bilgiler ışığında istediğiniz kaydırmayı yapabilirsiniz.

İyi çalışmalar.
 
Tekrar merhaba,

Söylediğiniz satırı ekleyince oldu. Tabii biraz komplike bir yapıya çevirdim. Kendi yaptığım çalışmayı ekledim. Bir kısım pek sizin kod ile ilgili değil ama gene de vaktiniz olursa yardımcı olabilirseniz sevinirim. Veri sayfasında sorunumu anlatmaya çalıştım.

Sayfalara gönder bir kaydı bir kere gönderiyor. Aynı kişinin ikinci bir kaydı varsa onu da personel sayfasında diğer satırın altına ekliyor. Peki mevcut kayıtta boş olan hücreler dolunca ya da değişince güncelleme olmuyor. Şöyle yapsak olur mu acaba. Sayfalara göndermeden önce personel sayfalarındaki bütün satırları silse ve sıfırdan bütün verileri tekrar koysa olmaz mı? Bu şekilde en son ve en güncel satırlar gelmiş olur.

Çok olduğumu da biliyorum ama sürekli bir problem çıkıyor. :/

Saygılar. İyi çalışmalar.
 
Son düzenleme:
Merhaba;
İzin takibi görüleceği gibi o kadar basit olmamalı...
Öncelikle örnek veriler her ne kadar doğru olmasada başlangıç ve bitiş aralığındaki gün sayıları DOĞRU olmalı...
( örn: 29.06.2017 başlangıç , 10.07.2017 bitiş = 3 gün?)
Bu nedenle kullanıcının hata yapacağını varsayarak tatiller sayfası oluşturdum. (bu aynı zamanda takvim sayfası)

Eki açıklamaları okuyarak deneyin. Ne demek istediğimi daha iyi anlıyacaksınız.

İyi çalışmalar.

Link:
http://s8.dosya.tc/server4/xyzjoq/peech_free-sayfaya_gonder-benim-calisma-1.zip.html
 

Ekli dosyalar

Harika bir çalışma olmuş. Çok çok teşekkür ediyorum. Gerçekten size zahmet oldu. Bu kadar uğraşmışsınız. Çok detaylı ve herkesin kendine göre kolayca uyarlayabileceği bir şekilde hazırlanmış. İşimi de fazlasıyla görüyor şu an. Emeğinize sağlık.
 
Gerçekten güzel bir çalışma olmuş, elinize sağlık.
 
Geri
Üst