• DİKKAT

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

Soru Seçilen koşula göre tüm satırı başka sayfaya taşıma

Katılım
20 Eylül 2022
Mesajlar
22
Excel Vers. ve Dili
2016
Daha önce açılmış bir konu hakkında yardıma ihtiyacım var. Gönderdiğim örnekte Çift tıklanan satır Necdet Bey in yazdığı kod sayesinde sorunsuz olarak başka sayfaya taşınıyor ve ana sayfadan siliniyor. Benim bu kodu K sütununda bulunan hücrelerdeki değerin AKTİF / PASİF içeriğine göre güncellenmesi. VBA kodlama hakkında yeterli bilgim yok, yardımcı olacak arkadaşlara şimdiden teşekkür ederim... Örnek dosya ektedir. Benim yaptığım eklemede kod eksik çalışıyor :)
 

Ekli dosyalar

AKTİF/PASİF içeriğine göre nasıl güncellenecek?
 
Yusuf Bey. Birinci sayfada PASİF değeri seçildiğinde o satır diğer sayfaya taşınacak, diğer sayfaya taşınan satırlardan AKTİF değeri seçildiğinde bu sefer bu satır birinci sayfaya geri taşınacak.
 
Dosyadaki eski kodları silip aşağıdaki ilk kodu sipariş sayfasına ve ikinci kodu teslim edilen siparişler sayfasına ekleyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [K:K]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
Dim SonKol As Integer
Dim SonSat As Long
Dim Sat As Long
If Target = "PASİF" Then
    Sat = Target.Row
    SonSat = Sheets("teslim edilen siparişler").[A65536].End(3).Row + 1
    SonKol = Cells(1, Columns.Count).End(1).Column
    Application.EnableEvents = False
        Range(Cells(Sat, "A"), Cells(Sat, SonKol)).Copy _
                Sheets("teslim edilen siparişler").Range("A" & SonSat)
        Rows(Sat).Delete Shift:=xlUp
    Application.EnableEvents = True
End If
End Sub

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [K:K]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
Dim SonKol As Integer
Dim SonSat As Long
Dim Sat As Long
If Target = "AKTİF" Then
    Sat = Target.Row
    SonSat = Sheets("sipariş").[A65536].End(3).Row + 1
    SonKol = Cells(1, Columns.Count).End(1).Column
    Application.EnableEvents = False
        Range(Cells(Sat, "A"), Cells(Sat, SonKol)).Copy _
                Sheets("sipariş").Range("A" & SonSat)
        Rows(Sat).Delete Shift:=xlUp
    Application.EnableEvents = True
End If
End Sub
 
Dosyadaki eski kodları silip aşağıdaki ilk kodu sipariş sayfasına ve ikinci kodu teslim edilen siparişler sayfasına ekleyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [K:K]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
Dim SonKol As Integer
Dim SonSat As Long
Dim Sat As Long
If Target = "PASİF" Then
    Sat = Target.Row
    SonSat = Sheets("teslim edilen siparişler").[A65536].End(3).Row + 1
    SonKol = Cells(1, Columns.Count).End(1).Column
    Application.EnableEvents = False
        Range(Cells(Sat, "A"), Cells(Sat, SonKol)).Copy _
                Sheets("teslim edilen siparişler").Range("A" & SonSat)
        Rows(Sat).Delete Shift:=xlUp
    Application.EnableEvents = True
End If
End Sub

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [K:K]) Is Nothing Then Exit Sub
If Target = "" Then Exit Sub
Dim SonKol As Integer
Dim SonSat As Long
Dim Sat As Long
If Target = "AKTİF" Then
    Sat = Target.Row
    SonSat = Sheets("sipariş").[A65536].End(3).Row + 1
    SonKol = Cells(1, Columns.Count).End(1).Column
    Application.EnableEvents = False
        Range(Cells(Sat, "A"), Cells(Sat, SonKol)).Copy _
                Sheets("sipariş").Range("A" & SonSat)
        Rows(Sat).Delete Shift:=xlUp
    Application.EnableEvents = True
End If
End Sub


Yusuf Bey çok teşekkür ediyorum. Kodlar mükemmel çalışıyor, Allah razı olsun.
 
Merhabalar Yusuf Bey bu işlemleri butona atayınca kodu değiştirmemiz gerekiyor muydu? Epeydir excele uzağım bildiğim az bir şeyi de unutmuşum.
 
Bu kodlar target olarak belirtilen hücre(ler)de değişiklik yapılınca çalışırlar. Eğer düğme aracılığıyla çalışması gerekiyorsa değişiklik gerekir. Target yerine activecell kullanmak gibi. Ancak önemli olan nasıl bir işlem yapılması istendiğidir. Örneğin son paylaştığım kodlarda activecell kullanmak çözüm olmaz. Çünkü K sütununa göre işlem yapılıyor. Bunun bir şekilde makroda belirtilmesi gerekir.
 
Bu kodlar target olarak belirtilen hücre(ler)de değişiklik yapılınca çalışırlar. Eğer düğme aracılığıyla çalışması gerekiyorsa değişiklik gerekir. Target yerine activecell kullanmak gibi. Ancak önemli olan nasıl bir işlem yapılması istendiğidir. Örneğin son paylaştığım kodlarda activecell kullanmak çözüm olmaz. Çünkü K sütununa göre işlem yapılıyor. Bunun bir şekilde makroda belirtilmesi gerekir.
Bende de aynı şart mevcut sadece K yerine aktif pasif şartımız A sütununda yazıyor.
 
Tam olarak yapmak istediğiniz nedir? Düğmeye bastığınızda sayfada A sütunundaki tüm AKTİF ya da PASİFler diğer sayfaya mı taşınacak? Yoksa belirli bir satır mı kontrol edilecek? Hangi sayfadan hangi sayfaya aktarılacak?
 
Düğmeye bastığımda A sütunundaki Aktif-pasif değerine göre tüm pasif yazan satırlara çalışan sayfasından pasif sayfasına aktarılacak.
 
Aşağıdaki gibi olabilir. Makro büyük küçük harf duyarlıdır, sayfa isimleri ve hücredeki verilerin birebir makrodaki gibi olması gerekir (ya da makrodaki bilgileri dosyanıza göre güncellemelisiniz):
PHP:
Sub aktar()
Set s1 = Sheets("çalışan")
Set s2 = Sheets("pasif")
son = s1.Cells(Rows.Count, "A").End(3).Row
For i = son To 1 Step -1
    If s1.Cells(i, "A") = "Pasif" Then
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        s1.Rows(i).Cut s2.Cells(yeni, "A")
        s1.Rows(i).Delete Shift:=xlUp
    End If
Next
End Sub
 
Zihninize sağlık hocam çok sağolun.
 
Geri
Üst