• DİKKAT

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

Otomatik süzme ve arama

Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Bir konuda gördüm bir türlü accesse uyarlayamadım

Kod:
Option Explicit

Sub Sil()
    Range("B9:I3000").ClearContents
End Sub


Private Sub TextBox1_Change()
Dim sonsat As Long, Deg As String, hcr As Range, Aln As Range, Code As Boolean
Dim vsyf As Worksheet, renk

    Sheets("ARAMA").Activate
        
        If Range("E3") <> "" Then
            Deg = Range("E3").Value
            
        Else
            MsgBox "BİR ARAMA KRİTERİ GİRİN..."
            Exit Sub
        End If
        
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Set vsyf = Sheets("VERİ")
    Range("A9:I3000").ClearContents


    sonsat = vsyf.Range("A" & Rows.Count).End(xlUp).Row
    vsyf.Range("B2").AutoFilter
    
    vsyf.Range("B2").AutoFilter Field:=3, Criteria1:="=*" & Deg & "*"
    
    vsyf.Range("B2:I" & sonsat).SpecialCells(xlCellTypeVisible).Copy Range("B9")
    vsyf.Range("B2").AutoFilter


    sonsat = Range("B" & Rows.Count).End(xlUp).Row
          Set Aln = Range("C9:C" & sonsat)
        
    For Each hcr In Aln
        renk = InStr(renk + 1, hcr.Text, Deg)
        Do
            If renk > 0 Then
                hcr.Characters(Start:=renk, Length:=Len(Deg)).Font.ColorIndex = 7
            End If
            renk = InStr(renk + 1, hcr.Text, Deg)
        Loop While renk > 0
    Next hcr

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub

Bu kodla aynı çalışma kitabındaki farklı sayfadaki listeyi süzme işlemi yapıyor. Database nasıl uygularım

Örnek dosya ekte. Yardımlarınızı bekliyorum
 

Ekli dosyalar

Konuda ala çözüme ulaşamadım yardımlarınızı bekliyorum
 
Tekrar açıklayım. Yukarıdaki kod aynı çalışmma kitabındaki farklı sayfadaki veri listesini süzüyor. ve listeliyor.

Benim işime en yarayan kısmı ise arama yaparken kelimenin ortasındanda anahtar sözcükleri süzmesi.

Combobox ile yapıyorum kelimenin başı aynıysa anımsayıp süzüyor.

ÖRNEK : Arama > 12
sonuç ; 1254 ; 5124 ; 00012 ;

Tanımlamalar
Kod:
Dim sonsat As Long, Deg As String, hcr As Range, Aln As Range, Code As Boolean
Dim vsyf As Worksheet, renk

Arama hücresinin boş uyarısı
Kod:
 Sheets("ARAMA").Activate
        
        If Range("E3") <> "" Then
            Deg = Range("E3").Value
            
        Else
            MsgBox "BİR ARAMA KRİTERİ GİRİN..."
            Exit Sub
        End If

Listelenecek sayfanın temizlenmesi ve veri süzülcek sayfanın tanımlanması
Kod:
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    
    Set vsyf = Sheets("VERİ")
    Range("A9:I3000").ClearContents

Ama ben listelemeyi Access tablomdan yapacağımdan
Kod:
Set vsyf = Sheets("VERİ")
ihtiyacım olmayacak

Asıl değiştirme yapmak istediğim kısım bu. bu kısımda ADOdb ile Accessdeki tablomu Autofilter yapmak istiyorum
Kod:
sonsat = vsyf.Range("A" & Rows.Count).End(xlUp).Row
    vsyf.Range("B2").AutoFilter
    
    vsyf.Range("B2").AutoFilter Field:=3, Criteria1:="=*" & Deg & "*"
    
    vsyf.Range("B2:I" & sonsat).SpecialCells(xlCellTypeVisible).Copy Range("B9")
    vsyf.Range("B2").AutoFilter


    sonsat = Range("B" & Rows.Count).End(xlUp).Row
          Set Aln = Range("C9:C" & sonsat)

azbucuk bilgim kadarıyla yukardaki kısımda adodb bağlancaz

Kod:
Private Sub CommandButton1_Click()
Dim con As Object, rs As Object
yol = ThisWorkbook.Path & "\DATA.accdb"
Set con = CreateObject("Adodb.connection")
Set rs = CreateObject("Adodb.recordset")
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & yol & ""
rs.Open "select * from [VERİ] where field1='" & Worksheets("ARAMA").Range("E3").Text & "';", con, 1, 1
----
[COLOR="Red"]yapılacak işlem[/COLOR]-----
rs.Close
con.Close
Set rs = Nothing: Set con = Nothing
End Sub


Bu kısımda renklendirme yapıyor. aranan kelimenin bulunan sonuçlardaki yerlerinde
Kod:
   For Each hcr In Aln
        renk = InStr(renk + 1, hcr.Text, Deg)
        Do
            If renk > 0 Then
                hcr.Characters(Start:=renk, Length:=Len(Deg)).Font.ColorIndex = 7
            End If
            renk = InStr(renk + 1, hcr.Text, Deg)
        Loop While renk > 0
    Next hcr

Bu konu hakkında baya araştırma yaptım. Access üstünden dinamik arama yapılıyor. Ama excel üstünden yapmam gerekiyor.

Daha temiz bir örnek ekledim

Yardımlarınızı bekliyorum
 

Ekli dosyalar

  • DATA.rar
    DATA.rar
    119.6 KB · Görüntüleme: 30
Tam istediğinizi hala anlamadım ama sizin aradığınız like operatörü diye düşünüyorum.

Aşağıdaki kodu örnek olması açısından gönderiyorum. Kendi dosyanıza uyarlayabilirsiniz.

Kod:
Sub deneme()
Columns("d:d").Clear

Set con = VBA.CreateObject("adodb.Connection")
Columns("A:A").NumberFormat = "@"

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=no"""

sorgu = "select f1 from [sayfa1$] where f1 like '%12%' "

Set rs = con.Execute(sorgu)

Range("d1").CopyFromRecordset rs

Columns("A:A").NumberFormat = "General"

End Sub
 
Harikasınız. Bugün bir şey daha öğrendim. From WHERE LİKE

Acces ve ADO bir nimet excel için :D

daha fazla şey öğrenmek dileği ile iyi çalışmalar
 
Bişey daha sormak istiyorum. ek olarak

Kod:
Set rs = con.Execute(sorgu)

Range("d1").CopyFromRecordset rs

mesala 12 yazdığımda sonuçları buluyor. 560 tane mesala

ilk 20 sonuç listelenmesi için bi kod ekleyebilirmiyiz
 
merhaba,

Sorgudaki kısmı aşağıdaki ile değiştirin.

Kod:
sorgu = "select top 20 f1 from [sayfa1$] where f1 like '%12%' "
 
Geri
Üst