• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Do Until Döngüsünde aşırı yavaşlık ve kasma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

japonbaba

Yeni Üye
Katılım
7 Kas 2022
Mesajlar
29
Çözümler
1
Aldığı beğeni
16
Excel V
Office 2019 TR
Konu Sahibi
Merhaba değerli arkadaşlarım, Puantaj projemizde giriş yapılan verileri Do Until Döngüsü ile datbase sayfasına aktarım sağlamaktayım lakin aktarmaya başladığımız zaman çok ciddi kasmalar olmakta ve işlem uzun sürmekte ve sadece aylık olarak aktarma yapıyoruz. Ve Do until döngüsü ile bazı sorunlar yaşıyoruz yardımlarınızı talep ediyorum.


1. Sıkıntımız Do UNTİL boşluk durumuna göre hareket ettiği için tarih sutunları dinamik olduğundan ötürü mecburi olarak formül eklemekteyiz lakin hücrede fomül olduğundan ötürü boşluk olarak görmeyip sağa doğru devam etmekte yani 29 Şubat ta ay bitiyor ama döngü dolu satıra kadara devam ediyor hatta 40 kıncı sütuna kadar gitmekte bu sıkıntıyı 31. Sütundan sonra boş bir sutun açarakda çözebiliriz ama formülasyon olarak muhakkak bir özüm olduğunu düşünüyorum.

2. Sıkıntımız Biz bu koda göre verilerimizi aylık olarak Database Sayfasına aktarmak zorunda kalıyoruz bu aktarımı günlük yada anlık aktarma yapamazmıyız mükerrer kayıt olmamak kaydı ile ? Örnek vermek gerekirse anlık yada günlük aktarma yaparsak geriye dönük personelde düzenleme yada silme işlemi yapılırsa database sayfasınsa o personeli bulup ilgili gün için düzeltme yapması yani güncelleme yapacak, yeni veri ise an alt boş satıra veri girişini yapacak.

3. Sorunumuz Ve en önemlisi Do UNtil döngüsü aşırı derecede kasma yapıyor ve yavaş işlem gerçekleşiyor veri aktarımını daha farklı ve hızlı bir yöntemle nasıl aktarabiliriz? Eğer bu çözümden başka yok ise veri aktarırken beklettiği süreyi uyarı ekranı ile bilgi verirmi Örnek ( Verileriniz aktarırılıyor bekleme süreniz dinamik olarak 10 saniye gib vs) Şimdiden teşekkür etmek istiyorum.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
kodunuzu adım adım inceledim. sizin yavaşlama sorunu do until döngüsünden değil. Workbook_SheetChange olayından yani do until her yaptığı değişiklikte Workbook_SheetChange olayına gidip ordakileri de teker teker yapıyor. Workbook_SheetChange olayındaki koda neden ihtiyaç var bilemediğimden o konuda yorum yapamıyorum. benim tavsiyem Workbook_SheetChange yorum satırına alıp tekrar deneyin.
 
Konu Sahibi
Martinmax bey, İlginiz için teşekkür ederim Workbook_SheetChange olayındaki kodlar Sayfalar arasında mükerrer kayıtları önlemekte dediğiniz doğru her işlemde SheetChance olayına gidiyor çün sayfalarda yapılan işlemleri kontrol ediyor ama dediğiniz gibi kodları not durumunu alıp tekrar denedim lakin 1 veya 2 saniye farketti yani sorun Do Until diye düşünüyorum :((
 
Dener misiniz...
Not : for next döngüsüyle daha da sadeleşebilir, sizin yönteminizle çalıştım...

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Mozuer Bey ilginiz için teşekkür ediyorum, Lakin range hatası vermekte bakmanız mümkünmüdür?

Ve Do Until yabancı olduğum bir seçenek olduğundan dolayı for next e dönsek benim için daha iyi olur diye düşünüyorum.

Birde bu kodlar dolu olan bir alt satıra verileri işliyor ve bu nedenle ayda bir aktarma yapmak zorunda kalıyoruz anlık aktarabileceğimiz hale dönüştürmemiz mümkünmüdür tarih ve ID numaralarına değişken atasak ve bu değişkene göre aynı kayıt varsa güncellesin yoksa dolu olan alt satıra işlemeye devam etsin?
 
Konu Sahibi
Mouzer çok teşekkür ediyorum Emekleriniz için bu kod ile hızlanmayı bırakın sanki enter basıyorum gibi veri aktarıyor👏👏👏👏👏👏

Vaktinizi almassam bazı kodları soracaktım;

Bu kod "ReDim myVal(1 To 10000, 1 To 6)" Anladığım kadarı ile 1.satır dan 10.000 satıra 1. Sütundan 6 Sutuna Database sayfasına ise 10000 satırını ne kadar arttıra bilirim sebebi bir çok çalışanın olduğu farklı şantiyenin verilerini Yıl Bazında Database Sayfasında tutup rapor alacağız eğer veri aldığı sayfa ise tabiki bu sayı yeterli



Bu kod ise veriyi içinde saklayarak bir andamı yazıyor? "Sheets("Db").Cells(2, 1).Resize(i, 6).Cells.Value2 = myVal"
 
Mouzer çok teşekkür ediyorum Emekleriniz için bu kod ile hızlanmayı bırakın sanki enter basıyorum gibi veri aktarıyor👏👏👏👏👏👏

Vaktinizi almassam bazı kodları soracaktım;

Bu kod "ReDim myVal(1 To 10000, 1 To 6)" Anladığım kadarı ile 1.satır dan 10.000 satıra 1. Sütundan 6 Sutuna Database sayfasına ise 10000 satırını ne kadar arttıra bilirim sebebi bir çok çalışanın olduğu farklı şantiyenin verilerini Yıl Bazında Database Sayfasında tutup rapor alacağız eğer veri aldığı sayfa ise tabiki bu sayı yeterli



Bu kod ise veriyi içinde saklayarak bir andamı yazıyor? "Sheets("Db").Cells(2, 1).Resize(i, 6).Cells.Value2 = myVal"
10000 sayısını excelin satır sayısı kadar yapablirsiniz, farklı bir çalışma ise gerçek satır sayısını kullanan dinamik Redim Preserve yöntemi
Ancak bunu sizde uygulamadım, kendiniz çalışarak geliştirebilirsiniz
Verileri eğer döngü varsa (Do-Until For_next ) hücre hücre yazdırmak çok satırlı işlemlerde zaman alır, bunun yerine Array yöntemi kullanıp hafızada tutup sonra hücrelere aktarmak en hızlı yöntemlerden biridir.
Sheets("Db").Cells(2, 1).Resize(i, 6).Cells.Value2 = myVal
Burada myVal ile tüm veriler hafızada tutulmuş olup tek seferde A2 hücresinden başlayarak 6 sütun i kadar satır olacak şekilde myVal içindeki dağerler aktarılır. Belirttiğim gibi en hızlı yöntemlerdendir.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst