Liste sayfasındaki verileri ana sayfadaki şablonda görebilmek. (Makro ve ActiveX kullanarak)

Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Merhaba değerli forum üyeleri,



* Sadede Sicil numarası girişi yapıp Göster butonuna bastığımda alttaki çizelgede ilgili sicil numarası

* Sadece Ad-Soyadı girişi yapıp Göster butonuna bastığımda alttaki çizelgede Ad-Soyadı

olarak çağırabilecek.

* Kutucuklardan hangisi seçersem o ünvan grubuna ait kişiler sadece listelenebilecek

* Hepsi seçeneği seçildiğinde liste sayfasında ne varsa her şeyi getirebilecek



Daha önce buna benzer bir excel kitabını alıp kendime uyarlamaya çalıştım ama başarılı olamadım.

Makroları ne yaptıysam doğru düzgün çalıştıramadım.

Bu konuda yardımcı olursanız çok sevinirim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1. Eklediğiniz dosyada, burada yazdıklarınız haricinde istekler var. Onları dikkate almayacağız di mi?
2. Eklediğiniz dosyada, Hem Adı Soyadı hem de Sicil nosu aynı anda yazılmışsa ilk hangisini dikkate alacağız?
3. Gerçek Kadro (C7) hücresi neden var? Sonuçta OptionButtonlar zaten bu işi yapıyor?
4. Fiili Kadro (B8:C8) hücreleri neden var? Sorunuzda böyle bir şart filtreden bahsetmemişsiniz.

Bunları açıklamanızı hızlı ve doğru çözümü bir önce sunmak için istiyorum.
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Ömer Bey Merhaba,
Öncelikle dönüş yaptığınız için çok teşekkür ediyorum size. Gerçekten çok sağolun.
1- En doğru şekilde özetleyeyim;
* Sadece sicil numarası yazdığında ya da sadece Ad-Soyadı kullanıldığında Göster butonu tek tek işlem yapmalı. Arama ya Sicil den ya da Ad-Soyadı yazılarak olacak ikisinin beraber yazılıp çalışmasına gerek yok. Hangisi yazılıp buton kullanılırsa aşağıda listelenmesi yeterli.
* Gerçek Kadronun yanındaki seçmeli kutucukların hangisi seçersem o kadro grubuna mensup personelleri aşağıda listelemeli. ( Sadece Hepsi kutucuğu işaretlendiğinde Liste sayfasında ne kadar personel varsa hepsini aşağıda listelemeli)
* Fiili Kadro kısmına X yazıp Göster butonuna tıkladığımda Liste sayfasındaki fiili kadrosu olan personellerin hepsini listelemeli. Demek istediğim Gerçek ünvanı dışında fiilini ünvanı ile çalışan personelleri görebilmek.

2- Eğer böyle bir durum yapılabilirse aslında gerek yok ama çok zaman almıyor ise ilk sicil noyu baz alabilir.
3-Gerçek Kadro hücresi sadece sağındaki kutucukları Gerçek kadro olarak seçildiğini belirtmek için var yani o kutuculukların karşılığı gerçek kadroyu temsil ettiği için.

4- Fiili kadroda 1. açıklamamda belirttiğim gibi oraya X yazdığımda Göstere tıkladığımda Liste sayfasındaki Fiili kadro ile çalışan personellerin listelenmesini sağlamak.

Birde şu var Ömer Bey,
Silemiyorum dediğim 2 tane yer var ne yaptımsa silemedim.
A-B-C-D-E-F-G kutucuklarının isimlerini ben değiştireceğim daha sonra.
Audi-Mercedees-Bmw vs. gibi araba marka başlıklarını Hem Arama sayfasından hemde Liste sayfasından değiştireceğim.
Bulundukları hücreleri aynı kalacak.
Bu tür başlık değişimlerinde makrolar çalışmaya devam eder mi?
Çünkü kaynak excelde değiştirdiğimde kutucukları falan çalıştıramamıştım.

Şimdiden gösterdiğiniz incelik, ayırdığınız zaman ve yardımlarınız için çok teşekkür eder, mutlu günler dilerim.
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
1. Eklediğiniz dosyada, burada yazdıklarınız haricinde istekler var. Onları dikkate almayacağız di mi?
2. Eklediğiniz dosyada, Hem Adı Soyadı hem de Sicil nosu aynı anda yazılmışsa ilk hangisini dikkate alacağız?
3. Gerçek Kadro (C7) hücresi neden var? Sonuçta OptionButtonlar zaten bu işi yapıyor?
4. Fiili Kadro (B8:C8) hücreleri neden var? Sorunuzda böyle bir şart filtreden bahsetmemişsiniz.

Bunları açıklamanızı hızlı ve doğru çözümü bir önce sunmak için istiyorum.
Ömer Bey Merhaba,
Öncelikle dönüş yaptığınız için çok teşekkür ediyorum size. Gerçekten çok sağolun.
1- En doğru şekilde özetleyeyim;
* Sadece sicil numarası yazdığında ya da sadece Ad-Soyadı kullanıldığında Göster butonu tek tek işlem yapmalı. Arama ya Sicil den ya da Ad-Soyadı yazılarak olacak ikisinin beraber yazılıp çalışmasına gerek yok. Hangisi yazılıp buton kullanılırsa aşağıda listelenmesi yeterli.
* Gerçek Kadronun yanındaki seçmeli kutucukların hangisi seçersem o kadro grubuna mensup personelleri aşağıda listelemeli. ( Sadece Hepsi kutucuğu işaretlendiğinde Liste sayfasında ne kadar personel varsa hepsini aşağıda listelemeli)
* Fiili Kadro kısmına X yazıp Göster butonuna tıkladığımda Liste sayfasındaki fiili kadrosu olan personellerin hepsini listelemeli. Demek istediğim Gerçek ünvanı dışında fiilini ünvanı ile çalışan personelleri görebilmek.

2- Eğer böyle bir durum yapılabilirse aslında gerek yok ama çok zaman almıyor ise ilk sicil noyu baz alabilir.
3-Gerçek Kadro hücresi sadece sağındaki kutucukları Gerçek kadro olarak seçildiğini belirtmek için var yani o kutuculukların karşılığı gerçek kadroyu temsil ettiği için.

4- Fiili kadroda 1. açıklamamda belirttiğim gibi oraya X yazdığımda Göstere tıkladığımda Liste sayfasındaki Fiili kadro ile çalışan personellerin listelenmesini sağlamak.

Birde şu var Ömer Bey,
Silemiyorum dediğim 2 tane yer var ne yaptımsa silemedim.
A-B-C-D-E-F-G kutucuklarının isimlerini ben değiştireceğim daha sonra.
Audi-Mercedees-Bmw vs. gibi araba marka başlıklarını Hem Arama sayfasından hemde Liste sayfasından değiştireceğim.
Bulundukları hücreleri aynı kalacak.
Bu tür başlık değişimlerinde makrolar çalışmaya devam eder mi?
Çünkü kaynak excelde değiştirdiğimde kutucukları falan çalıştıramamıştım.

Şimdiden gösterdiğiniz incelik, ayırdığınız zaman ve yardımlarınız için çok teşekkür eder, mutlu günler dilerim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sayfanızda format değiştirdim.
Silinmesini istediğiniz Grup Kutularını kendi mousumla yakalayıp sildim.
Var olan tüm kodlarınızı sildim, sıkıntı çıkartıyordu.
Arama sayfasının Change olayına da kodlar ekledim, kriterleri yazın diye. Sadece Bir Kriter seçebiliyorsunuz.
Gerçek kadro seçimi için E1 hücresinde Veri Doğrulama kullandım.

Kodlar aşağıda, Dosyanız Ekte.

C++:
Sub GösterYeni()
Dim xRow As Integer, xCol As Integer, xBak As Byte, i As Integer, k As Integer, Say As Integer
Dim Liste(), Veri As Variant
    If WorksheetFunction.CountA(Range("B1,B2,E1,E2")) <> 1 Then
        MsgBox "Eksik/Fazla Filtre Kriteri Var"
        Exit Sub
    End If
    Range("A5:XFD" & Rows.Count).Clear
    Set Sh = Sheets("Liste")
    xRow = Sh.Range("B" & Rows.Count).End(3).Row
    xCol = Sh.Range("B1").End(2).Column
    Veri = Sh.Range(Sh.Cells(2, 2), Sh.Cells(xRow, xCol)).Value
    ReDim Liste(1 To UBound(Veri, 1), 1 To xCol - 1)
    
    If Range("B1") <> "" Then
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 1) = Range("B1") Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next i
    ElseIf Range("B2") <> "" Then
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 2) = UCase(Range("B2")) Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next
    ElseIf Range("E1") <> "" Then
        If Range("E1") = "HEPSİ" Then
            For i = LBound(Veri) To UBound(Veri)
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            Next
        Else
            For i = LBound(Veri) To UBound(Veri)
                If Veri(i, 3) = UCase(Range("E1")) Then
                    Say = Say + 1
                    For k = 1 To xCol - 1
                        Liste(Say, k) = Veri(i, k)
                    Next k
                End If
            Next
        End If
    Else
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 4) <> "" Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next
    End If

    If Say > 0 Then
        Range("A5").Resize(Say, k - 1).Value = Liste
    Else
        Exit Sub
    End If
    With Range("A5").Resize(Say, k - 1)
        .VerticalAlignment = 2
        .RowHeight = 20
        .Font.Size = 10
        .Font.Bold = False
        .Borders.LineStyle = xlContinious
        .Borders.Weight = xlThin
    End With
    Range("A5").Resize(Say, 2).HorizontalAlignment = 2
    Range("A5").Resize(Say, 2).InsertIndent 1
    Range("C5").Resize(Say, k - 2).HorizontalAlignment = 3
End Sub
 

Ekli dosyalar

Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Sayfanızda format değiştirdim.
Silinmesini istediğiniz Grup Kutularını kendi mousumla yakalayıp sildim.
Var olan tüm kodlarınızı sildim, sıkıntı çıkartıyordu.
Arama sayfasının Change olayına da kodlar ekledim, kriterleri yazın diye. Sadece Bir Kriter seçebiliyorsunuz.
Gerçek kadro seçimi için E1 hücresinde Veri Doğrulama kullandım.

Kodlar aşağıda, Dosyanız Ekte.

C++:
Sub GösterYeni()
Dim xRow As Integer, xCol As Integer, xBak As Byte, i As Integer, k As Integer, Say As Integer
Dim Liste(), Veri As Variant
    If WorksheetFunction.CountA(Range("B1,B2,E1,E2")) <> 1 Then
        MsgBox "Eksik/Fazla Filtre Kriteri Var"
        Exit Sub
    End If
    Range("A5:XFD" & Rows.Count).Clear
    Set Sh = Sheets("Liste")
    xRow = Sh.Range("B" & Rows.Count).End(3).Row
    xCol = Sh.Range("B1").End(2).Column
    Veri = Sh.Range(Sh.Cells(2, 2), Sh.Cells(xRow, xCol)).Value
    ReDim Liste(1 To UBound(Veri, 1), 1 To xCol - 1)
   
    If Range("B1") <> "" Then
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 1) = Range("B1") Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next i
    ElseIf Range("B2") <> "" Then
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 2) = UCase(Range("B2")) Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next
    ElseIf Range("E1") <> "" Then
        If Range("E1") = "HEPSİ" Then
            For i = LBound(Veri) To UBound(Veri)
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            Next
        Else
            For i = LBound(Veri) To UBound(Veri)
                If Veri(i, 3) = UCase(Range("E1")) Then
                    Say = Say + 1
                    For k = 1 To xCol - 1
                        Liste(Say, k) = Veri(i, k)
                    Next k
                End If
            Next
        End If
    Else
        For i = LBound(Veri) To UBound(Veri)
            If Veri(i, 4) <> "" Then
                Say = Say + 1
                For k = 1 To xCol - 1
                    Liste(Say, k) = Veri(i, k)
                Next k
            End If
        Next
    End If

    If Say > 0 Then
        Range("A5").Resize(Say, k - 1).Value = Liste
    Else
        Exit Sub
    End If
    With Range("A5").Resize(Say, k - 1)
        .VerticalAlignment = 2
        .RowHeight = 20
        .Font.Size = 10
        .Font.Bold = False
        .Borders.LineStyle = xlContinious
        .Borders.Weight = xlThin
    End With
    Range("A5").Resize(Say, 2).HorizontalAlignment = 2
    Range("A5").Resize(Say, 2).InsertIndent 1
    Range("C5").Resize(Say, k - 2).HorizontalAlignment = 3
End Sub
Ömer Bey Merhaba,
Gerçekten çok teşekkür ederim. Emeğiniz ve vakit ayırdığınız için teşekkür ederim. Denedim değiştirmek istediğim yerleri değiştirdim tıkır tıkır işliyor.

Sadece 2 sorum olacaktı.
1: Adı-Soyadı kısmına personel bilgisi girdiğimde Örnek ALİ VELİ Filtrele/Göstere tıkladığımda listeye getiriyor. Ama Adı-Soyadı kısmındaki yazı şu şekli alıyor Alİ Velİ bu görselliği ve buna benzer oluşacak görsellikleri nasıl düzeltebilirim?
2: Gerçek Kadro kısmını veri doğrulama ile gerçekleştiriyoruz listeden seçmeli. Kutucuk işaretlemeli düzenden bu düzene revize etmişsiniz. Kutucuklu düzen olmadı mı yoksa gereksinim mi duymadınız?

Mutlu Hafta sonları dilerim.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba,

1. Büyük Harf.
Türkçe yazım kurallarına uymamaları
ve Okunaklı olmamaları sebebiyle tamamı BÜYÜK harf olan ifadeleri tercih etmiyorum. Eski verileriniz tamamen büyük harf olduğu için de KOD yapısında BÜYÜK harfle sorguluyorum. Tercih sizin. Ben büyük harf yapacağım diyorsanız Worksheet.Change olayında bu ve benzer kısımlardı ":" dan itibaren satır sonuna kadar silebilirsin.
C++:
: Range("B2") = StrConv(Range("B2"), vbUpperCase)
2. Option Buttonların Kaldırılması.
Sorunuzun Gerekçeleri
2a
. Sabit sayfasında mevcutta bulunan Gerçek Kadro etiketlerini değiştirmek istediğinizde sıkıntılar çıkacak ilave bir sürü Kod geregecekti.
2b. Gerçek Kadrolara ilave bir harf eklemek istediğinizde option button da ilave etmek zorunda kalacak, tüm görseliniz ve kodlarınız revize olacaktı.

Size sağladığı avantajlar.
2c
. Mevcut yaptığım haliyle bu revizyonların hiç birine ihtiyacınız yok. Sabit sayfası A sütununda 1.satır başlık kalmak ve satır aralarında boşluk bırakmamak kaydıyla, tüm A sütunu satırlarında istediğiniz ilaveyi ya da değişikliği yapabilirsiniz.
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Merhaba,

1. Büyük Harf.
Türkçe yazım kurallarına uymamaları
ve Okunaklı olmamaları sebebiyle tamamı BÜYÜK harf olan ifadeleri tercih etmiyorum. Eski verileriniz tamamen büyük harf olduğu için de KOD yapısında BÜYÜK harfle sorguluyorum. Tercih sizin. Ben büyük harf yapacağım diyorsanız Worksheet.Change olayında bu ve benzer kısımlardı ":" dan itibaren satır sonuna kadar silebilirsin.
C++:
: Range("B2") = StrConv(Range("B2"), vbUpperCase)
2. Option Buttonların Kaldırılması.
Sorunuzun Gerekçeleri
2a
. Sabit sayfasında mevcutta bulunan Gerçek Kadro etiketlerini değiştirmek istediğinizde sıkıntılar çıkacak ilave bir sürü Kod geregecekti.
2b. Gerçek Kadrolara ilave bir harf eklemek istediğinizde option button da ilave etmek zorunda kalacak, tüm görseliniz ve kodlarınız revize olacaktı.

Size sağladığı avantajlar.
2c
. Mevcut yaptığım haliyle bu revizyonların hiç birine ihtiyacınız yok. Sabit sayfası A sütununda 1.satır başlık kalmak ve satır aralarında boşluk bırakmamak kaydıyla, tüm A sütunu satırlarında istediğiniz ilaveyi ya da değişikliği yapabilirsiniz.
Gerçekten çok teşekkürler. İlerisini görüp ona göre insiyatifle revize yapmanız bizi düşünmeniz çok güzel bir durum. Tekrardan ellerinize sağlık.
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
ADO ile alternatif olsun.

Birden fazla kriter girerseniz hepsine göre işlem yapar.
Korhan Bey Merhaba,

Alternatif için teşekkür ederim. Lakin Sicil Noya 4 yazdıysam 14-24-34- gibi numaralarda geliyor.
Gerçek Kadro kısmında C yazdığımda C dışında olan pozisyon bilgisi de geliyor.

Bilginiz olsun Korhan Bey,

Sağlıcakla kalın.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Doğrudur. Kutucukların üstüne geldiğinizde açıklama bölümünde hangi yöntemle arama yaptığı yazıyor. Dilenirse değiştirilebilir.
 
Katılım
6 Mayıs 2020
Mesajlar
205
Excel Vers. ve Dili
Microsoft Office 365 E3
Altın Üyelik Bitiş Tarihi
01-10-2024
Teşekkürler Korhan Bey,

Sizinde emeğinize sağlık.

Sağlıcakla kalın.
 
Üst