Başka sayfaya Rapor

Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Arkadaşlar;
Bana bir makro lazım.Ben bu işlemi formül ile yaptırdım.Fakat işlemi üzerine uyguladığım form ile açtırmam 30 dk ları buluyor.Hemen anlatmaya başlıyorum.
Elimizde "Form" ve "Rapor" adlı iki sayfa var. "Form" sayfasının "J" sütunundaki sayı değeri olabilirde olmaya bilirde.(Bunu söylememin sebebi raporlamada boşlukarı vermeyecek) Eğer sayı değeri varsa önce "Form" sayfasındaki o satırın "A:J" arasındaki hücreleri aynen "Rapor" sayfasına kopyalayacak.Sonrada "K" sütunundan başlayarak "J" değeri kadar "A" sütununa (bu sütun tarih içeriyor) ekliyerek devam edecek.
Örneğin "Form!J1"in değeri 3, "Form!A1"de 1 Ocak 2000 olsun. "Rapor!K" 1 Şubat 2000, "Rapor!L" de 1 Mart 2000 olacak.
Yardımlarınız ve vakit ayırdığınız için şimdiden çok teşekkür ederim.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Sonuçlarıda gösterilmiş küçük bir örnek dosya ekleyebilirmisiniz?
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Yardımınız ve zaman ayırdığınız için çok teşekkür ederim.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Aşağıdaki kodları deneyiniz.

Kod:
Sub Aktar()
Set s1 = Sheets("Form")
Set s2 = Sheets("Rapor")
s2.Range("a2:as1000").ClearContents
For i = 3 To s1.[j65536].End(3).Row
    If s1.Cells(i, "j").Value > 1 Then
        sat = s2.[a65536].End(3).Row + 1
        Range(s2.Cells(sat, "a"), s2.Cells(sat, "I")).Value = Range(s1.Cells(i, "b"), s1.Cells(i, "j")).Value
        s2.Cells(sat, "j").Value = s1.Cells(i, "a").Value
        For j = 1 To s1.Cells(i, "j").Value - 1
            tar = s2.Cells(sat, 9 + j).Value
            s2.Cells(sat, 10 + j).Value = CDate(Day(tar) & "/" & Month(tar) + 1 & "/" & Year(tar))
        Next j
    End If
Next i
MsgBox "Bitti"
Set s1 = Nothing
Set s2 = Nothing
End Sub
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Sayın hocam,
program üzerinde taksit sayısı değerlerinde oynama yaptığımızda program hata veriyor.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Ne yaptığınızda nasıl bir hata veriyor?
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
gönderdiğiniz örnekte taksit sayılarında değişiklikler yapın. Örneğin ilk taksit sutununa 36 deyin.raporlama yaptığınızda hata veriyor
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Koldarı aşağıdaki şekilde değiştiriniz.
Kod:
Sub Aktar()
Set s1 = Sheets("Form")  
Set s2 = Sheets("Rapor")
s2.Range("a2:as1000").ClearContents
For i = 3 To s1.[j65536].End(3).Row [COLOR=blue]'Form sayfasının 3.satırından j kolonunun son dolu[/COLOR] hücresine kadar
    If s1.Cells(i, "j").Value > 1 Then  [COLOR=blue]'eğer hücre 1'den büyük ise [/COLOR]
        sat = s2.[a65536].End(3).Row + 1 [COLOR=blue]'Rapor sayfasındaki son dolu hücresinin 1 fazlasına[/COLOR]
        Range(s2.Cells(sat, "a"), s2.Cells(sat, "I")).Value = Range(s1.Cells(i, "b"), s1.Cells(i, "j")).Value  '[COLOR=blue] Bu satırı kopyala[/COLOR]
        s2.Cells(sat, "j").Value = s1.Cells(i, "a").Value ' [COLOR=blue]Form sayfasının j kolonuna Rapor sayfasının a kolonunu kopyalaya[/COLOR]
        For j = 1 To s1.Cells(i, "j").Value - 1 ' [COLOR=blue]1'den taksit sayısının 1 eksiğine kadar.[/COLOR]
            tar = s2.Cells(sat, 9 + j).Value [COLOR=blue]' ilgili tarih tar değişgenine aktarılıyor[/COLOR]
            If Month(tar) + 1 < 13 Then [COLOR=blue]'&#304;lgili tarihin ay&#305; 12'den k&#252;&#231;&#252;k ise[/COLOR]
            ytar = CDate(Day(tar) & "/" & Month(tar) + 1 & "/" & Year(tar)) ' [COLOR=blue]Tarihe 1 ay ekle[/COLOR]
            Else
            ytar = CDate(Day(tar) & "/" & 1 & "/" & Year(tar) + 1) [COLOR=blue]'De&#287;il ise tarihi Ocak ve 1 y&#305;l sonras&#305;n&#305; yap[/COLOR]
            End If
            s2.Cells(sat, 10 + j).Value = ytar ' [COLOR=blue]sa&#287;a do&#287;ru ilgili kolona yeni tarihi yaz.[/COLOR]
        Next j
    End If
Next i
MsgBox "Bitti"
Set s1 = Nothing
Set s2 = Nothing
End Sub
 
Son düzenleme:
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Say&#305;n Ripek,
Allah raz&#305; olsun. Makrodan anlamad&#305;&#287;&#305;m i&#231;in g&#252;nlerdir u&#287;ra&#351;&#305;yordum. Belki komik gelecek ama art&#305;k kodlar&#305; r&#252;yalar&#305;mda bile g&#246;rmeye ba&#351;lam&#305;&#351;t&#305;m. Sayenizde program&#305;m&#305; tamamlad&#305;m. Ellerinize sa&#287;l&#305;k. Tekrar tekrar te&#351;ekk&#252;r ederim.
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Say&#305;n hocam,
E&#287;er mahsuru yoksa form&#252;llerin a&#231;&#305;klamas&#305;n&#305; eklermisiniz. B&#246;ylece benim gibi kodlamay&#305; &#246;&#287;renmeye &#231;al&#305;&#351;an arka&#351;lara yard&#305;mc&#305; olmu&#351; oluruz.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Dilimiz d&#246;nd&#252;&#287;&#252; kadar&#305;yla ilgili a&#231;&#305;klamalar&#305; yazmaya &#231;al&#305;&#351;t&#305;m.
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Kendi çalışmamı ekliyorum. Acaba "Ayarlar" bölümü etkilermi.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Makronun &#231;al&#305;&#351;mas&#305; i&#231;in B kolonundaki Hesap Sahibi bilgilerinin dolu olmas&#305; gerekmektedir.

Yaln&#305;z burada &#351;u &#351;ekil bir problem ortaya &#231;&#305;kt&#305;.

&#304;&#351;lem Tarihi 31 veya 28-29 &#350;ubat'a denk geliyorsa di&#287;er aylarda bu g&#252;nler olmad&#305;&#287;&#305; i&#231;in do&#287;al olarak kodlar hata vermektedir.

Taksit g&#252;nleri mutlaka her ay&#305;n ayn&#305; g&#252;n&#252; m&#252; olmas&#305; gerekiyor?
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Hay&#305;r.Zaten g&#246;rece&#287;iniz gibi bu bir taksitlendirme program&#305;.Do&#287;al olarak 29 &#351;ubat'a denk gelenlerler 1 ine devredebilir. 31 &#231;ekenlerde ide ayn&#305; &#351;ekilde 1 ine devredebilir. Birde dikkatimi &#231;eken 1 girilen de&#287;erlerde rapor k&#305;sm&#305;na ge&#231;miyor. yani raporlamaya &#231;&#305;km&#305;yor. Bu arada dedi&#287;iniz gibi B s&#252;tununa de&#287;er girince problem yok.
 
Son düzenleme:
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
O zaman kodlar&#305; a&#351;a&#287;&#305;daki &#351;ekilde de&#287;i&#351;tiriniz.

Kod:
Sub Aktar()
Set s1 = Sheets("Form")
Set s2 = Sheets("Rapor")
s2.Range("a2:as1000").ClearContents
For i = 3 To s1.[j65536].End(3).Row 'Form sayfas&#305;n&#305;n 3.sat&#305;r&#305;ndan j kolonunun son dolu h&#252;cresine kadar
    If s1.Cells(i, "j").Value <> "" Then  'e&#287;er h&#252;cre 1'den b&#252;y&#252;k ise
        sat = s2.[a65536].End(3).Row + 1 'Rapor sayfas&#305;ndaki son dolu h&#252;cresinin 1 fazlas&#305;na
        Range(s2.Cells(sat, "a"), s2.Cells(sat, "I")).Value = Range(s1.Cells(i, "b"), s1.Cells(i, "j")).Value  ' Bu sat&#305;r&#305; kopyala
        s2.Cells(sat, "j").Value = s1.Cells(i, "a").Value ' Form sayfas&#305;n&#305;n j kolonuna Rapor sayfas&#305;n&#305;n a kolonunu kopyalaya
        For j = 1 To s1.Cells(i, "j").Value - 1 ' 1'den taksit say&#305;s&#305;n&#305;n 1 eksi&#287;ine kadar.
            tar = CDate(s2.Cells(sat, 9 + j).Value) ' ilgili tarih tar de&#287;i&#351;genine aktar&#305;l&#305;yor
            s2.Cells(sat, 10 + j).Value = DateSerial(Year(tar), Month(tar) + 1, Day(tar)) ' sa&#287;a do&#287;ru ilgili tarihin 1 ay sonras&#305;n&#305; kolona  yaz.
        Next j
    End If
Next i
MsgBox "Bitti"
Set s1 = Nothing
Set s2 = Nothing
End Sub
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Hocam, 30 ve 31 giri&#351;lilerde 3 g&#252;n 1 ay kayd&#305;r&#305;yor.
30 Ocak>2 Mart olarak &#231;&#305;k&#305;yor
31 Ocak>3 Mart olarak &#231;&#305;k&#305;yor
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
28-29 &#350;ubat'tan kaynaklan&#305;yor.
Ba&#351;ka &#231;&#246;z&#252;m bulmak i&#231;in biraz &#252;zerinde &#231;al&#305;&#351;mak gerekiyor..
 
Katılım
16 Ekim 2007
Mesajlar
143
Excel Vers. ve Dili
EXCEL 2003 TR
Vakit ay&#305;rd&#305;&#287;&#305;n&#305;z i&#231;in te&#351;ekk&#252;r ederim Hocam. Ben ba&#351;tada s&#246;yledi&#287;im gibi bunu form&#252;lle halletmi&#351;tim. Fakat; hem 300 MB lar&#305; bulan dosya boyutu, hemde sayfay&#305; form ile s&#252;zmeye kalkt&#305;&#287;&#305;mda 25-30 dk lar&#305; bulan form a&#231;&#305;lmas&#305; sebebi ile bunun tek yolunun makro olaca&#287;&#305; d&#252;&#351;&#252;n&#252;yorum.
 
Üst