• 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ü Reçete oluşturma programı çok yavaş

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.

ilkay94

Yeni Üye
Katılım
27 Nis 2022
Mesajlar
139
Aldığı beğeni
9
Excel V
Office 2016 TR
Konu Sahibi
Merhaba arkadaşlar,

Aranızda yeniyim hobi amaçlı yaptığım bir reçete oluşturma programı var, ancak çok donuyor kasılıyor nerede bi hata eksik yaptım anlayamadım bilen arkadaşlardan yardım rica ediyorum.

Dosya ektedir.
 
Merhaba.
Hangi kodda ne yapılacak hangi userforma tıklanacak?
Hangi işlem yapılınca donuyor?
 
Konu Sahibi
Merhaba.
Hangi kodda ne yapılacak hangi userforma tıklanacak?
Hangi işlem yapılınca donuyor?
ALTKATTREÇETEEKRANI olan formda TextBox1 de ki ıd yi ALTKATREÇETEKAYIT sayfasından alıyor ve ALTKATÜRETİMLER sayfasında da ki ıd ye göre süzüp ALTKATÜRETİMLER sayfasında da ki kayıtları getiriyor burada additem mi yavaşlatıyor başka bi sebep mi var anlayamadım,

ALTKATTREÇETEEKRANI formda ki CommandButton3 de ALTKATÜRETİMLER sayfasında ki ıd ye göre ALTKATREÇETEKAYIT saydasında ki kiloyu bulup ALTKATÜRETİMLER sayfasında ki yüzde ile çarpıyor ancak satır sayısı arttıkça işlem süresi çok uzuyor.
 
burada additem mi yavaşlatıyor
Kod rowsource ile listboxa alıyor yani bundan değil.
Arr ile olanları ekledim 'Range("E" & satýr) = WorksheetFunction.VLookup(Range("A" & satýr), s2.Range(Alan1), 10, 0) * Range("F" & satýr) bunun yerine.
Kod Tr karakterden dolayı çalışmazsa sayfa isimlerini ve satýr bunları düzeltin ayrıcada hiç veri olmadığı için deneyemedim doğru çalışıp çalışmadığını.


HTML:
Rich (BB code):
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Ayrıca Range bazı Range olan yerlerin başına sayfa tanımlaması eklememişsiniz örnek s1 yada s2 gibi.
 
Konu Sahibi
Ayrıca Range bazı Range olan yerlerin başına sayfa tanımlaması eklememişsiniz örnek s1 yada s2 gibi.
Merhaba,

Gerçek isminiz Refaz mı bilmiyorum,

İlginiz alakanız için çok teşekkür ederim,

Kod çok güzel çalışıyor eskiye göre daha hızlandı ancak hala bekletiyor bu normal midir 5-10 saniye bekletiyor hiç bekletmeden hızlıca yapması mümkün müdür.

Ayrıca Additem yerine başka bir yöntem ile 10 sutundan fazlasını almamız mümkün müdür.

Yardımınızı rica ediyorum.
 
Gerçek isminiz Refaz mı bilmiyorum,
Tersten okuyun abey :)
Aditem göremediğimi yazmıştım.
Eklediğiniz dosyada veriler varsa akşam denerim.
Kodunuzdaki vlookup(düşeyara) ile yaparım hızlanması gerek normaldr ama ne kadar hızlanır nilemiyorum.2 adet örnek eklerim ado ve tekrar dizi ile ama örnek veriniz gerçeğe yakın olursa uğraşmamış oluruz.
Rica ederim bu arada.
 
Konu Sahibi
Tersten okuyun abey :)
Aditem göremediğimi yazmıştım.
Eklediğiniz dosyada veriler varsa akşam denerim.
Kodunuzdaki vlookup(düşeyara) ile yaparım hızlanması gerek normaldr ama ne kadar hızlanır nilemiyorum.2 adet örnek eklerim ado ve tekrar dizi ile ama örnek veriniz gerçeğe yakın olursa uğraşmamış oluruz.
Rica ederim bu arada.
Bende ilkay memnum oldum bu arada dayımın adi da zafer 😊,

Additem olayı altkatreceteekrani formunda ki texbox1 de var,

Amacım şudur ki önce recete oluşturacak kilosu adedi girilecek en onemli kriter recete olustururken ki kilo,

Sonra olusturulan receteye tıklayıp assagida ki lixbox3 ekraninda o recete id sine ait recete icinde ki kimyasallar girilecek,

Genelde receteler aynı kimyasallar ile yapılıyor ancak kilo degistikce kimyasalin yuzdesi ile recetede ki kilo tekrar hesaplanmali,

Donma sebebi bence binlerce satiri guncellemesinden,

Soyle bir yöntem olsa sadece güncellenen receteye ait id numarali uretimlerin yuzdeleri ile guncellenen recete kilosunu bulup hesaplasa cok hizli olacaktır,

Ama cok karışık bir islem mi bilmiyorum satir ekle satir sil guncelle kaydet vs vs tek basima netten baka baka yaptım,

Ama hesaplama ve suzme filtre kisminda yaptığım işlemler yetersiz kaldi.
 
Konu Sahibi
İnternette bulduğum kadarı ile bişiyler yaptım ancak 1 ve 2 ıd ye ait verileri getiriyor gerisini getirmiyor nerede yanlış yaptım acaba birde bunu eklemek istedim,

HTML:
C-like:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
veri = sf.Range("A2:O" & sf.Cells(Rows.Count, "A").End(3).Rows).Value
Mesela yukardaki kırmızı renk fazla olmuş.
Adım adım yazıyorumki anlayın.
 
veri = sf.Range("A1:O" & sf.Cells(Rows.Count, "A").End(3).Row).Value
1 Yerine 2 yazılacak
 
Konu Sahibi
Yada ADO ile kod.

HTML:
Rich (BB code):
İçeriği görebilmek için Giriş yap ya da Üye ol.
Merhaba,

Şuan ki yöntem gayet hızlı çalışıyor,

Ado yöntemi mi yoksa şuan ki bu yöntemi mi kullanmamı önerirsiniz ileriye dönük hangisi daha iyidir sizce.

HTML:
Bash:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
HTML:
Rich (BB code):
İçeriği görebilmek için Giriş yap ya da Üye ol.

Bu yöntem müthiş hızlı bir şekilde çalışıyor gerçekten inanamadım additem ile yapmıştım ilk yaptığımda o bi kaç saniye bekletiyor ve ağırlaştırıyordu ancak bu yöntem ile müthiş bir hız oluştu,

Şuanda önümde hesaplama kısmı kaldı bu kısmı nasıl hızlandırabiliriz hocam;

HTML:
CoffeeScript:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Bu yöntem müthiş hızlı bir şekilde çalışıyor gerçekten inanamadım additem ile yapmıştım ilk yaptığımda o bi kaç saniye bekletiyor ve ağırlaştırıyordu ancak bu yöntem ile müthiş bir hız oluştu,

Şuanda önümde hesaplama kısmı kaldı bu kısmı nasıl hızlandırabiliriz hocam;

Dim x As Long
Dim s1 As Worksheet
Dim s2 As Worksheet
Set s1 = Sheets("ALTKATÜRETİMLER")
Set s2 = Sheets("ALTKATREÇETEKAYIT")
son = Sheets("ALTKATÜRETİMLER").Cells(Rows.Count, "A").End(3).Row
Application.ScreenUpdating = False

Range("E2:E" & son + 1).ClearContents
ReDim arr(1 To son + 1, 1 To 1)

satır = 2
For x = 2 To son
Alan1 = "A2:J" & son
Alan2 = "A2:F" & son

s1.Range("E" & satır) = WorksheetFunction.VLookup(Range("A" & satır), s2.Range(Alan1), 10, 0) * Range("F" & satır)
arr(satır - 1, 1) = WorksheetFunction.VLookup(Range("A" & satır), s2.Range(Alan1), 10, 0) * Range("F" & satır)
satır = satır + 1
Next x

If satır > 2 Then Range("E2").Resize(satır, 1).Value = arr
Application.ScreenUpdating = True

Burada ki kodun amacı şu,

ALTKATREÇETEKAYIT da oluşturduğum reçetenin ıd si ile ALTKATÜRETİMLER de reçete içine kayıt yaptığım kimyasalı eşleştiriyor ıd numarasına göre ve reçeteye ait kilo ile kimyasal ait yüzdeyi çarpıp kaç kg kimyasal kullanmam gerektiğini söylüyor,

Yani reçete kilosu 1.000 kg ise ve her eklediğim kimyasala yüzde veriyoruz a kimyasalı yüzde 1 b kimyasalı yüzde 10 gibi,

Ben istiyorum ki reçete 1.000 kg A kimyasalı yüzde 1 ise 10 kg B kimyasalı yüzde 10 ise 100 kg,

Eğer reçetede ki kimyasallar ve yüzdeler aynı ise sadece reçete kg 1.000 dan 800 e vs güncellendi ise 1.000 kg a göre değil 800 kg a göre hesaplasın istiyorum.
 
Konu Sahibi
Burada ki kodun amacı şu,

ALTKATREÇETEKAYIT da oluşturduğum reçetenin ıd si ile ALTKATÜRETİMLER de reçete içine kayıt yaptığım kimyasalı eşleştiriyor ıd numarasına göre ve reçeteye ait kilo ile kimyasal ait yüzdeyi çarpıp kaç kg kimyasal kullanmam gerektiğini söylüyor,

Yani reçete kilosu 1.000 kg ise ve her eklediğim kimyasala yüzde veriyoruz a kimyasalı yüzde 1 b kimyasalı yüzde 10 gibi,

Ben istiyorum ki reçete 1.000 kg A kimyasalı yüzde 1 ise 10 kg B kimyasalı yüzde 10 ise 100 kg,

Eğer reçetede ki kimyasallar ve yüzdeler aynı ise sadece reçete kg 1.000 dan 800 e vs güncellendi ise 1.000 kg a göre değil 800 kg a göre hesaplasın istiyorum.

Bunu 1 butona atamak yerine direk sayfa içersine bir kod yazsak ve reçete kayıtta değişen bir kg veya yeni eklenen bir kg olduğunda veya yeni açılan bir reçete olduğunda otomatik hesaplasa arka planda mümkün müdür altkatüretimler sayfası içerisine bir kod yazılabilir mi,

Veya sizin önerebileceğiniz bir hesaplama yöntemi var mı.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst