Otomatik Tablo - Son Kullanım Tarihi Üzerine

Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Arkadaşlar Merhaba,

İlk konum olmasından dolayı hatam olursa affedin.

Amacım, tabloda numara kısmını doldurduğumda düşey ara ile diğer sayfadaki verileri baz alarak ilgili bilgilerin otomatik olarak gelmesini sağlayıp işimizi kolaylaştırmak.

Burada herhangi bir sorun yok fakat uygulamayı kullandıracağım kişilerde excel bilgisi hiç yok bu yüzden olabildiğince basit olmalı.

Yaşadığım sorunlar ve istediğim noktalar ise;

1-Talep: C D E F sütunlarına sayfa sonuna kadar formülü kopyalamak ve bu hücrelerin korumaya alınması

Sorun: Sayfa sonuna kadar formülü kopyaladığım vakit yazdırmak istediğimde formülden dolayı hiçbir şey görünmemesine rağmen yaklaşık 2000 sayfa çıktı almak istiyor. Sadece verinin olduğu sayfaları yazdırmasını istiyorum. Formül olduğu için olduğunu biliyorum fakat formül olmasına rağmen bunun sadece tüm sütün verileri dolu olan hücrelerin yazıcıdan çıktı alınmasını sağlayabilir miyim?.
Kalan geçen gün sütunu olan F sütunu kontroller sonunda satır bazlı olarak silinmesini istiyorum fakat hücreler korumalı olduğu için silinmeye kapalı. İlk satırı korumadan kaldırdım sadece satırı sildiğimde yerine gelen satır korumalı olarak devam ediyor. Bu da her gün silmem gereken satırları silemeyeceğim anlamına geliyor. Bunu nasıl çözebilirim. ?
Örneğin: Kalan geçen gün 0 veya daha büyük bir rakam oldu ve kontrol sonucu ilk yada 5 satırını silmek isteyeceğim.

2-Talep: F sütunundaki verileri büyükten küçüğe göre otomatik sıralama.
Sorun: Sayfanın en altına yeni veri girildiğinde F sütunu otomatik olarak büyükten küçüğe göre sıralama yapmasını istiyorum. Buton ile yapılabilir mi ?

Bu taleplerimin nedeni bu dosyayı kullandıracağım kişiler excel kullanımını bilmemekte. Çıktı almak için veri süz kısmından boşlukların seçeneğini kaldırınca o kadar sayfa çıkartmayacağını, sıralama için yine süzme kısmından sıralamayı yapabileceğini bilmemektedir.

Silme için yaşanan sorun ise formüllerin bozulmaması için kilidin zorunlu olduğunu tekrar belirtmem gerekir.

Bu dosya bir mağazanın son kullanma tarihlerinin takibi için yapılmıştır. SKT si yaklaşan ürünlerin kontrolünü sağlamaktır. Bunun için sıralama önemli ve otomatik yapmak istemekteyim. Yine bu yüzden kontrolleri sağladıktan sonra artık raftan kaldırılan ürünlerin listeden çıkartılması gerekmektedir.

Biliyorum çok uzun oldu ancak çok acil olarak çözmem gereken bu sorunlar için sizlerden destek bekliyorum.

Herkese teşekkürler.

lİNKİhttp://s7.dosya.tc/server2/tebw6z/SKT_TABLO_-_Kopya.xlsx.html
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyanız çok büyük, o kadar formüllü hücre olunca 35 mb olmuş boyutu. Boş görünen hücreleri silince 11 kb oldu boyutu. Siz de öyle yapın. Aşağıdaki kodları kullanırsanız formüllere gerek yok.
Aşağıdaki kodları ANA TABLO sayfasının kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya) yapıştırın. Kodlar, A ve B sütunlarında değişiklik yapınca C, D, E ve F sütunlarındaki formüllü işlemleri yaparlar:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Set s2 = Sheets("VERİ")
son = Cells(Rows.Count, "A").End(3).Row + 1
veri = s2.Cells(Rows.Count, "A").End(3).Row

a = Target.Row

If Intersect(Target, Range("A2:A" & son)) Is Nothing Then GoTo 10

If Target = "" Then
    Range("A" & a & ":F" & a) = ""
Else
    If WorksheetFunction.CountIf(s2.Range("A1:A" & veri), Target) = 0 Then
        MsgBox "Ürün kodu bulunamadı", vbcriticial
        Exit Sub
    Else
        Cells(a, "C") = WorksheetFunction.VLookup(Target, s2.Range("A1:C" & veri), 2, 0)
        Cells(a, "D") = WorksheetFunction.VLookup(Target, s2.Range("A1:C" & veri), 3, 0)
        If Cells(a, "B") <> "" Then
            If IsDate(Cells(a, "B")) = True Then
                Cells(a, "E") = Cells(a, "B") - Cells(a, "D")
                Cells(a, "F") = Date - Cells(a, "E")
            End If
        End If
    End If
End If
10:
If Intersect(Target, Range("B2:B" & son)) Is Nothing Then Exit Sub
If Target = "" Then
    Cells(a, "F") = ""
Else
    If IsDate(Target) = False Then
        MsgBox "Lütfen tarih giriniz", vbcriticial
        Exit Sub
    Else
        Cells(a, "E") = Target - Cells(a, "D")
        Cells(a, "F") = Date - Cells(a, "E")
    End If
End If

End Sub
Sıralama için aşağıdaki kodları bir modüle kopyalayıp, sayfanıza bir düğme ekleyin ve bu düğmeye sırala makrosunu atayın:

Kod:
Sub sırala()
    son = Worksheets("ANA TABLO").Cells(Rows.Count, "F").End(3).Row
    ActiveWorkbook.Worksheets("ANA TABLO").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("ANA TABLO").Sort.SortFields.Add Key:=Range("F" & son), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("ANA TABLO").Sort
        .SetRange Range("A2:F" & son)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Dosyanızdaki makroların çalışması için dosyanızı "makro içerebilen excel dosyası" olarak farklı kaydetmeniz gerekmektedir. uzantısı xlsm olur.
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Yusuf bey,

Öncelikle ilginizden dolayı çok teşekkür ederim. Gerçekten çok iyi çalışıyor.

Fakat katşılaştığım bazı durumlar var bunlarıda hallettikmi tamamdır. Ayrıca bazı tüyolar almak isterim.

1. Bende ürün numaralarının olduğu hazır bir tablo var burdaki ürün numaralarını kopyaladıgımda makro sayfasına gelip Run-time 13 Type mismatch hatası vermektedir. Bu durumu örneğin aynı ürün numarasına sahip yada aynı skt tarihine ait bir hücreyi aşağıdaki birden çok hücreye kopyalaığımda yine aynı hatayı vermektedir.

Hata ayıklamaya tıkladığımda IF TARGET = "" Then kısmı makro kodunuzda sarı olarak belirmektedir.

End dediğim vakit ise makro kodunu çalıştırmamaktadır.

Bunu nasıl çözebilirim. Kod doğrudur fakat hata neyden kaynaklı onu çözemedim.

2. Yine buna benze durumda tarih kısmını kopyaladığımda tarih giriniz diye uyarı verdi ben bir önceki hücrede hata vermediği tarihi kopyalamıştım. Yukarıdaki hatayı verdi. Düzeltme işlemi yaptı sonrasında fakat kalan geçen kısmında ######### diye değer belirdi tıkladığımda içinde rakam olduğunu gördüm. Biçimi değiştir dediğimde normal rakam görünümüne döndü kare değerleri.

Kopyala yapmadığımda sorunsuz çalışıyor hem sıralama hemde değerleri düşeyara gibi getirmede.


Tekrar tekrar teşekkürler.
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Ayrıca,

Hücredeki veriyi silmek istediğimdede aynı hatayı veriyor. Örneği A2 hücresine numara yazdım sonra delete tuşuna bastığımda yine aynı hatayı vermektedir.

Kalan geçen günü 0 veya eksi bir rakam oldu kontrolleri yaptık ve artık o satırdaki veriye ihtiyacımız kalmadı 2. Satırı komple silmem gerektiğinde de yine aynı hatayı vermektedir.

Bu hata ile ilgili durumlardan nasıl kurtuluruz.

Ek bir soru oldu ama uğraştıkça çıkan hatalrı paylaşmak istedim. Stabil çalışması için.

Teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Private sub satırından sonra aşağıdaki satırı ekleyip kontrol ediniz:

Kod:
On Error Resume Next
Böylece hata uyarısı vermeyecektir. A sütununda Delete ile hücre içeriği silindiğinde hata olmadan o satırdaki diğer hücreleri de boşaltır.
Satırı komple silmeniz gerekmez. A sütunundaki değeri delete ile sildiğinizde sıralama makrosunu çalıştırırsanız zaten o satır çalışma alanından çıkacaktır.
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Yusuf bey,

Satır silme dediğiniz gibi anlamsız kalıyor sıralama ile işi çözmüş oluyoruz.

Dediğiniz gibi yaptım hücreyi silince yada birden çok kopyalama yapıştırma işlemi yapınca excel çalışmayı durdurdu uyarısı alıyorum.

Yaptığım bu,

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Set s2 = Sheets("VERİ")
son = Cells(Rows.Count, "A").End(3).Row + 1
veri = s2.Cells(Rows.Count, "A").End(3).Row

Biliyorum başınızı çok ağrıttım.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Estağfurullah baş ağrısı değil kesinlikle.

Verdiğim kod A ve B sütununda değişiklik yapıldığında çalışıyor. Bu nedenle hücre ya da satır sildiğinizde de çalışır. Kod girilen veriye göre işlem yaptığından, silme yaptığınızda ortada veri olmuyor ve hata veriyor. Mümkün oldukça silme yapmamalısınız.

Çoklu seçimler de maalesef hata veriyor. Bunu önlemek için farklı yöntem kullanılabilir. Örneğin diğer sayfada çoklu seçim yapıldığında farklı bir makro çalıştırılıp asıl sayfadaki kodlarla değil bu makro ile işlem yaptırabiliriz. Şu anda cepten bakıyorum, bilgisayar başına geçince bir şeyler yapmaya çalışırım.
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Yusuf bey
Silme işlemi hergün yapılmak zorunda. Çünkü skt si geçen ürün reyondan kaldırıldıktan sonra artık o satırdaki bilgiler gereksiz oluyor.
Toplu kopyalama işlemide bazen gerekiyor. Birden fazla hücresinde aynı anda silinmesi gerekecektir.

Siz yinede hakkınızı helal edin
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ekli dosyayı inceleyin.

Dosyada Ana sayfada sırala düğmesi var, eskisi gibi sıralama yapıyor.

Ana sayfadaki kodlara silme işlemi için bir düzenleme yaptım. Silme yaptığınızda hata vermiyor.

VERİ sayfasında da birden fazla kodu aktarmak için düğme var. O makroyu çalıştırdığınızda seçili olan kodları hata vermeden Ana sayfaya aktarıyor.

Tek sorun var, tarihler. Dosyanızda ana sayfanın B sütununa yazılacak tarihlerin nerde olduğu/nereden geldiği belli değil. Bu nedenle tarihle ilgili düzenleme yapamadım.

https://drive.google.com/file/d/1QwPJ_TfvdlNTs0-G44O7zzP7DN3_n9Dh/view?usp=sharing
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Yusuf Bey,

İnanın tam diyorum oldu bu iş. Tüm ihtimalleri özellikle deniyorum ki yaşanabilecek bir sorun varsa şimdiden göreyim çünkü baya bir kullanıcısı olacak bunun.

İlk açtığımda dediğiniz gibi her şey çok iyi fakat hücreyi sildiğimde artık makro çalışmaz oluyor. Veri getirmez oluyor neden oluyor inanın bilmiyorum. Sağ taraftaki adı rk gelmiyor manuel hepsini silmemiz gerekiyor makro tepki vermediği için. Silmek sorun değil tek tek ama yeni ürün numarası girdiğimde hemen akabinde artık bilgiler gelmez oluyor.

Çoklu kopyalama ise veri kısmından olmayacak başka bir excel dosyasından olacaktı. Yine de işe yarar bu alternatif teşekkür ederim. Diğer bir excel dosyasından toplu kopyalama için herhangi bir şey yapabilir miyiz ?

Şuanda tarihle ilgili bir sorun yaşamadım. Sadece silince yine ürün numarasındaki gibi artık çalışmaz tepki vermez hale geliyor.

Ayrıca bir isteğim daha olacak. Yine buton ile çıktı almak istediğimizde sadece ilk 1 aylık raftan kaldırma süresine eş değer verilerin çıktısını 1 sayfaya sığdırıp çıktısını alabilir miyiz ?

Bunları çözdünüz mü gerçekten tamamlanacak.

Şimdiden çok teşekkür ederim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Anlaşılıyor ki sayfa olaylarına bağlı makrolar sizin çalışmanıza uygun değil.

Ekte farklı bir uygulama yaptım. Ana tabloda a sütununa ürün kodlarını ister bir tane ister bin tane yazın ya da kopyala yapıştır yapın.

B sütununa tarihleri aynı şekilde istediğiniz kadar yazın ya da kopyala yapıştır yapın.

Sonra sayfadaki düğmeye basarak makroyu çalıştırın. Makro A ve B sütunundaki verilere göre tabloyu düzenleyecek, hatalı verileri kırmızı ile işaretleyecektir.

https://drive.google.com/file/d/1QwPJ_TfvdlNTs0-G44O7zzP7DN3_n9Dh/view?usp=sharing
 
Katılım
18 Ocak 2018
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Yusuf Bey,

Çok doğru karar olmuş. Çünkü buton gerçekten her işime yaradı. Otomatik sırala ile beraber yapabiliyorsunuz. Yetti hocam yetti. Gerçekten çok sade ve kullanımı çok rahat oldu. Stabil çalışıyor ve daha önceki koddan çok daha iyi tepki veriyor. Ellerine sağlık. Ben yine kullanım sırasında yaşanan şeyleri buradan ilerleyen zamanlarda belirtmek istiyorum.

Hızlı dönüşünüz ve ilginizden dolayı çok teşekkür ediyorum Yusuf bey.
 
Üst