TERMİN TESLİM TAKİP

Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
Firmamızın termin sürelerini takip etmek macıyla kullandığımız excel dosyasına makro ekleyerek.
1) Teslim süresi gelen satırın yeşil renge boyanmasını.
2) teslim tarihi geçen satırın kırmızı renge boyanmasını.
3) Teslim süreleri bir hafta geçmiş olan satırların 2. sayfaya atılmasını.
Ve son olarak bunu manual olarak yapabiliyorum ama makroya da eklemeyi öğrenmek isterim.
Girilen her bir firma siparişinin otomatik olarak alfabetik sıralanmasını yazmak isterim.
Bana bu makroyu yazmamda yardımcı olabilecek herkese şimdiden teşekkürler.

https://s7.dosya.tc/server15/aivd8k/TERMIN_SURELERI.xlsm&59147766
 
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Dosya silme link'ini paylaşmıssınız.İndirme linkini eklemeniz gerekir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Monster marka, yüksek özellikli bilgisayarımın dosyanızı açması tam 5 dakika sürdü. Dosyanızda ne kadar satır varsa hepsini biçimlendirmişsiniz. Bu da dosyanızın boyutunun büyümesine ve yavaş çalışmasına sebep oluyor.

;Verimli çalışmak için gereksiz biçimlendirmelerden uzak durmanızı, kullanmadığınız satırlarda biçimlendirme yapmamanızı öneririm. Konuyla ilgili Sayın İdris Serdar'ın aşağıdaki paylaşımını incelemenizi öneririm:

http://www.excelgurusu.com/optimal-bir-excel-dosyasi-icin-altin-kurallar/

Sorunuza gelince koşullu biçimlendirmeler sürekli çalışan formüller kullandığından verilerinizin çok olması durumunda yine dosyanız şişecek, çalışmanız zorlaşacaktır.

Ayrıca gördüğüm kadarıyla sipariş ve teslim tarihlerinde virgül kullanmışsınız. Bu durumda excel o verileri tarih olarak görmez,i metin olarak görür. Bu nedenle bahsettiğiniz karşılaştırma ve değerlendirme işlemi yapılamaz.

Dosyanızı güncellerseniz iyi olur.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki makro renklendirme ve diğer sayfaya atma işlemini yapmaktadır. Ancak örnek dosyanızda 108-109 ve 110. satırlarda tarih yerine metinsel ifadeler var, bunlar makronun hata vermesine neden oluyor. Onları düzeltirseniz makro istediğinizi yapar:

PHP:
Sub termin()
    Set s1 = Sheets("TERMİN")
    Set s2 = Sheets("TESLİM")
    Set s3 = Sheets("İADE")
    son = s1.Cells(Rows.Count, "B").End(3).Row
    s1.Range("A2:F" & son).Interior.Color = xlNone
    For i = son To 2 Step -1
        If s1.Cells(i, "E") + 7 <= Date Then
            yeni = s2.Cells(Rows.Count, "B").End(3).Row + 1
            s1.Rows(i).Copy s2.Range("A" & yeni)
            s1.Rows(i).Delete
        ElseIf Date > s1.Cells(i, "E") Then
            s1.Range("A" & i & ":F" & i).Interior.Color = vbRed
        ElseIf Date = s1.Cells(i, "E") Then
            s1.Range("A" & i & ":F" & i).Interior.Color = vbGreen
        End If
    Next
End Sub
Sıralama işlemiyle ilgili tam olarak hangi anda sıralama yapılması gerektiğini belirtir misiniz? Şu hücreye veri girildiğinde ya da bir düğmeye basarak yapılsın gibi. Bir de sıralama yaparken mutlaka dolu olması gereken hücre varsa onu da belirtin.
 
Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
Aşağıdaki makro renklendirme ve diğer sayfaya atma işlemini yapmaktadır. Ancak örnek dosyanızda 108-109 ve 110. satırlarda tarih yerine metinsel ifadeler var, bunlar makronun hata vermesine neden oluyor. Onları düzeltirseniz makro istediğinizi yapar:

PHP:
Sub termin()
    Set s1 = Sheets("TERMİN")
    Set s2 = Sheets("TESLİM")
    Set s3 = Sheets("İADE")
    son = s1.Cells(Rows.Count, "B").End(3).Row
    s1.Range("A2:F" & son).Interior.Color = xlNone
    For i = son To 2 Step -1
        If s1.Cells(i, "E") + 7 <= Date Then
            yeni = s2.Cells(Rows.Count, "B").End(3).Row + 1
            s1.Rows(i).Copy s2.Range("A" & yeni)
            s1.Rows(i).Delete
        ElseIf Date > s1.Cells(i, "E") Then
            s1.Range("A" & i & ":F" & i).Interior.Color = vbRed
        ElseIf Date = s1.Cells(i, "E") Then
            s1.Range("A" & i & ":F" & i).Interior.Color = vbGreen
        End If
    Next
End Sub
Sıralama işlemiyle ilgili tam olarak hangi anda sıralama yapılması gerektiğini belirtir misiniz? Şu hücreye veri girildiğinde ya da bir düğmeye basarak yapılsın gibi. Bir de sıralama yaparken mutlaka dolu olması gereken hücre varsa onu da belirtin.
Yusuf Bey tavsiye ve telkinlerinizi kesinlikle değerlendireceğim.
Bunlardan çıkarımlarım oldu teşekkürler.
Makroyu henüz deneme imkanı bulamadım ama Sıralama hususunda her hangi bir satıra yeni firma adı siparişi vb. griş olduğunda sıralamayı yapması uygun olacaktır. Çünkü ben yeni veriyi en alta giriyorum sonrasında elle sıralıyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Günaydın.

Dileyim ki yeni firma hücresine giriş yaptınız ve makro çalıştı sıralama değişti. Bu durumda siparişin diğer bilgilerini girmemiş olacaksınız ve çalıştığınız satırı kaybedeceksiniz. Herhangi bir hataya meydan vermemek için sıralama tam olarak ne zaman yapılmalıdır?
 
Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
Günaydın.

Dileyim ki yeni firma hücresine giriş yaptınız ve makro çalıştı sıralama değişti. Bu durumda siparişin diğer bilgilerini girmemiş olacaksınız ve çalıştığınız satırı kaybedeceksiniz. Herhangi bir hataya meydan vermemek için sıralama tam olarak ne zaman yapılmalıdır?
Uygulama her açıldığında yapıması daha doğru olcak gibi.
Değerli tavsiyelerinizi çok yararlı oluyor Yusuf Bey Teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodu TERMİN 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ırsanız, listeye veri girdikçe otomatik sıralar ve G sütununu yardımcı sütun olarak kullanarak sıralama sonrasında kaldığınız yerden devam etmenizi sağlar.

Ancak bu kod sürekli olarak her değişiklikte sıralama yaptığı için veriler çoğaldıkça çalışmanızı zorlaştırır. Bu sorunu aşmak için her zaman değil de belirleyeceğiniz bazı durumlarda sıralama yapılabilir. Örneğin tüm hücrelerin girişi tamamlandıktan sonra gibi.:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    son = Cells(Rows.Count, "A").End(3).Row
    If Intersect(Target, Range("A2:F" & son + 1)) Is Nothing Then Exit Sub
    Range("G:G") = ""
    Cells(Target.Row, "G") = "x"
    
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("A2:A" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("B2:B" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("C2:C" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("D2:D" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("E2:E" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TERMİN").Sort
        .SetRange Range("A1:G" & son)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    yer = WorksheetFunction.Match("x", [G:G], 0)
    Cells(yer, Target.Column + 1).Activate
End Sub
 
Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
Aşağıdaki kodu TERMİN 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ırsanız, listeye veri girdikçe otomatik sıralar ve G sütununu yardımcı sütun olarak kullanarak sıralama sonrasında kaldığınız yerden devam etmenizi sağlar.

Ancak bu kod sürekli olarak her değişiklikte sıralama yaptığı için veriler çoğaldıkça çalışmanızı zorlaştırır. Bu sorunu aşmak için her zaman değil de belirleyeceğiniz bazı durumlarda sıralama yapılabilir. Örneğin tüm hücrelerin girişi tamamlandıktan sonra gibi.:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    son = Cells(Rows.Count, "A").End(3).Row
    If Intersect(Target, Range("A2:F" & son + 1)) Is Nothing Then Exit Sub
    Range("G:G") = ""
    Cells(Target.Row, "G") = "x"
   
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("A2:A" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("B2:B" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("C2:C" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("D2:D" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("TERMİN").Sort.SortFields.Add Key:=Range("E2:E" & son) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("TERMİN").Sort
        .SetRange Range("A1:G" & son)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    yer = WorksheetFunction.Match("x", [G:G], 0)
    Cells(yer, Target.Column + 1).Activate
End Sub
En yakın zamanda deneyeceğim Şimdiden elinize emeğinize sağlık inşallah bende kısa süre içinde bir kursa kayıt yaptıracağım.
Elginkan vakıf kurslarını bekliyorum.
 
Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
MAKROYU çalıştırmaya denediğimde, veri girdikten sonra kayfetmeyi deniyorum belge denetleyicisi tarafınfan kişisel içerikler içeriyor olabilir gibi bir uyarı alıyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Tamam/kabul vs ne varsa onaylayabilirsiniz. Uyarı çıkmaması için Dosya-seçenekler-güvenlik-güven Merkezi ayarları-kaydederken içeriği temizle gibi bir seçenek var, o seçeneği iptal edebilirsiniz. (Menüyü ezberden yazdım, birebir böyle olmayabilir)
 
Katılım
28 Eylül 2019
Mesajlar
11
Excel Vers. ve Dili
excel 2016 türkçe
Tamam/kabul vs ne varsa onaylayabilirsiniz. Uyarı çıkmaması için Dosya-seçenekler-güvenlik-güven Merkezi ayarları-kaydederken içeriği temizle gibi bir seçenek var, o seçeneği iptal edebilirsiniz. (Menüyü ezberden yazdım, birebir böyle olmayabilir)
Ben galiba beceremeyeceğim size mail üzerinden excel klasörünü iletsem bir yardımı olur mu acaba?
Yada sürüm ile alakalı bir sorundan kaynaklanıyor olabilir mi?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Excel seçenekleriyle ilgili olduğu için sizin bilgisayarda yapılması gerekir bence.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Excel 2016^da ayarın tam yolu:

Dosya - Seçenekler - Güven Merkezi - Güven Merkezi Ayarları - Gizlilik Seçenekleri - Kaydederken dosya özelliklerinden kişisel bilgileri kaldır

Bu işaretli olursa kaydederken uyarı verir, işareti kaldırırsanız uyarı çıkmaz.
 
Katılım
8 Aralık 2020
Mesajlar
2
Excel Vers. ve Dili
excell 2007 türkçe
Firmamızın termin sürelerini takip etmek macıyla kullandığımız excel dosyasına makro ekleyerek.
1) Teslim süresi gelen satırın yeşil renge boyanmasını.
2) teslim tarihi geçen satırın kırmızı renge boyanmasını.
3) Teslim süreleri bir hafta geçmiş olan satırların 2. sayfaya atılmasını.
Ve son olarak bunu manual olarak yapabiliyorum ama makroya da eklemeyi öğrenmek isterim.
Girilen her bir firma siparişinin otomatik olarak alfabetik sıralanmasını yazmak isterim.
Bana bu makroyu yazmamda yardımcı olabilecek herkese şimdiden teşekkürler.

https://s7.dosya.tc/server15/aivd8k/TERMIN_SURELERI.xlsm&59147766
Kıymetli büyüğüm, biz de imalat yapan bir firmayız ve termin hesaplamasını maalesef hala defter kağıt ile yapmaktayız. Hangi yazılımı veya hangi formatı kullanıyorsunuz yardım edebilir misiniz.
 
Üst