• DİKKAT

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

rapor alma

Katılım
3 Ekim 2013
Mesajlar
107
Excel Vers. ve Dili
2010 ve türkçe
arkadaşlar merhaba,

ekte örnek dosyayı ekledim

userform da rapor al butonuna tıkladığımda "sayfa1 deki D sütununda" bulunan tarihler arasında istediğim iki tarih aralığını filtreleyip ayrı bir excell dosyası olarak; yine dosyanın bulunduğu aynı yerdeki "raporlar" isimli klasöre kaydetsin istiyorum.

tabi filtreden sonra filtreli olarak oluşturulan excell dosyasında eski dosyadaki başlık kısımları da olsun. (yani sıra no, adı miat tarihi vs.)

girilecek tarihler userformda oluşturduğum iki textbox da olacak.

not.: filtrelenmiş bir şekilde yeni oluşturmak istediğim excell dosyası yerine rapor al dediğimde karşıma kopyala yapıştır seçeneğini kullanabileceğim bir pencerede de çıkarsa veriler, o da işimi görür.
 

Ekli dosyalar

Merhaba, aşağıdaki kodu deneyiniz...
Kod:
Private Sub CommandButton1_Click()
Set alan = Range("A1:E1")
For a = 2 To Range("A65500").End(3).Row
    If Cells(a, "D") >= DateValue(TextBox1) And Cells(a, "D") <= DateValue(TextBox2) Then
        Set alan = Union(alan, Range("A" & a & ":E" & a))
    End If
Next
If alan.Cells.Count = 5 Then
    MsgBox "Belirtilen aralıkta veri bulunamadı."
    Exit Sub
End If
Set s1 = ActiveSheet
Set w1 = Workbooks.Add
alan.Copy w1.Sheets(1).Range("A1")

s1.Columns("A:E").Copy
w1.Sheets(1).Columns("A:E").PasteSpecial Paste:=xlPasteFormats
w1.Sheets(1).Range("A1:E1").AutoFilter
w1.SaveAs Filename:=ThisWorkbook.Path & "\raporlar\" & TextBox1 & "-" & TextBox2 & ".xls", _
         FileFormat:=xlExcel8
w1.Close
Set alan = Nothing

End Sub
 
1. 1 numaralı mesajdaki eklediğim demo olan excell dosyasına ilgili kodları yapıştırınca istediğim gibi oldu ancak, bunu benim kendi dosyama (raporlama bölümüne) uyarlamaya çalışırken sorunla karşılaştım. yani istediğim olmuyor. nerede hata yapıyorum bulamadım. (yeni dosyayı ek'te gönderdim)

2. bu dosyayla ilgili bir isteğim daha var. user formda oluşturduğum "BUL" butonuna basınca kayıt no da yazan numaralı kaydı bulsun ve kayıtla ilgili diğer bilgileri ilgili textbox ve combobox lara getirsin. "DEĞİŞTİR" butonuna basınca da üzerinde yaptığım değişikliği yine aynı satıra kaydetsin.

3. userformdaki yönetici butonunun şifresi "0" 'dır.
 
A sütununuz boş olduğu için döngüye girilmiyor. İlgili satırı şu şekilde
Kod:
For a = 3 To Range("[COLOR="Red"]B[/COLOR]65500").End(3).Row

Dosyanız E sütunundaki veriler metin biçiminde olduğu için kod textboxlar ile kıyaslama yapamıyor. İlgili satırı şu şekilde:
Kod:
If [COLOR="red"]DateValue([/COLOR]Cells(a, "E")[COLOR="red"])[/COLOR] >= DateValue(TextBox5) And [COLOR="red"]DateValue([/COLOR]Cells(a, "E")[COLOR="red"])[/COLOR] <= DateValue(TextBox6) Then

Bir de herhangi bir veri bulunamadığı durumda kontrolü alan içinde bulunan hücre sayıları ile sağlamak istemiştim. Siz ilk alan değerini değiştirdiğiniz için ilgili satırı şu şekilde değiştiriniz.
Kod:
If alan.Cells.Count = [COLOR="red"]12[/COLOR] Then
 
Diğer sorunuz için de:
Kod:
Dim satır As Long
Bu kodu userform kodlarının en tepesine yazınız.
Bunlar da bul kodları:
Kod:
Private Sub CommandButton5_Click()
On Error Resume Next
satır = Empty
If TextBox1.Text = Empty Then
    MsgBox "Lütfen Kayıt No Giriniz" & vbLf & "Değişim Sağlanamadı", vbCritical, "UYARI"
Else
    satır = Range("B:B").Find(TextBox1, lookat:=xlWhole).Row
    If satır = Empty Then
        MsgBox "Kayıt no bulunamadı."
    Else
        TextBox2 = Cells(satır, "C")
        TextBox3 = Cells(satır, "E")
        TextBox4 = Cells(satır, "D")
        ComboBox1 = Cells(satır, "F")
    End If
End If
End Sub
Değiştir kodları:
Kod:
Private Sub CommandButton7_Click()
Cells(satır, "C") = TextBox2
Cells(satır, "E") = TextBox3
Cells(satır, "D") = TextBox4
Cells(satır, "F") = ComboBox1
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
ComboBox1 = ""
MsgBox "Değiştirildi."
End Sub
 
Son düzenleme:
verdiğiniz kodlar mükemmel bir şekilde çalışıyor. teşekkür ederim.

bir iki sorum daha olacak

1. E sütununa göre girdiğimiz tarih aralığını rapor olarak aldıktan sonra yeni oluşturduğumuz excell dosyasındaki verileri yine "E" sütunundaki tarih verilerine göre eskiden yeniye veya yeniden eskiye otomatik sıralanmasını nasıl yaparız?

2. aldığımız yeni excell sayfasında şöyle bir şey olmasını istiyorum. örn: 5 tane kayıt var ise s.no hanesi dolu olan bilgiler kadar numaralasın. 32 tane kayıt süzülmüş ise s.no. 32 ye kadar yazılsın. gibi.

3. TextBox1'e yazdığımız numara ve bağlı diğer bilgileri eğer daha önce kaydedilmiş ise "ilgili evrak daha önce kaydedilmiş" şeklinde bir uyarı almak istiyorum. kontrol olarak yalnızca TextBox1'i baz alsa benim için yeterli.
 
8 numaralı mesajımdaki 1. sorumu yani tarihe göre filtreleme sorununu makro çalıştırarak çözdüm ancak diğerleri hakkında yardımlarınızı bekliyorum.
 
Geri
Üst