• 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.

Soru Eşitlik kontrolü ve değer ekleme hk.

himmgarip

Excel Dostu
Katılım
27 Mar 2021
Mesajlar
797
Çözümler
96
Aldığı beğeni
882
Excel V
Office 2016 TR
Konu Sahibi
Merhaba,

Aşağıdaki Anasayfa userformu ile seçilen masaya ürünlere çift tıklayarak ürün ekleniyor. Buraya bir kontrol eklemek istiyorum. Eğer ki eklenmek istenen ürün Listbox1 de varsa sadece o ürüne ait kayıttaki adeti yükseltsin. Yeni bir kalem ürün eklenmesin. Konu hakkında desteğinizi rica ediyorum.

1642957655249.png
 

Ekli dosyalar

Merhaba

İstediğinizi tam olarak kontrol etmek için. Aşağıdaki kodu Masalar sayfasında deneye bilirsiniz.
Masalara göre Ürünleri Topluyor. Topladığı bu alanı listview a alırsanız sorununuz çözülür umarım.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Esenlikler dilerim. İyi çalışmalar.
 
Konu Sahibi
Merhaba

İstediğinizi tam olarak kontrol etmek için. Aşağıdaki kodu Masalar sayfasında deneye bilirsiniz.
Masalara göre Ürünleri Topluyor. Topladığı bu alanı listview a alırsanız sorununuz çözülür umarım.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Esenlikler dilerim. İyi çalışmalar.

KarıncaZ emeğiniz için teşekkür ederim. Listview daha önce hiç kullanmadım. Nasıl olacağını ve bu kodu nasıl kullanacağımı bilemedim.
 
Bu kodu Masalar sayfasında kullanın.

Sonuç istediğiniz ise çalışmanıza aktarırız ListBox a aktarımı kolay. Zaten yapmışsınız. A:E arasını değil de Z:M arasını çekeceksiniz.

Bugün ListView ile çok uğraştığım için onu yazmışım. Sizin çalışmanızda ListBox1

Siz kodu yeni modules ekleyerek çalıştırın. Masalar sayfasında J2 den başlayarak her bir masadaki ürünleri toplayacak. Hem adet hem de tutar olarak ve tek yazacak. Sizde bu kodu yani kodlardaki Tplm dizini isterseniz ListBox ınıza direk aktara bilirsiniz. İsterseniz sayfada çalıştırıp J:M arasını ListBox ınıza aktarırsınız. Nasıl kolayınıza geliyorsa.
 
Konu Sahibi
Bu kodu Masalar sayfasında kullanın.

Sonuç istediğiniz ise çalışmanıza aktarırız ListBox a aktarımı kolay. Zaten yapmışsınız. A:E arasını değil de Z:M arasını çekeceksiniz.

Bugün ListView ile çok uğraştığım için onu yazmışım. Sizin çalışmanızda ListBox1

Siz kodu yeni modules ekleyerek çalıştırın. Masalar sayfasında J2 den başlayarak her bir masadaki ürünleri toplayacak. Hem adet hem de tutar olarak ve tek yazacak. Sizde bu kodu yani kodlardaki Tplm dizini isterseniz ListBox ınıza direk aktara bilirsiniz. İsterseniz sayfada çalıştırıp J:M arasını ListBox ınıza aktarırsınız. Nasıl kolayınıza geliyorsa.


İstediğim mantık olarak bu. Ama ürüne çift tık olayında doğrudan ilgili kaydın değerinde değişiklikle yapmak istiyorum bunu. Diğer türlü birbirine bağlı birkaç kodda güncelleme yapılması gerekli. Bu kodu güncellememiz lazım. Uğraşıyorum ama beceremedim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Dosyanızda ürüne çift tıklayınca değil de adet seçildikten sonra eklemenin yapılması daha doğru. Çift tıklandı, müşteri vazgeçti tekrar silmek yerine tamam düğmesine basınca işlem gerçekleşmeli bence. Tamam düğmesine basınca Call MasalaraGore_UrunTopla ile kodu çalıştırırsınız.
Freme3.ListBox1 e de verileri ekleyen kodu A2:E Son ile eklemektense J2:M Son olarak değiştirmeniz yeterli olur.( ID kısmı gerekli ise oda eklene bilir.) Her halükarda Freme3.ListBox1 yeniden yüklenecek yada ilgili veri bulunarak güncelleme yapılacak.
 
Konu Sahibi
Dosyanızda ürüne çift tıklayınca değil de adet seçildikten sonra eklemenin yapılması daha doğru. Çift tıklandı, müşteri vazgeçti tekrar silmek yerine tamam düğmesine basınca işlem gerçekleşmeli bence. Tamam düğmesine basınca Call MasalaraGore_UrunTopla ile kodu çalıştırırsınız.
Freme3.ListBox1 e de verileri ekleyen kodu A2:E Son ile eklemektense J2:M Son olarak değiştirmeniz yeterli olur.( ID kısmı gerekli ise oda eklene bilir.) Her halükarda Freme3.ListBox1 yeniden yüklenecek yada ilgili veri bulunarak güncelleme yapılacak.

Sayın KarıncaZ ürüne çift tıklayınca eklemiyor. Ürüne çift tıklayınca adet userformu açılıyor.

1642966399224.png

Buraya adet girdikten sonra tamam dersem ekleme yapıyor. Çıkarsam da işlemi iptal ediyor.
 
Konu Sahibi
İşaretlediğim yerdeki oklar aslında bu dediğim olayı yapıyor. Ben listeden sipariş kalemini seçiyorum. +1 ya da -1 olarak azaltıp çoğaltıyorum. Ek olarak bu işlemi Sipariş ekle butonu ile yapıyorum. Ama istediğim adisyonda düzen olması. Ürün ekle kısmında revize yapmam gerekli maalesef :(

sd.jpg
 
Ufak bir hesaplama hatası var ama, ekteki dosyayı inceleyin, istediğiniz gibi olmuş mu?
İlk eklemede yada ikinci eklemede bir tane eksik topluyor, üçüncüyü ekleyince düzeliyor ama nedenini tam bulamadım. Bazı ürünlerde yapmıyor bunu. İnceliyorum.
İstediğiniz buysa devam edeceğim.
 

Ekli dosyalar

Konu Sahibi
Ufak bir hesaplama hatası var ama, ekteki dosyayı inceleyin, istediğiniz gibi olmuş mu?
İlk eklemede yada ikinci eklemede bir tane eksik topluyor, üçüncüyü ekleyince düzeliyor ama nedenini tam bulamadım. Bazı ürünlerde yapmıyor bunu. İnceliyorum.
İstediğiniz buysa devam edeceğim.

Sayın KarıncaZ ,

Evet istediğim bu. Ama Masalar sayfasında bu işlemi yaparsak diğer userformlarda masalar sayfasından veri çeken alanlar var. Bunlarda problem yaşayabiliriz. Örneğin masaya ait ödeme alındıktan sonra ilgili masa adının bulunduğu satırlar siliniyor. Bu esnada sizin yazdığınız koda ait satırlarda gidecektir. O yüzden çift tıklama kodunda revize etmemiz gerekecek.
 

Ekli dosyalar

Herhangi bir sıkıntı olacağını düşünmüyorum, tabi programa siz hakimsiniz daha iyi bilirsiniz.

Benim yaptığınızdan anladığım şöyle,
1-) Aktif müşteriler Masalar sayfasında geçici olarak tutuluyor.
2-) Masadan ödeme alınınca, kapanınca o masanın tüm hareketleri başka bir sayfalara genel rapor için alınıyor. Masalar sayfasından siliniyor.
3-) Verilerin ve raporların eksiksiz ve tam olabilmesi için tüm işlemlerin Masalar sayfasına yazılması ve buradan dağılması gerekiyor. Örneğin ürün ekleyince masalar sayfasına illaki yazılacak, sadece ListBox üzerinden işlem yapılmayacak.
4-) Masa silinince Ana formda rengi yeşile dönüyor.
anladığım kadarıyla genel işleyiş bu şekilde.

Benim yazdığım kodda, sizin veri çektiğiniz A:E verilerine dokunmuyor zaten. Buradan çektiğiniz verilerde hata olmayacaktır. Sadece buradaki veriyi Freme3.ListBox1 e eklenmesi için kullanılıyor. Verileri Masa ve ürün bazında benzersiz topluyor. Zaten masada hareket yoksa benim kodlarda da görünmeyecek. Yani Ekran1 sayfasına gidecek bir veri olmayacak. Masada hareket varsa Ekran1 sayfasına veri gidecek. Dolayısıyla genel işleyişte bir hata olacağını düşünmüyorum.

Ama dediğim gibi çalışmanızdaki tüm kodları işlevleri incelemedim. Sadece sorununuzu çözmek için baktım.

Öneri olarak şunu söyleye bilirim., Ekran1 sayfasına aktarırken benim kodları kullana bilirsiniz., Kodların If koşuluna Aktif olan masanın numarasını eklersiniz kodların en sonunda Freme3.ListBox1.List = Tplm yazarsınız böylelikle aktif masanın ürün bazında benzersiz toplamlarını ListBox a aktarmış olursunuz. Ekran1 sayfasından çekmek zorunda kalmazsınız.

Kodlarınızda Dizi yapılarını kullanmışsınız zaten. Yabancı değilsiniz. Dizi tanımlarken ( 1 To SonSatır, 1 To Sutun sayısı) şeklinde tanımlarsanız Transpoze yapmanıza da gerek kalmadan ListBox1.List = Dizi şeklinde verileri daha kolay ve hızlı bir şekilde aktarmış olursunuz.
 
Konu Sahibi
Adisyon yine bu haliyle kalacak ama. Ben bazı bölümlerde anlama güçlüğü çekiyorum aslında. Bu da bilgi eksikliğimden kaynaklanıyor. Ben biraz takıntılıyım. Her şey düzgün olmalı. Bu haliyle kalsa ne olacak? Hiçbir şey olmayacak aslında. Örnek veriyorum ben bunu çözene denk bu gece uyumam : ) Aslında kafamda algoritmayı oluşturuyorum. Kodları yazarken takılıyorum.

Kabaca yapmak istediğim bu.

Listbox2 ye çift tıklanınca tıklanan değeri al
Masalar sayfasında Frame3.Caption a eşit olan satırlarda ara
Eğer ki varsa adetini 1 yükselt.
Yoksa yeni bir kayıt oluştur.

Desteğiniz için teşekkür ederim KarıncaZ .

1642972064220.png
 
Merhaba

Adisyon ekranı bizde yok maalesef. bu ekrandaki ListBox ada Ekran1 Sayfasını çekerseniz aynı veriler olmuş olur. Tabi karar sizin.

Mali müşavir olarak fikrimi söyleyeyim, bu ekranın bu şekilde olması daha doğru. Adisyon zaten o masa için yapılan işlemlerin sırasını yansıtmalı. Müşteride baktığında evet ben önce şunları söyledim sonra şunları söyledim şeklinde değerlendirebilmeli. Burada belki şu yapılabilir. Ekran1 sayfasındaki toplam ile bu ekrandaki toplamın eşit olup olmadığı kontrol edilebilir.
Ayrıca yapılan işlemlerin Excele kayıt olması şart yani Masalar sayfasına mutlaka yazılmalı. Siz Masalar sayfasında, daha önce aynı masaya aynı ürün verildiyse toplanarak yazsın çift yazılmasın istiyorsanız başka. Yoksa sadece ListBox üzerinde değişiklik yapılması çok doğru değil çünkü işlem sadece form üzerinde gerçekleşmiş olur ve Excel verilerine yansımadığından hata oluşur.
Kodlamada benim benimsediğim olay, veri depoluyorsam önce o depoya yazıyorum, formda nereye ne istiyorsam o depodan çekiyorum, böylelikle ne yazılıysa o geliyor veri olarak. Eminim sizin de istediğiniz budur. Sadece yöntemler farklı olabilir ama aynı yere çıkan yolların hepsi doğru, kimi meşakatli kimi kısa kimi uzun.

Daha öncede dediğim gibi Programın tamamına siz hakimsiniz, nerede ne var siz biliyorsunuz, biz sadece soruna yönelik çözüm üretmeye çalışıyoruz. Genele uygulamak çözüm kodlarını kendinize uyarlamak size kalmış.

Esenlikler dilerim. İyi çalışmalar.
 
Konu Sahibi
Tam çalışma kitabı 10 nolu mesajda mevcut. İlk eklediğim deneme yaptığım dosya idi, yanlışlıkla onu eklemişim. İlgi alakanız ve özellikle sabrınız için teşekkür ederim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

İstediğim tam olarak bu aslında.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

İnanın bu daha mantıklı geldi şimdi.
 
Konu Sahibi
Verdiğiniz kodu entegre ettikten sonra İstediğim veriyi Listbox1 de görüyorum. Ama resimde dikdörtgen içine aldığım bölümde 5 adet buton işlevini kaybediyor. Bu butonlar listbox1 e alınan veriyi baz alarak çalışıyor. Bu gibi durumlar oluyor bunu anlatmaya çalışmıştım aslında. Belki burada atladığım basit bir yer var ben yanlış yapıyorum.

SD.png
 
Siz zaten CommandButton7_Click ile istediğinizi yapmışsınız. Buradaki kodları diğer tarafa taşımanız yeterli olacaktır. Sadece birer birer değil de Sipariş adedindeki rakama göre artıracaksınız.

Adisyon da çok karşılaşılan bir durum, toplanmış adisyon verince "bu kadar çay mı içtik" vs gibi söylemlerle karşılaşılabiliyor. Bizde firmalara adisyonu liste olarak verin ne zaman ne sipariş ettiklerini görsünler , hesabı toplu alın diye tavsiyede bulunuyoruz. Belki işyerinizde şöyle işlemlerde olabilir. A çalışanınız ilk siparişi aldı. İkinci ürünleri B çalışanınız sipariş aldı. Müşteri hesaba itiraz etti, sonraki gelenler benim değil diye. Ben başka bir şey sipariş etmiştim dedi. Liste halinde tutarsanız siparişi kimin aldığını tespit edebilir, o kişiden teyit alabilirsiniz. Hatta çalışmanıza masa aktar seçeneğiniz gibi sipariş aktar şeklinde bir ekranda eklemeniz gerekebilir. gerçekten Masa1 in siparişi Masa5 e yazıldıysa bu işlemi de gerçekleştirmeniz gerekebilir.

Bu form zaten ihtiyacı olanlara yardımcı olmak amacıyla kurulmuş, bu nedenle bizler ve diğer arkadaşlar yardımcı olmak için buradayız. Anladığımız ve bilgimiz dahilinde elimizden geleni yapmaya çalışıyoruz.

Esenlikler dilerim. İyi çalışmalar.
 
Verdiğiniz kodu entegre ettikten sonra İstediğim veriyi Listbox1 de görüyorum. Ama resimde dikdörtgen içine aldığım bölümde 5 adet buton işlevini kaybediyor. Bu butonlar listbox1 e alınan veriyi baz alarak çalışıyor.
Burada bence veri yapısı olarak hataya açık bir işleyişiniz var gibi.
Siz tüm işlemlerinizin sonucunda yapılan tüm ticaretin verisini raporluyorsunuz. Bunun içinde önce veriler mutlaka Masalar Sayfasına yazılmalı, Buradan hesap alınırken masaya göre Ekran1 sayfasına gitmeli, hesap alındıktan sonra sonuç verileri verilerin yer aldığı sayfaya yazılmalı. Dolayısıyla siz yapacağınız işlemleri masa kapana kadar Masalar sayfasında veri işlemi yapmalı ve görüntüleme ekranlarına buradan veri çekmelisiniz. Gerçi sizin gönderdiğiniz butonlar sizin istediğiniz olayı yapıyor.
Yukarı oka basınca Masalar sayfasında aynı sipariş varsa topluyor yoksa sipariş olarak en alta ekliyor.
Aşağı ok u kullanmadım ama oda azaltıyor olmalı. Bu işlemleri birer birer yapıyor.
Sipariş ekle de ürünlerden çift tıklamayla aynı işlemi yapıyor.
Masayı boşalt tuşu da zaten hesap alınınca gerçekleşen işlemle aynı. Sanırım bu butonu hesap alınmadan gidenler olursa kaydı boşaltmak için kullanıyorsunuz ancak tavsiyem böyle verileri de bir yerde tutun gün sonu sayımlarınızda işinize yarayacaktır.
Aşağı ve Yukarı tuşlar kalabilir bir sipariş için üç dört tuşa basmaktansa tek tuşa basılır ama sipariş ekle butonunun işlevini zaten diğer listboxa çift tıkla yapabiliyorsunuz.
"Gereksiz se söndürün " de olduğu gibi gereksizse kaldırın. Form ne kadar sade o kadar iyi :);)
 
Konu Sahibi
Siz zaten CommandButton7_Click ile istediğinizi yapmışsınız. Buradaki kodları diğer tarafa taşımanız yeterli olacaktır. Sadece birer birer değil de Sipariş adedindeki rakama göre artıracaksınız.

Adisyon da çok karşılaşılan bir durum, toplanmış adisyon verince "bu kadar çay mı içtik" vs gibi söylemlerle karşılaşılabiliyor. Bizde firmalara adisyonu liste olarak verin ne zaman ne sipariş ettiklerini görsünler , hesabı toplu alın diye tavsiyede bulunuyoruz. Belki işyerinizde şöyle işlemlerde olabilir. A çalışanınız ilk siparişi aldı. İkinci ürünleri B çalışanınız sipariş aldı. Müşteri hesaba itiraz etti, sonraki gelenler benim değil diye. Ben başka bir şey sipariş etmiştim dedi. Liste halinde tutarsanız siparişi kimin aldığını tespit edebilir, o kişiden teyit alabilirsiniz. Hatta çalışmanıza masa aktar seçeneğiniz gibi sipariş aktar şeklinde bir ekranda eklemeniz gerekebilir. gerçekten Masa1 in siparişi Masa5 e yazıldıysa bu işlemi de gerçekleştirmeniz gerekebilir.

Bu form zaten ihtiyacı olanlara yardımcı olmak amacıyla kurulmuş, bu nedenle bizler ve diğer arkadaşlar yardımcı olmak için buradayız. Anladığımız ve bilgimiz dahilinde elimizden geleni yapmaya çalışıyoruz.

Esenlikler dilerim. İyi çalışmalar.

CommandButton9 benim dediğim işlemi tam olarak yapıyor. Ben bunu listbox2 ye çift tıklanınca yapsın istedim sadece. Her neyse çok ama çok teşekkür ederim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Masa Taşı bölümünde bu durum eklendi. Siparişlere çift tıklama ile kalem kalem aktarma yapılabiliyor.
 
Konu Sahibi
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

Masaya eklenen sipariş kalemini seçip, seçilen kalemin üstüne + olarak ekleme yapıyor. Masada 1 adet su varsa 2 adet daha eklenince su 3 adet oluyor.

Yani benim akşamdan beri yapmaya çalıştığım durumu yapıyor :)

Ben bu durumu çift tıklama ile yapmak istedim sadece. Ben bakmaya devam edeyim biraz daha. Hayırlı geceler.
 
Geri
Üst