BİrÇok Sayfadan Belİrlİ(seÇİlen)sayfaya Verİ Aktarimi

Katılım
18 Ocak 2007
Mesajlar
164
Excel Vers. ve Dili
ofis 2007 türkçe
arkadaşlar aynı konuyu 3.kez açıyorum özellikle makro yu bilen ve biraz daha excel konusunda ileri arkadaşlar bu konu özellikle size çünkü işin içinden çıkamadım.şimdi arkadaşlar çok basit olarak benim 70 sayfalık çalışma kitabım var ben bu sayfalara veri doğrulama ile açılır sayfa yaptım,açılır sayfada tanımladığım veri adlarının aynısından sayfalara isim verdim (mesela 22/d mal,22/dhizmet diye açılır liste seçeneği yaptım ve 22/mal,22/dhizmet diyede sayfalara isim verdim) şimdi ben bu yaklaşık 62 tane sayfalara veri gireceğim ve en sonunda bu açılır listeden seçtiğim sayfa ismindeki sayfalara o verileri kopyalacak,(burada önemli bir nokta var şimdi ben herhangi bir sayfadan 22/dmal seçeneğini seçince 22/dmal sayfasına kopyalacak,ancak başkabir sayfadan yine aynı sayfa ismini seçtiğimde diğer verinin alt satırına kopyalayacak, ve bu tüm sayfalardan ismi seçilen tüm sayfalara aynı şekilde kopyalama yapılacak ve sayfalardaki veriler aynen kalacak )biraz karmaşık oldu ama örneğe bakınca hemen anlıyacaksınız. (örneği isterseniz siz kendinize göre daha uygun düzenleyebilirsiniz önemli olan aynı işin yapılması) ARKADAŞLAR AÇIKLAMAYI 250-01 ve 22d/mal alımı sayfalarına yaptım umarım doğru anlatmışımdır. yardımlarınızı bekliyorum
 
Katılım
18 Ocak 2007
Mesajlar
164
Excel Vers. ve Dili
ofis 2007 türkçe
ben bu problemin çözümü yok diye düşünüyorum yoksa şimdiye kadar bir arkadaş cevap yazmadı herhalde bu yapılamıyacak bir problem
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.feraset045
Öncelikle veri doğrulamadaki isimler ile table isimleri aynı değil. Örneğin "22/d Hizmet" doğrulamasını "22d Hizmet" olarak değiştirin. Sayfa isimleri ile veri doğrulamada seçilen isimler birebir aynı olsun.

Sonra aşağıdaki kodu herhangi bir sheet'in kod sayfasına yapıştırıp deneyin.

Kod:
 Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [H11:H252]) Is Nothing Then
x = Target.Value
sat = Target.Row
Set Sh = Sheets(x)
son = Sh.Cells(252, 2).End(xlUp).Row
For i = 1 To 7
Sh.Cells(son + 1, i + 1) = ActiveSheet.Cells(sat, i + 1)
Next i
End If
End Sub
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
sayın fpc ÖZÜR DİLEYEREK ARAYA GİRİYORUM AMA BÖYLE Bİ ŞEY bana da lazım oldugu için araya giriyorum ama ben seet nedir bilmiyorum daha açık yazarsanız adım adım anlatarak cok memnun olurum biliyorum sizin gibi ustaların vaktini alıyoruz ama ne yapalım tekrar tesekkurler ve özür diliyorum saygılar
 
Moderatör tarafında düzenlendi:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.Muhammetozgen

Kod:
 Private Sub Worksheet_Change(ByVal Target As Range)
Excel'in çalışma sayfasında değişim meydana geldiğinde çalışacak bir yöntem seçiyoruz. (Buradaki "Worksheet_Change" olayı gibi) ... Çalışma sayfasındaki herhangi hücreye yeni bir bilgi girişi yapıldığında veya hücredeki mevcut bir bilgi değiştirildiği zaman otomatik olarak bu makronun çalışmasını istediğimiz için bu yöntemi seçtik.
Kod:
If Not Intersect(Target, [H11:H252]) Is Nothing Then
Tabi yukarıda seçtiğimiz yöntem çalışma sayfasındaki bütün hücreleri kontrol ediyor. Ama biz sadece ilgilendiğimiz aralıkta bir değişiklik meydana geldiğinde bu prosedürün çalışmasını istiyoruz. Yukarıdaki satırın anlamı; -her nekadar tersin tersi anlamındaysa da-; "eğer değiştirilen hücre H11:H252 aralığındaki hücrelerden herhangi birisiyse" demektir. Eğer değiştirilen hücre bizim yukarıda istediğimiz aralıktaysa; prosedür aşağıdaki işlemleri yapmaya başlar. Bu aralığın dışındaysa hiçbir işlem yapmaz.
Kod:
x = Target.Value
buradaki "Target" ifadesi özetle değiştirilen hücreyi göstermektedir. Bu hücrenin değeri önemli. Çünkü, bu hücre değerine göre hangi çalışma sayfasına (sheet'e) veri göndereceğimizi belirliyoruz. Burada; hücrenin değerini "x" adlı bir değişkene atadık.
Kod:
sat = Target.Row
Buradaki "sat" değişkenine aktif hücrenin (yani target'in) satır numarasını atadık. Çünkü, bu sayfadan, diğer sayfaya hangi satırı göndereceğimizi bilmemiz lazım.
Kod:
 Set Sh = Sheets(x)
Şimdi ise bulduğunuz x değerini kullanarak sh adlı değişkene bir değer atıyoruz. Kısaca "sh bundan böyle sheet(x) olsun" diyoruz. Örneğin sh seçilen hücreye göre sheets("21d Mal") olacak. Kullanıcı neyi seçerse,
Kod:
 son = Sh.Cells(252, 2).End(xlUp).Row
Değiştirilen satırdaki bilgileri diğer sayfaya aktarmadan önce, o sayfada kaç satır veri olduğunu önceden bilmemiz lazım. Bu yukarıdaki satır da ilgili sayfadaki en son satırın numarasını buluyor. Bunu sonraki adımlarda kullanacağız.
Kod:
 For i = 1 To 7
Şimdi bir döngü kurduk. 1'den 7'ye kadar toplam 7 defa dönecek. Çünkü her seferinde 7 hücre diğersayfaya aktarılacak.
Kod:
 Sh.Cells(son + 1, i + 1) = ActiveSheet.Cells(sat, i + 1)
Burada da döngü her turunda "i" ve "son" değişkenlerinin aldığı değere göre "sh" çalışma sayfasına, şu an bulunduğu çalışma sayfasından veri yollayacaktır. Örneğin; bu dosya için veri doğrulamada "21d mal" seçilirse, x değeri "21d mal" olacaktır. Sh'de; "21d mal" adlı çalışma sayfasına sabitlenecektir. Sonra; "21d mal" sayfasındaki son satırı bularak bu satıra döngü ile veriler aktarılacaktır.
Kod:
 Next i
Döngü sonu
Kod:
 End If
Koşulun sonu (Yani H12:H252 aralığını kontrol ettiğimiz koşulun)
Kod:
 End Sub
İşlemin sonu

Aklınıza takılan bir şey olursa, lütfen çekinmeyin.
 
Katılım
18 Ocak 2007
Mesajlar
164
Excel Vers. ve Dili
ofis 2007 türkçe
evet aynen istediğim gibi tek eksiği mesaj box uyarısı hocam onuda ben ilave ettim müthis çok sağolun
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
tesekkurler zaman ayırdığınız için
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
sayın fpc ÖZÜR DİLEYEREK ARAYA GİRİYORUM AMA BÖYLE Bİ ŞEY bana da lazım oldugu için araya giriyorum ama ben seet nedir bilmiyorum daha açık yazarsanız adım adım anlatarak cok memnun olurum biliyorum sizin gibi ustaların vaktini alıyoruz ama ne yapalım tekrar tesekkurler ve özür diliyorum saygılar ekli dosyada yapmak istediğim yeni acacagım kitaplarda dusey ara ile buldugum urunlerin sayılarını stok tan düşmesi ilgilenirseniz sevınırım
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
tamam tesekkurler diğer sorunları özellikle yeni actıgım sayfalarda dusey ara ile buldugum malzemelerin cıkan miktarları stoktan dusebilirsek cok iyi olur suda olabilir ben önceden belli miktarda sayfayı oluştururum sayfa1 sayfa 2 sayfa 3.......gibi yani her yeni açılan değilde acılmış sayfalardaki miktarlar da olabilir
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
yani DÜŞEYARA(B2;TEKLİF!B2:TEKLİF!P1000;3;YANLIŞ)+DÜŞEYARA(B2;'1'!B5:'1'!P1000;3;YANLIŞ)+ bu formülü covaltıp belki 100 sayfaya uygulamak istiyorum tabi alt satırlar da dahil bu formulu programımda stok sayfasında cıkanlar stununa yazdım
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.Muhammetözgen
Aşağıdaki kodu bir modul sayfasına yapıştırıp çalıştırınız.

Kod:
Sub toppla()
Dim sonuc
Set shlst = Sheets("liste")
Set shstk = Sheets("STOK")
Application.Calculation = xlCalculationManual
SonStk = shstk.Cells(65536, 3).End(xlUp).Row
SonLst = shlst.Cells(65536, 2).End(xlUp).Row
If son = 5 Then: MsgBox "Tablolar eksik": Exit Sub
For j = 2 To SonStk
   x = shstk.Cells(j, 3)
   sonuc = 0
     For i = 6 To SonLst
        shad = shlst.Cells(i, 2)
        Set shx = Sheets(shad)
        On Error Resume Next
        If IsError(Application.WorksheetFunction.Match(x, shx.Range("c1:C1000"), 0)) Then: GoTo f1
        satir = Application.WorksheetFunction.Match(x, shx.Range("c1:C1000"), 0)
        sonuc = shx.Cells(satir, 6) + sonuc
f1:
        Set shx = Nothing
     Next
   shstk.Cells(j, 5) = sonuc
Next
Application.Calculation = xlCalculationAutomatic
Set shlst = Nothing
Set shstk = Nothing
End Sub
NOT : Eğer ek sorularınız olacaksa; yeni bir başlık açmanızda fayda var.
 
Katılım
30 Nisan 2007
Mesajlar
118
Excel Vers. ve Dili
exel2007
Altın Üyelik Bitiş Tarihi
27-09-2023
cok cook tesekkur ederim zaman ayırıp ilgilendiğin için inşallah birgun bende böyle birilerine yardım edecek duzeye gelebilirim tekrar tesekkurler yalnız sayfaya aynı ürunu ikinci kez yazdıgımda toplamıyor sayfaya mukerrer girişi nasıl önlerim yada hatayı nasıl duzeltırız
 
Üst