Stok Kodu Numarası Oluşturma / combobox listbox kullanımı

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba, hayırlı geceler,

Ekli dosyada bir örnek dosya mevcut. Dosya örnek dosya olduğu için biraz karışık görünebilir. Userform1 üzerindeki nesneler birbiri ile alakalı olmayabilir. Sormaya çalışacağım şeyi düşünüp tasarlarken aklıma geleni eklemiş oldum.

Yapmaya çalıştığım, olmasını istediğim şey şu.

Ekli dosyada Userform 1 üzerinde bir stok kartı oluşturmaya çalışıyorum. Buna göre 4 gruptan oluşan bir hesap planı gibi.

Doğaçlama bir örnek;
1 Arabalar
1.1 bmw
1.2 mersedes
1.3 opel
1.4 (Yeni açılacak kod ve tanımı)

2 motorlar
2.1 suziki
2.2 dukati
2.3 yamaha
2.4 ( yeni açılacak kod ve tanımı )

Üstte olduğu gibi bir stok aralığında en detay kırılımda otomatik sıra numarası verdirmeyi düşünüyorum. Bir butona basarak ya da bir nesne olayına bağlı olarak yni bir stok numarası açılacak ve textbox1 e yansıyacak, textbox2 ye bu kodun karşılığı metinsel tanımını gireceğim.

Ekli dosyada comboboxları kullanarak ya da listboxlar 4 gruptan oluşuyor, listbox4 üzerinde seçilen bir satıra karşılık gelen detay satırına bir sonraki değeri verdirerek bir oluşturma yapılabilir mi?

Anlatması biraz zor oldu , umarım ifade edebilmişimdir. Sorduğumu anlayabilenler için, farklı görüş öneriler de olabilir.

Amacım 4 detay kırılımlı bir yapıda otomatik numara vermek ve manuel olarak metin tanımlaması yapmak.
 

Ekli dosyalar

Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba,

Tedarikçi/Üretici - Ana Kategori - Alt Kategori 1- Alt Kategori 2- Ürün Kodu
100-100-100-100-000001 yada 100100100100000001
Bu şekilde bir yaklaşımla ürün kodu belirlemek nasıl olur?
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

Tedarikçi/Üretici - Ana Kategori - Alt Kategori 1- Alt Kategori 2- Ürün Kodu
100-100-100-100-000001 yada 100100100100000001
Bu şekilde bir yaklaşımla ürün kodu belirlemek nasıl olur?
Merhaba, önemli olan benim için sıra numarası verebilmesi, olabilir. Yeterki her yeni kart-cari açılışında bana bir sonraki kodu versin. Manuel ekleme yapmak zorunda kalmayayım. Belirttiğiniz kodda aralara nokta (.) da konabilir. örneğin 770.5001.50001 gibi. en alt kırılım 50002, 50003 şeklinde devam etmeli kod açtıkça.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba, önemli olan benim için sıra numarası verebilmesi, olabilir. Yeterki her yeni kart-cari açılışında bana bir sonraki kodu versin. Manuel ekleme yapmak zorunda kalmayayım. Belirttiğiniz kodda aralara nokta (.) da konabilir. örneğin 770.5001.50001 gibi. en alt kırılım 50002, 50003 şeklinde devam etmeli kod açtıkça.
Kontrol ediniz.

Mantık kısmı burada.

C#:
Private Sub ListBox3_Click()
'ListBox1 = ListBox4.List
anakategori = ListBox1.List(ListBox1.ListIndex, 0)
altkategori1 = ListBox2.List(ListBox2.ListIndex, 0)
altkategori2 = ListBox3.List(ListBox3.ListIndex, 0)
sonstokkodu = Sheets("Ayarlar").Range("A2").Value

satir = 0

tekrar:
  sonstokkodu = sonstokkodu + 1
  stokkodu = anakategori & "." & altkategori1 & "." & altkategori2 & "." & sonstokkodu
  satir = varmi(stokkodu)
If satir > 0 Then GoTo tekrar

TextBox1 = stokkodu

End Sub

Function varmi(bilgi) As Long
    Set sayfak = Sheets("UrunListesi").Range("A:A").Find(bilgi, , xlValues, xlWhole)
    If Not sayfak Is Nothing Then
       varmi = sayfak.Row
       Exit Function
    End If
    varmi = 0
End Function
 

Ekli dosyalar

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Kontrol ediniz.

Mantık kısmı burada.

C#:
Private Sub ListBox3_Click()
'ListBox1 = ListBox4.List
anakategori = ListBox1.List(ListBox1.ListIndex, 0)
altkategori1 = ListBox2.List(ListBox2.ListIndex, 0)
altkategori2 = ListBox3.List(ListBox3.ListIndex, 0)
sonstokkodu = Sheets("Ayarlar").Range("A2").Value

satir = 0

tekrar:
  sonstokkodu = sonstokkodu + 1
  stokkodu = anakategori & "." & altkategori1 & "." & altkategori2 & "." & sonstokkodu
  satir = varmi(stokkodu)
If satir > 0 Then GoTo tekrar

TextBox1 = stokkodu

End Sub

Function varmi(bilgi) As Long
    Set sayfak = Sheets("UrunListesi").Range("A:A").Find(bilgi, , xlValues, xlWhole)
    If Not sayfak Is Nothing Then
       varmi = sayfak.Row
       Exit Function
    End If
    varmi = 0
End Function

Teşekkürler, inceliyorum
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Şimdi farkettim.
ListBox3_Click() olayında en son satıra

Bunu ekleyin. Eklemesenizde kodlar çalışır ancak bu şekilde daha hızlı olacaktır.

Vazgeçtim. Konu farklı bir boyut alıyor :)
Ayarlar sayfasında sonstokodu güncellemesi problem.
Orası aslında ilk stok kodu gibi düşünülebilir.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Şimdi farkettim.
ListBox3_Click() olayında en son satıra

Bunu ekleyin. Eklemesenizde kodlar çalışır ancak bu şekilde daha hızlı olacaktır.

Vazgeçtim. Konu farklı bir boyut alıyor :)
Ayarlar sayfasında sonstokodu güncellemesi problem.
Orası aslında ilk stok kodu gibi düşünülebilir.

Asri hocam, siz cevap vermeden önce ben kendimce birşeyler yapmaya çalışmıştım. Kendi hazırladığım dosyanın son hali. Listbox4 üzerindeki kodları baz alarak işlem yaptırmaya çalıştım. Ancak daha pratik bir yolunu arıyordum. Son yazdığınız mesajda ne demek istediniz tam anlamadım. Uyarlamanızı deneyip inceleyeceğim.
 

Ekli dosyalar

Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri hocam, siz cevap vermeden önce ben kendimce birşeyler yapmaya çalışmıştım. Kendi hazırladığım dosyanın son hali. Listbox4 üzerindeki kodları baz alarak işlem yaptırmaya çalıştım. Ancak daha pratik bir yolunu arıyordum. Son yazdığınız mesajda ne demek istediniz tam anlamadım. Uyarlamanızı deneyip inceleyeceğim.
Benim düzenlememde listbox4 kullanılmıyor.
Listbox5 i de üretici/tedarikçi olarak ekleyebilirsiniz. Gerekli oluyor ise.

Program listbox lara kategorileri benzersiz ekler. Bu şekilde daha kolay seçim yapılabilir.
Listbox3 de seçim yapıldığıda stokkodu otomatik oluşur.

Bir önceki mesajım önemli değil. 10 binlerce stok da bile sorun olmaz diye düşünüyorum.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
10 binlerce kayıtta sorun oluyormuş.
Konu şu; ürün numarası tüm kategorilerden bağımsız artan bir numara ise her arrtığında ayarlar sayfasında A2 ye yazın
Bu durumda varmi sorgusunu kullanmanıza gerek kalmaz.
Her zaman yeni kayıtta oluşan kategoriye bu son kodun bir fazlasını eklersiniz. Program hızlı çalışır.

Hiç birşey anladım :)) Şimdi de deniyorum varmi sistemi ile çok hızlı kod belirliyor.
Neyse siz testlerinizi yapın. Ben birşey anlamadım :))
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
10 binlerce kayıtta sorun oluyormuş.
Konu şu; ürün numarası tüm kategorilerden bağımsız artan bir numara ise her arrtığında ayarlar sayfasında A2 ye yazın
Bu durumda varmi sorgusunu kullanmanıza gerek kalmaz.
Her zaman yeni kayıtta oluşan kategoriye bu son kodun bir fazlasını eklersiniz. Program hızlı çalışır.

Hiç birşey anladım :)) Şimdi de deniyorum varmi sistemi ile çok hızlı kod belirliyor.
Neyse siz testlerinizi yapın. Ben birşey anlamadım :))
Asri hocam, kodları tam anlamadım ama verdiği sonucu anlayabiliyorum ve gayet iyi iş çıkarıyor, ellerinize sağlık. Süper olmuş. Ama son cümlelerinizi yine anlamadım diyeceğim :) .

Kısaca program gayet güzel işliyor. Bir dünya para verip sıra numarası bile vermeyen sistemler var.

Son olarak eğer mümkünse bir iyileştirme isteyeceğim. Listboxlar üzerinde comboboxlar vardı. İl_İlçe mantığında olduğu gibi,

Listboxlar benzersiz değerler ile yükleniyor, evet doğru. Bir önceki listbox ya da ya da comboboxda seçim yaptığımızda bir sonraki listboxda yada comboboxda veriler filtrenebilir mi? Bu da olursa tam anlamıyla SÜPER olmuş olur.

örneğin, Listbox1 üzerinde Yiyecekler i seçtim, Listbox2 de sadece yiyecekler filtrelendi. Listbox2 de yiyecekler içinde Taze sebze ve meyveleri seçtim, Listbox3 de sadece sebze ve meyveler listelendi. Bu düşüncenin de uygulaması olabilir mi. Eğer olursa kullanıcıyı ciddi anlamda rahatlatır.

Bu arada uygulamanızdan başka kullanıcılarda faydalanmak isteyebilir diye bende olan derli toplu halini yüklüyorum.
 

Ekli dosyalar

Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Asri hocam, kodları tam anlamadım ama verdiği sonucu anlayabiliyorum ve gayet iyi iş çıkarıyor, ellerinize sağlık. Süper olmuş. Ama son cümlelerinizi yine anlamadım diyeceğim :) .

Kısaca program gayet güzel işliyor. Bir dünya para verip sıra numarası bile vermeyen sistemler var.

Son olarak eğer mümkünse bir iyileştirme isteyeceğim. Listboxlar üzerinde comboboxlar vardı. İl_İlçe mantığında olduğu gibi,

Listboxlar benzersiz değerler ile yükleniyor, evet doğru. Bir önceki listbox ya da ya da comboboxda seçim yaptığımızda bir sonraki listboxda yada comboboxda veriler filtrenebilir mi? Bu da olursa tam anlamıyla SÜPER olmuş olur.

örneğin, Listbox1 üzerinde Yiyecekler i seçtim, Listbox2 de sadece yiyecekler filtrelendi. Listbox2 de yiyecekler içinde Taze sebze ve meyveleri seçtim, Listbox3 de sadece sebze ve meyveler listelendi. Bu düşüncenin de uygulaması olabilir mi. Eğer olursa kullanıcıyı ciddi anlamda rahatlatır.

Bu arada uygulamanızdan başka kullanıcılarda faydalanmak isteyebilir diye bende olan derli toplu halini yüklüyorum.
Öncelikle bu cevaplanmalı.
Son kırılımdaki ürün kodu (50001) kategoriye mi bağlı benzersiz mi her üründe sürekli artan bir numaramı?

Bu şekilde kategori değişiyor ancak ürün kodu sürekli aynı şekilde artıyor mu?
Bu şekilde olursa 10 bin ürün olduğunda yeni kayıt numarası almak zaman almaz. Son kayıt numarasından devam edilir.
100-100-100-50001
100-100-101-50002

Bu şekilde kategori değişiyor ancak ürün kodu da kategoriye göre mi artıyor?
Bu şekilde olursa 10 bin ürün olduğunda yeni kayıt numarası almak zaman alabilir.
100-100-100-50001
100-100-101-50001
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Öncelikle bu cevaplanmalı.
Son kırılımdaki ürün kodu (50001) kategoriye mi bağlı benzersiz mi her üründe sürekli artan bir numaramı?

Bu şekilde kategori değişiyor ancak ürün kodu sürekli aynı şekilde artıyor mu?
Bu şekilde olursa 10 bin ürün olduğunda yeni kayıt numarası almak zaman almaz. Son kayıt numarasından devam edilir.
100-100-100-50001
100-100-101-50002

Bu şekilde kategori değişiyor ancak ürün kodu da kategoriye göre mi artıyor?
Bu şekilde olursa 10 bin ürün olduğunda yeni kayıt numarası almak zaman alabilir.
100-100-100-50001
100-100-101-50001

Benim tasarladığımda ilk üç hesap sabit, yani ana hesap ve alt kategoriler sabit. sadece son kısım, sizin verdiğiniz örnekte 50001 kısmı artan kısım olacak.

Ancak şu da var, ve sanırım asıl sorduğunuz bu olabilir. Ana hesaplara, alt kategorilere ekleme olabilir mi zamanla. Bir ihtimal olabilir. yada sorduğunuz bu değilse bile cevaplamış olayım. Ana kategoriye ya da alt kırılımlara da zamanla ekleme olabilir. Ancak bunlar hergün olacak eklemeler olmadığı için manuel olarak yapılabilir. benim açımdan önemli olan detay bazda anlık olarak hesap açabilmek. Mümkün olduğunca az click yaparak işlem yapmak, hatta mümkünse tek klik ile işi çözmek.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Kontrol ediniz.
 

Ekli dosyalar

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025

Hocam teşekkürler, istediğim şey buydu. Yalnızca ufak bir problemi var. Listbox3 üzerinde gereksiz yere click yapıldığını düşünürsek arada sıra numarası kaybolacaktır. Yani kaydet işlemi yapmadan önce birden fazla click olayı olduğunda sıra numarası bozulmakta.

Bunu şu şekilde çözebilir miyiz. Sizin kodlarınızın yaptığı şey , benim tanımlama ma göre ID numarası veriyor. kaydedilen veriler UrunListesi adlı sayfada sıralanmakta. Buna göre , sizin kodlarınız bir ID numarası veriyorsa, UrunListesi adlı sayfada, ürün kodu sütununda, kod satır değerlerinin sağdan enbüyük değerini alarak çözüm üretilebilir mi.

Kısaca gereksiz yere olan click olaylarından dolayı sıra no kaybetmek istemiyorum.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Problem yok, bu kodu command buton2 nin içine taşıyın.
Sheets("Ayarlar").Range("A2").Value = sonstokkodu

C#:
Private Sub CommandButton2_Click()
    Set shurunler = Sheets("UrunListesi")
    If TextBox1 = "" Or TextBox2 = "" Then
       MsgBox ("Ürün kodu ve ürün adı boş geçilemez")
       Exit Sub
    End If
    sonsatir = shurunler.Cells(shurunler.Rows.Count, "A").End(3).Row + 1
    shurunler.Range("A" & sonsatir).Value = stokkodu
    shurunler.Range("B" & sonsatir).Value = TextBox2
    Sheets("Ayarlar").Range("A2").Value = sonstokkodu
    TextBox1 = ""
    TextBox2 = ""
    MsgBox "Stok Kartı Oluşturuldu", vbInformation
    TextBox2.SetFocus
End Sub
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Problem yok, bu kodu command buton2 nin içine taşıyın.
Sheets("Ayarlar").Range("A2").Value = sonstokkodu

C#:
Private Sub CommandButton2_Click()
    Set shurunler = Sheets("UrunListesi")
    If TextBox1 = "" Or TextBox2 = "" Then
       MsgBox ("Ürün kodu ve ürün adı boş geçilemez")
       Exit Sub
    End If
    sonsatir = shurunler.Cells(shurunler.Rows.Count, "A").End(3).Row + 1
    shurunler.Range("A" & sonsatir).Value = stokkodu
    shurunler.Range("B" & sonsatir).Value = TextBox2
    Sheets("Ayarlar").Range("A2").Value = sonstokkodu
    TextBox1 = ""
    TextBox2 = ""
    MsgBox "Stok Kartı Oluşturuldu", vbInformation
    TextBox2.SetFocus
End Sub
Asri Hocam , verdiğiniz kod aralığını ekledim ancak değişen birşey yok yanlış anlamadıysam , KAYDET demediğim halde belirtilen adresdeki sayı sürekli artıyor görünüyor.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Sebebi diğerini silmemeniz :)
Aynı kodu bulup diğer yerden silin.

kodu commandbuton2 içine taşıyın demiştim. Kopyalayın değil.
 

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
646
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Sebebi diğerini silmemeniz :)
Aynı kodu bulup diğer yerden silin.

kodu commandbuton2 içine taşıyın demiştim. Kopyalayın değil.

Silmedim, başına tırnak koydum :)

Teşekkürler, Emeğinize sağlık. Benim için muazzam oldu, aynı zamanda beyin yakıcı :)

Dosyanın son hali ektedir, değerlendirmek isteyen için
 

Ekli dosyalar

Üst