• DİKKAT

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

Tüm çalışma kitabı için filtre uygulama

adainsaat

Altın Üye
Katılım
12 Nisan 2006
Mesajlar
70
Excel Vers. ve Dili
Excel 2019 - Türkçe
Merhaba,

Çalışma kitabındaki bütün sayfalarda bazı sütunlar için filtre oluşturdum.İlk sayfada değişiklik yaptığımda,sayflarda etkilenen hücreler için her sayfaya gidip "Filtre Yeniden Uygula" yapmak yerine bir makroyla halletmek istiyorum.

Özetle, tüm çalışma kitabındaki sayfalar için filtreyi yeniden uygula makrosu..

Şimdiden teşekkürler..
 
Makro kaydet ten yapabilirsin ben öyle yaptım... 1 defaya mahsus filtrelemeyi yapmadan önce makro kaydet'e tıkla makro adını yaz... Sonra makro kaydederken filtreleme işlemini yap. Sonra makroyu durdur. O makroyu da Bir buton ile sayfaya koy... Değişiklik yaptıktan sonra sadece o butona tıklayarak işini halledebilirsin
 
Makro kaydet ten yapabilirsin ben öyle yaptım... 1 defaya mahsus filtrelemeyi yapmadan önce makro kaydet'e tıkla makro adını yaz... Sonra makro kaydederken filtreleme işlemini yap. Sonra makroyu durdur. O makroyu da Bir buton ile sayfaya koy... Değişiklik yaptıktan sonra sadece o butona tıklayarak işini halledebilirsin

Hocam teşekkürler ben de zaten öyle yaptım.Fakat ileride yeni sekmeler oluşturabilirim bu yüzden tüm sekmeleri seçmek için VBA'de kod olması gerekiyor.
 
Merhaba.

-- "Bazı sütunlar.../... ilk sayfada değişiklik yaptığımda.../... sayfalarda etkilenen hücreler"
şeklindeki sözel anlatım üzerine kod cevabı sizce nasıl verilecek?

-- Filtre uygulanmış sütunlar hangileri, ilk sayfa hangi sayfa, etkilenen hücreler ne demek, veriler hangi satırlardan başlıyor, filtre kriteri/kriterleri nelerdir?

Verilecek afaki cevap/cevaplar kuvvetle muhtemel sorun çıkartacaktır diye düşünüyorum.
Net cevap verilebilmesi için sorunuzu gerçek belgenizle aynı yapıda örnek belge üzerinden sormalısınız.
.
 
Merhaba.

-- "Bazı sütunlar.../... ilk sayfada değişiklik yaptığımda.../... sayfalarda etkilenen hücreler"
şeklindeki sözel anlatım üzerine kod cevabı sizce nasıl verilecek?

-- Filtre uygulanmış sütunlar hangileri, ilk sayfa hangi sayfa, etkilenen hücreler ne demek, veriler hangi satırlardan başlıyor, filtre kriteri/kriterleri nelerdir?

Verilecek afaki cevap/cevaplar kuvvetle muhtemel sorun çıkartacaktır diye düşünüyorum.
Net cevap verilebilmesi için sorunuzu gerçek belgenizle aynı yapıda örnek belge üzerinden sormalısınız.
.

Hocam dosya aşağıdaki linkte.. Şimdiden teşekkürler...

http://www.dosya.tc/server10/6zrfob/Takip_Calisma.xlsx.html
 
.

Bu kod hem filtre uygular, hem de filtreyi kaldırır.

Kod:
Sub Filtrele_Filtreleme()

Dim syf As Worksheet
On Error Resume Next
For Each syf In ActiveWorkbook.Worksheets
syf.Range("A1").AutoFilter
Next syf

End Sub


.
 
Hocam teşekkürler ama ben filtreyi açıp kapamasını istemiyorum..

Basitçe: tüm sekmelerde "filtreyi yeniden uygula" düğmesine basılmış olmasını istiyorum.

ActiveSheet.AutoFilter.ApplyFilter kodunda activesheet yerine activeworkbook olacak..

ama onu kabul etmiyor.
 
Hocam teşekkürler ama ben filtreyi açıp kapamasını istemiyorum..

Basitçe: tüm sekmelerde "filtreyi yeniden uygula" düğmesine basılmış olmasını istiyorum.

ActiveSheet.AutoFilter.ApplyFilter kodunda activesheet yerine activeworkbook olacak..

ama onu kabul etmiyor.

.

Uyguladınız mı? Bu yazdığınızı yapıyor. ister filtre eklersiniz, ister kaldırırsınız. Kaldı ki verdiğim kodun neresinde activesheet var?

.
 
.

Uyguladınız mı? Bu yazdığınızı yapıyor. ister filtre eklersiniz, ister kaldırırsınız. Kaldı ki verdiğim kodun neresinde activesheet var?

.

Uyguladım hocam.. Fakat uyguladıktan sonra filtreleri kaldırıyor ve istemediğim hücreler de listeleniyor.

Örneği ve açıklamasını önceki mesajlarımda göndermiştim hocam.
 
Merhaba.

Sayın İdris SERDAR'ın çözümünü incelemedim.

Pek ilgilendiğim konu değil ama; bir KTF üzerinden alternatif çözüm elde etmek için; aşağıdaki şekilde işlem yaparak sonuca ulaşabilirsiniz.
Kullanılan ktf 'nin kısmen alıntılandığı kaynak : bu internet sayfası

-- Alt taraftan GENEL adlı sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranında sağdaki boş olana birinci kod'u yapıştırın.
-- VBA ekranında iken üstteki MENÜ çubuğundan INSERT => MODULE yi seçin,
-- Modül'e ait sağdaki boş alana ikinci kod'u yapıştırın.

Kod, GENEL sayfasından ayrıldığınızda otomatik olarak çalışır ve (TABLO adlı sayfa dışındaki sayfaların tümünde) işlemi tamamlar.

NOT: Bir sütunda tek kritere göre filtre uygulandığı varsayılmıştır.

KOD'u SADECE düğme (sayfadaki METİN KUTUSU) üzerinden çalıştırmak isterseniz;
-- birinci kod'u kullanmayın,
-- sayfadaki düğmeye sağ tıklayıp MAKRO ATAyı seçin, açılan küçük ekranda S_FITRELER'i seçip işlemi onaylayın.
.
Kod:
[B]Private Sub Worksheet_Deactivate()[/B]
    Call [COLOR="Red"]S_FILTRELER[/COLOR]
[B]End Sub[/B]
Kod:
[B][COLOR="red"]Sub S_FILTRELER()[/COLOR][/B]
Dim hcr As Range
For Each shf In ThisWorkbook.Sheets
    If shf.Name <> "GENEL" And shf.Name <> "TABLO" Then
        For sut = 1 To 9
        Set hcr = Sheets("GENEL").Cells(1, sut)
            If FKriter(hcr) = "=" Or FKriter(hcr) = "" Then
                shf.Range("$A$1:$I$1").AutoFilter Field:=sut
            Else
                shf.Range("$A$1:$I$1").AutoFilter Field:=sut, Criteria1:=FKriter(hcr)
            End If
        Next
    End If
Next
[B][COLOR="Red"]End Sub[/COLOR][/B]

[B][COLOR="Blue"]Function FKriter(hcr As Range) As String[/COLOR][/B]
Dim Filtre As String
    Filtre = ""
    On Error GoTo Tamam
    With hcr.Parent.AutoFilter
        If Intersect(hcr, .Range) Is Nothing Then GoTo Tamam
        With .Filters(hcr.Column - .Range.Column + 1)
            If Not .On Then GoTo Tamam
            Filtre = .Criteria1
        End With
    End With
Tamam:
FKriter = Filtre
[B][COLOR="Blue"]End Function[/COLOR][/B]
 
Merhaba.

Sayın İdris SERDAR'ın çözümünü incelemedim.

Pek ilgilendiğim konu değil ama; bir KTF üzerinden alternatif çözüm elde etmek için; aşağıdaki şekilde işlem yaparak sonuca ulaşabilirsiniz.
Kullanılan ktf 'nin kısmen alıntılandığı kaynak : bu internet sayfası

-- Alt taraftan GENEL adlı sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranında sağdaki boş olana birinci kod'u yapıştırın.
-- VBA ekranında iken üstteki MENÜ çubuğundan INSERT => MODULE yi seçin,
-- Modül'e ait sağdaki boş alana ikinci kod'u yapıştırın.

Kod, GENEL sayfasından ayrıldığınızda otomatik olarak çalışır ve (TABLO adlı sayfa dışındaki sayfaların tümünde) işlemi tamamlar.

NOT: Bir sütunda tek kritere göre filtre uygulandığı varsayılmıştır.

KOD'u SADECE düğme (sayfadaki METİN KUTUSU) üzerinden çalıştırmak isterseniz;
-- birinci kod'u kullanmayın,
-- sayfadaki düğmeye sağ tıklayıp MAKRO ATAyı seçin, açılan küçük ekranda S_FITRELER'i seçip işlemi onaylayın.
.
Kod:
[B]Private Sub Worksheet_Deactivate()[/B]
    Call [COLOR="Red"]S_FILTRELER[/COLOR]
[B]End Sub[/B]
Kod:
[B][COLOR="red"]Sub S_FILTRELER()[/COLOR][/B]
Dim hcr As Range
For Each shf In ThisWorkbook.Sheets
    If shf.Name <> "GENEL" And shf.Name <> "TABLO" Then
        For sut = 1 To 9
        Set hcr = Sheets("GENEL").Cells(1, sut)
            If FKriter(hcr) = "=" Or FKriter(hcr) = "" Then
                shf.Range("$A$1:$I$1").AutoFilter Field:=sut
            Else
                shf.Range("$A$1:$I$1").AutoFilter Field:=sut, Criteria1:=FKriter(hcr)
            End If
        Next
    End If
Next
[B][COLOR="Red"]End Sub[/COLOR][/B]

[B][COLOR="Blue"]Function FKriter(hcr As Range) As String[/COLOR][/B]
Dim Filtre As String
    Filtre = ""
    On Error GoTo Tamam
    With hcr.Parent.AutoFilter
        If Intersect(hcr, .Range) Is Nothing Then GoTo Tamam
        With .Filters(hcr.Column - .Range.Column + 1)
            If Not .On Then GoTo Tamam
            Filtre = .Criteria1
        End With
    End With
Tamam:
FKriter = Filtre
[B][COLOR="Blue"]End Function[/COLOR][/B]

teşekkür ederim hocam..
 
Geri
Üst