• DİKKAT

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

Rapor almak

  • Konbuyu başlatan Konbuyu başlatan Barons
  • Başlangıç tarihi Başlangıç tarihi

Barons

Altın Üye
Katılım
14 Mayıs 2005
Mesajlar
967
Excel Vers. ve Dili
Microsoft Ofis 365
merhaba

2 tarih arasında firma adına rapor almak ve bunu listboxda göstermek istiyorum.Gerekirse bir butonla excel rapor sayfasına atmak ve print yapmak istiyorum.

Gereken formları hazırladım ama başlangıç noktasını bilemediğimden çalışmaya start veremedim.

Yardımcı olacak arkadaşlara teşekkürler,saygılar
 

Ekli dosyalar

merhaba

Form üzerine kodlarıda yerleştirdim ancak hata veriyor.Hocalar yardımcı olursa inşallah çözülecek.Dosyayı yeniden gönderiyorum.
Not:Birde Comboboxlar mevcut veri ne kadarsa o kadar dolu oluyor,buna ilaveten mukerrer verileride tek'e düşürme imkanı yokmu acaba?

Teşekkürler
 

Ekli dosyalar

Dosyanız ektedir.:cool:
Kod:
Private Sub CommandButton2_Click()
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Sheets("DataBase")
Set sh2 = Sheets("RAPOR")
ListBox1.RowSource = ""
sh2.Range("A1:M65536").ClearContents
sh1.Range("A1").AutoFilter
sh1.Range("A1").AutoFilter field:=2, Criteria1:=">=" & CLng(CDate(ComboBox2.Value)), _
Operator:=xlAnd, field:=2, Criteria1:="<=" & CLng(CDate(ComboBox3.Value))
If ComboBox1.Value <> "" Then
    sh1.Range("A1").AutoFilter field:=6, Criteria1:=ComboBox1.Value
End If
sh1.Range("A1").CurrentRegion.Copy sh2.Range("A1")
ListBox1.RowSource = "RAPOR!A2:M" & sh2.Cells(65536, "B").End(xlUp).Row
sh1.Range("A1").AutoFilter
TextBox3.Text = Format(WorksheetFunction.Sum(sh2.Range("K2:K65536")), "#,##0.00")
TextBox4.Text = Format(WorksheetFunction.Sum(sh2.Range("L2:L65536")), "#,##0.00")

End Sub

Private Sub UserForm_Initialize()
Dim i As Long, sat As Long, sh As Worksheet
Set sh = Sheets("Database")
sat = sh.Cells(65536, "B").End(xlUp).Row
For i = 2 To sat
    If WorksheetFunction.CountIf(sh.Range("F2:F" & i), sh.Cells(i, "F").Value) = 1 Then
        ComboBox1.AddItem sh.Cells(i, "F").Value
    End If
    If WorksheetFunction.CountIf(sh.Range("B2:B" & i), sh.Cells(i, "B").Value) = 1 Then
        ComboBox2.AddItem Format(sh.Cells(i, "B").Value, "dd.mm.yyyy")
        ComboBox3.AddItem Format(sh.Cells(i, "B").Value, "dd.mm.yyyy")
    End If
Next
If ComboBox1.ListCount > 1 Then ComboBox1.ListIndex = 0
If ComboBox2.ListCount > 1 Then ComboBox2.Value = Format _
(WorksheetFunction.Min(sh.Range("B2:B65536")), "dd.mm.yyyy")
If ComboBox3.ListCount > 1 Then ComboBox3.Value = Format _
(WorksheetFunction.Max(sh.Range("B2:B65536")), "dd.mm.yyyy")
End Sub
 

Ekli dosyalar

Hocam eline sağlık ancak önce tarihsel aralık seçiyorum sonrada firmayı seçtiğimde listenin tamamı geliyor.
Hatta ilk tarihi 12,son tarihide 12 alsam bile listenin tamamı geliyor userforma.

saygılar
 
Ayrıca giriş ve çıkış toplamlarını almak mümkünmüdür?
 
merhaba

2 tarih arasında firma adına rapor almak ve bunu listboxda göstermek istiyorum.Gerekirse bir butonla excel rapor sayfasına atmak ve print yapmak istiyorum.

Gereken formları hazırladım ama başlangıç noktasını bilemediğimden çalışmaya start veremedim.

Yardımcı olacak arkadaşlara teşekkürler,saygılar

Hocam eline sağlık ancak önce tarihsel aralık seçiyorum sonrada firmayı seçtiğimde listenin tamamı geliyor.
Hatta ilk tarihi 12,son tarihide 12 alsam bile listenin tamamı geliyor userforma.

saygılar
Nasıl yani anlamadım.
Soruyu ilk sorduğunuzda ,yukarıdaki mesajınızda görüldüğü üzre ben yaptım.
Yoksa o ilk mesajı siz yazmadınızmı?
Orada görüldüğü üzre 2 tarih aralığında liste isteniyor.
Kodlarda zaten bu isteğinizi yerine getiriyor.
Getirmiyorsa onu söyleyin.:cool:
 
Sn.Hocam...ilginiz için çok teşekkürler...aşağıda problemleri kısaca yazdım.

ben ilk mesajımda şöyle demiştim.
"2 tarih arasında firma adına rapor almak ve bunu listboxda göstermek istiyorum.Gerekirse bir butonla excel rapor sayfasına atmak ve print yapmak istiyorum.
Gereken formları hazırladım....."

sorunlar aşağıdadır.

1. iki tarih aralığında listelemiyor...tüm listeyi veriyor.

2.firma adınada listeleme yapmıyor...

3.ayrıca benim hazırladığım formda gerekli listbox başlıklarını monte etmiştim.sizin metodda ise tüm sayfa başlıklarını listbox'a alıyor.

4. textbox3 ve textbox4 'te ise listbox'da o an listelenen giriş ve çıkış tutarlarının toplamlarını almak istiyorum.

Hocam teşekkürler
 
1 ve 2 maddeleri biraz daha açayım.

önce tarih aralığını seçecek ,daha sonrada firmayı seçip ,rapor al tuşuna basılacak.yani 2 tarih aralığındaki herhangi bir firmanın faaliyetlerini seçmiş olacağım.
 
alternatif olarak
ekli dosyaya bir bakarmısınız

not kodlar alıntıdır.
 

Ekli dosyalar

Sn.Hocam...ilginiz için çok teşekkürler...aşağıda problemleri kısaca yazdım.

ben ilk mesajımda şöyle demiştim.
"2 tarih arasında firma adına rapor almak ve bunu listboxda göstermek istiyorum.Gerekirse bir butonla excel rapor sayfasına atmak ve print yapmak istiyorum.
Gereken formları hazırladım....."

sorunlar aşağıdadır.

1. iki tarih aralığında listelemiyor...tüm listeyi veriyor.

2.firma adınada listeleme yapmıyor...

3.ayrıca benim hazırladığım formda gerekli listbox başlıklarını monte etmiştim.sizin metodda ise tüm sayfa başlıklarını listbox'a alıyor.

4. textbox3 ve textbox4 'te ise listbox'da o an listelenen giriş ve çıkış tutarlarının toplamlarını almak istiyorum.

Hocam teşekkürler

Firmaya göre listeleme yapmıyordu.Ona kod yazmadım.Ama İki tarih aralğında listeleme yapıyordu.Siz benim yoladığım dosyadaamı denediniz çalışmıyor diyorsunuz.Ben defalarca denedim benim yoladığım dosyada sorunsuz çalışıyor.Ama başka bir dosyada ise tarihleriniz tarih değilde metin olabilir.Bu yüzden olabilir.
Şimdi listboxıda düzenledim istediğiniz başlıklar gözüküyor ve Firmaya göre aramayı yda düzenledim.Firmaya göreede arama yapıypor.
Şunuda belirtmek isterim ki .En hızlı listeleme biçimi benim yaptığım size verdiğim yöntemdir.Bunu şimdi anlamayabilirsiniz ama 15 bin 30 bin kayıta ulaştığınızda çok büyük farkla diğer yöntemlerel bu yöntem arasındaki fark ortaya çıkar.Bundan ado ile olan yönemi hariç tuttyorum.:cool:
Dosyayı güncelledim.3ncü mesajdan yindirebilirsiniz.:cool:
 
Hocam süper olmuş..tam istediğim gibi..elinize sağlık
 
Rapor Almak

Sn.Evren hocam,

firmaya göre alma işi tamam...birde Bankaya göre almak istiyorum.Userformda yerini hazırladım.Yardımcı olursanız çok memnun olurum.

teşekkürler
 

Ekli dosyalar

Sn.Evren hocam,

firmaya göre alma işi tamam...birde Bankaya göre almak istiyorum.Userformda yerini hazırladım.Yardımcı olursanız çok memnun olurum.

teşekkürler
Tarih sütunu tarihleri metin olarak saklıyordu.Bu sorun çıkarabilridi.Bunu düzelttim.
İstediğiniz işlemelride yaptım.Dosyanız ektedir.:cool:
Kod:
Function listele(sut As Byte)
TextBox3.text = 0
TextBox4.text = 0
Dim baslangic_tar As Date, bitis_tar As Date, urun As String
Dim i As Long, k As Byte, a As Long

If Not IsDate(ComboBox2.Value) Then
MsgBox "Başlangıç tarihi yanlış veya seçilmedi..", vbCritical, "UYARI"
ComboBox2.SetFocus
Exit Function
End If
If Not IsDate(ComboBox3.Value) Then
MsgBox "Son tarih yanlış veya seçilmedi..!!", vbCritical, "UYARI"
ComboBox3.SetFocus
Exit Function
End If


ListBox1.RowSource = vbNullString
baslangic_tar = CDate(ComboBox2.text)
bitis_tar = CDate(ComboBox3.text)
If sut = 6 Then urun = ComboBox1.Value
If sut = 10 Then urun = ComboBox4.Value
ReDim myarr(1 To 13, 1 To 1)
For i = 2 To Worksheets(ActiveSheet.Name).[a65536].End(3).Row

If sut = 6 And ComboBox1.Value = "" Then urun = Cells(i, sut).Value
If sut = 10 And ComboBox4.Value = "" Then urun = Cells(i, sut).Value
'If Cells(i, 5).Value >= baslangic_tar And Cells(i, 5).Value <= bitis_tar Then

If Cells(i, 2).Value >= baslangic_tar And Cells(i, 2).Value <= bitis_tar And urun = Cells(i, sut).Value Then

say2 = Round(Cells(i, 11), 2)
say3 = Round(Cells(i, 12), 2)

TextBox3.text = TextBox3.text + say2
TextBox4.text = TextBox4.text + say3
TextBox3.text = Format(TextBox3.text, "#,###.00")
TextBox4.text = Format(TextBox4.text, "#,###.00")

a = a + 1

ReDim Preserve myarr(1 To 13, 1 To a)
For k = 1 To 13
myarr(k, a) = Cells(i, k)
Next k
myarr(2, a) = Format(Cells(i, 2).Value, "dd.mm.yyyy")
myarr(11, a) = Format(Cells(i, 11).Value, "#,##0.00")
myarr(12, a) = Format(Cells(i, 12).Value, "#,##0.00")
End If
      
Next i

If a > 0 Then ListBox1.Column = myarr
Erase myarr
End Function
 

Ekli dosyalar

ne diyeyim...Rabbim sana maddeten ve manen yetişsin inşallah...çok teşekkürler
 
hocam herşey mükemmel...sadece bir küçük nokta kaldı...Rapor sayfasına aktarma sonrası (özellikle bankaya göre rapor almada oluyor sanırım) ,Rapor sayfasında giriş ve çıkış tutarlarının sol üst köşelerinde yeşil bir tırnak oluşuyor.metin olarak yazdırıyor.Ben manuel olarak bu iki sütunu sayıya çevir diyorum.Bunu önlemek mümkünmüdür?
i
 
hocam herşey mükemmel...sadece bir küçük nokta kaldı...Rapor sayfasına aktarma sonrası (özellikle bankaya göre rapor almada oluyor sanırım) ,Rapor sayfasında giriş ve çıkış tutarlarının sol üst köşelerinde yeşil bir tırnak oluşuyor.metin olarak yazdırıyor.Ben manuel olarak bu iki sütunu sayıya çevir diyorum.Bunu önlemek mümkünmüdür?
i
Dosyayı güncelledim.:cool:
13 numaralı mesajdan dosyayı indirebilirsiniz.:cool:
 
Geri
Üst