• 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ü Listviewden ve sayfadan veri silme

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.

Bluekaya

Yeni Üye
Katılım
23 Mar 2021
Mesajlar
225
Çözümler
3
Aldığı beğeni
31
Excel V
Office 2016 TR
Konu Sahibi
Merhabalar hocalarım ilk söylediğim gibi listviewden çok anlamadığım için çözüm bulamayınca destek aldığım sizlerin yanına koşa koşa geldim..

Sorunum şu bir adet listviewim var ( olmaz olaydı :D ) ben bu listview e eklediğim verileri seçileni sil dediğimde hem listviewden, hem satisdetay sayfasından satır olarak silmeli ve ayrıca seçtiğim satırdaki ürünlerin adlarını bulup "SATISLAR" ve "faturastok" sayfalarından sattığım adet kadar geri düşmeli yani satışı iptal etmek gibi birşey


2 adet ürün var ama adetleri aynı satış yapılıyor ürün adı kısmındaki ürün isimleri ve yan ürün ismindeki ürünleri.

bunu normalde comboboxda çift tıklayınca silme işlemini yine sizlerin sayesinde yapmıştık şimdi aşağıdaki kodlar listview e uyarlamaya çalıştım ama olmadı. lütfen yardım.


HTML:
C#:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Merhaba abey.
Önce alttaki konudaki 8.Mesajdakini uygularsanız takvim textboxun ordan açılır.
Çözüldü - Datepicker ekleme hatası

ikinci olarak sayfada Satır No gibi benzersiz alan olmadığı için silme işleminde sıkıntı yaşarsınız eğer arama yapıpta silme yaparsanız.
Bence dediğim Satır No yu ekleyin.
Ayrıca konu açarken hangi userformda hangi comboda felan işlem yapılacak belirtirseniz anlamış oluruz.

Dosyanızda zaten alttaki kod var ve çalışıyor ama dediğim gibi arama yapıp çalışırsa hatalı çalışır.

HTML:
C#:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Merhaba abey.
Önce alttaki konudaki 8.Mesajdakini uygularsanız takvim textboxun ordan açılır.
Çözüldü - Datepicker ekleme hatası

ikinci olarak sayfada Satır No gibi benzersiz alan olmadığı için silme işleminde sıkıntı yaşarsınız eğer arama yapıpta silme yaparsanız.
Bence dediğim Satır No yu ekleyin.
Ayrıca konu açarken hangi userformda hangi comboda felan işlem yapılacak belirtirseniz anlamış oluruz.

Dosyanızda zaten alttaki kod var ve çalışıyor ama dediğim gibi arama yapıp çalışırsa hatalı çalışır.

HTML:
C#:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Hocam öncelikle tüm yardımların için çok teşekkür ederim textbox a tıklayınca açılan takvim daha seksi duruyor :D diğer soruma gelince bu derdimide daha önce "askan" hocamız çözmüştü ama listbox ile çift tıklayınca yapmıştık Buradan bakabilirsiniz şimdi aynı işlevi listview in buton yardımı ile çalışmasını sağlamaya çalıştım lakin olmadı.
 
Konu Sahibi
Belki resim ile daha iyi anlatırım diye bir grafik çizdim hocam teşekkür ederim tüm destekleriniz için.
 
Abey verdiğiniz kodu Listviewe göre uygularım sadece aslında dönüştürmesi basit.

If ListView1.Selected(i) = True Then yerine If ListView1.ListItems(i).Selected = True Then
ve ListView1.ListCount - 1 yerine ListView1.ListItems.Count - 1
gibi değiştirilmeli örneğin.
Dediğim gibi akşam ayarlarım nasipse.
 
Konu Sahibi
Abey verdiğiniz kodu Listviewe göre uygularım sadece aslında dönüştürmesi basit.

If ListView1.Selected(i) = True Then yerine If ListView1.ListItems(i).Selected = True Then
ve ListView1.ListCount - 1 yerine ListView1.ListItems.Count - 1
gibi değiştirilmeli örneğin.
Dediğim gibi akşam ayarlarım nasipse.
Valla hocam heycanla bekliyorum birde silmek istediğinize eminmisin evet hayır mesaj onaylaması olsun lütfen
 
Konu Sahibi
Abey verdiğiniz kodu Listviewe göre uygularım sadece aslında dönüştürmesi basit.

If ListView1.Selected(i) = True Then yerine If ListView1.ListItems(i).Selected = True Then
ve ListView1.ListCount - 1 yerine ListView1.ListItems.Count - 1
gibi değiştirilmeli örneğin.
Dediğim gibi akşam ayarlarım nasipse.
Üstadım dosyanın güncel halini gönderdim bilginize 2 adet komutunuzu değiştirdim çünkü combobox ve textboxa veri getirmesini engelliyordu şu an sorun yok gibi sıkıntısız çalışıyor ama olurmu diye size danışayım dedim saygılarla.

Çıkarttığım ve değiştirdiğim kodlar.


Dim i As Long, say As Long
Dim syf As Worksheet
Set syf = Sheets("ürünstok")
tiklandimi = False
With Me.ComboBox1
'.Column = Array(Empty) -------------------------BİRİSİ BURASI PASİFE ALDIM ALMADAN ÖNCE on error resume next denedim olmadı
.RowSource = ""
ReDim arr(1 To 1, 1 To 1)
say = 1
son = syf.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To son
If Evaluate("=upper(""" & syf.Cells(i, 2).Value & """)") Like "" & Evaluate("=upper(""" & .Value & """)") & "" Then
ReDim Preserve arr(1 To 1, 1 To say)
arr(1, say) = syf.Cells(i, 2).Value
say = say + 1
End If
Next
.Column = arr
Erase arr
ReDim arr(1 To 1, 1 To 1)
If .Value <> "" Then .DropDown

End With
tiklandimi = True


End Sub

Private Sub ComboBox1_DropButtonClick()
If tiklandimi = False Then Exit Sub
Dim i As Long, say As Long
Dim syf As Worksheet
Set syf = Sheets("ürünstok")
With Me.ComboBox1
On Error Resume Next
.Column = Array(Empty)

ReDim arr(1 To 1, 1 To 1)
say = 1
son = syf.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To son
ReDim Preserve arr(1 To 1, 1 To say)
arr(1, say) = syf.Cells(i, 2).Value
say = say + 1
Next
.Column = arr
Erase arr
ReDim arr(1 To 1, 1 To 1)
.DropDown
End With
secilenIndex = ComboBox1.ListIndex + 2 ----------------------------------- DEĞİŞTİRDİĞİM DİĞER KOD BURASI +1 Dİ +2 YAPTIM
Me.ComboBox3.Text = Sheets("ürünlist").Range("C" & secilenIndex)
Me.TextBox3.Text = Sheets("ürünlist").Range("D" & secilenIndex)
Me.ComboBox2.Text = Sheets("ürünlist").Range("E" & secilenIndex)
End Sub
 
Üstadım dosyanın güncel halini gönderdim bilginize 2 adet komutunuzu değiştirdim çünkü combobox ve textboxa veri getirmesini engelliyordu şu an sorun yok gibi sıkıntısız çalışıyor ama olurmu diye size danışayım dedim saygılarla.

Çıkarttığım ve değiştirdiğim kodlar.


Dim i As Long, say As Long
Dim syf As Worksheet
Set syf = Sheets("ürünstok")
tiklandimi = False
With Me.ComboBox1
'.Column = Array(Empty) -------------------------BİRİSİ BURASI PASİFE ALDIM ALMADAN ÖNCE on error resume next denedim olmadı
.RowSource = ""
ReDim arr(1 To 1, 1 To 1)
say = 1
son = syf.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To son
If Evaluate("=upper(""" & syf.Cells(i, 2).Value & """)") Like "" & Evaluate("=upper(""" & .Value & """)") & "" Then
ReDim Preserve arr(1 To 1, 1 To say)
arr(1, say) = syf.Cells(i, 2).Value
say = say + 1
End If
Next
.Column = arr
Erase arr
ReDim arr(1 To 1, 1 To 1)
If .Value <> "" Then .DropDown

End With
tiklandimi = True


End Sub

Private Sub ComboBox1_DropButtonClick()
If tiklandimi = False Then Exit Sub
Dim i As Long, say As Long
Dim syf As Worksheet
Set syf = Sheets("ürünstok")
With Me.ComboBox1
On Error Resume Next
.Column = Array(Empty)

ReDim arr(1 To 1, 1 To 1)
say = 1
son = syf.Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To son
ReDim Preserve arr(1 To 1, 1 To say)
arr(1, say) = syf.Cells(i, 2).Value
say = say + 1
Next
.Column = arr
Erase arr
ReDim arr(1 To 1, 1 To 1)
.DropDown
End With
secilenIndex = ComboBox1.ListIndex + 2 ----------------------------------- DEĞİŞTİRDİĞİM DİĞER KOD BURASI +1 Dİ +2 YAPTIM
Me.ComboBox3.Text = Sheets("ürünlist").Range("C" & secilenIndex)
Me.TextBox3.Text = Sheets("ürünlist").Range("D" & secilenIndex)
Me.ComboBox2.Text = Sheets("ürünlist").Range("E" & secilenIndex)
End Sub
Sayın abey.
Private Sub UserForm_Initialize() bu koda ComboBox1.RowSource = "ürünlist!B2:B" & Sheets("ürünlist").Range("a50000").End(3).Row eklemişsiniz oysa ürünstok sayfasından alınıyor veriler.
Her neyse konumuz bu değil ben kodları ayarlayıp eklerim.

UserForm_Initialize bu koddakini zaten iptal etmiştim ve ComboBox1_DropButtonClick bununla yapmıştım.
 
Konu Sahibi
Sayın abey.
Private Sub UserForm_Initialize() bu koda ComboBox1.RowSource = "ürünlist!B2:B" & Sheets("ürünlist").Range("a50000").End(3).Row eklemişsiniz oysa ürünstok sayfasından alınıyor veriler.
Her neyse konumuz bu değil ben kodları ayarlayıp eklerim.

UserForm_Initialize bu koddakini zaten iptal etmiştim ve ComboBox1_DropButtonClick bununla yapmıştım.
Hocam amacım comboboxdan ürün seçtiğimde ürünlist deki ürün adlarını bulup yanındaki fiyatı, Ek ürünü ve fatura ürünü textbox ve comboboxlara taşımaktı siz derdimi anladınız :)
 
Kodu listviewe göre uyarladım ama sayfa bulanamdı diye uyarı verip duruyor.
Yani Listview ile alakası yok.
 
Çözüm
Userform1 deli listviewe çift tıklayın.
Kod Private Sub ListView1_DblClick() burda.
 
Konu Sahibi
Kodu listviewe göre uyarladım ama sayfa bulanamdı diye uyarı verip duruyor.
Yani Listview ile alakası yok.
Dim i As Integer
For i = 0 To ListView1.ListItems - 1
If ListView1.Selected(i) = True Then
sn = ListView1.ListItems(ListView1.SelectedItem.Index).Text
cevap = MsgBox("Silmek istediğinizden emin misiniz?", vbYesNo, " Silme Onayı")
If cevap = vbYes Then
Set sht = Sheets("SATISLAR") ---------------------------------BU KISIMI DATA YAPMISSIN HOCAM
t = CLng(CDate(ListView1.List(i, 0))) 'tarih
s = "SATISLAR" ' satış sayfası
u = ListView1.List(i, 1)
a = ListView1.List(i, 2) 'Adet
ss = Sheets(s).Cells(Rows.Count, 4).End(xlUp).Row
say1 = WorksheetFunction.Match(t, Sheets(s).Columns(4), 0)
If say1 = Empty Then say1 = ss + 1: Sheets(s).Cells(say1, 4) = CDate(t)
say2 = WorksheetFunction.Match(u, Sheets(s).Rows(1), 0)
If ss = Empty Then MsgBox "Sayfa bulunamadı.": Exit Sub
If say2 = Empty Then MsgBox "Ürün bulunamadı.": Exit Sub
Sheets(s).Cells(say1, say2) = Sheets(s).Cells(say1, say2) - a


data sayfası yapmışsın hocam lakin bende data sayfası yok datayı SATISLAR yaptığımda ise şurası hata verdi

For i = 0 To ListView1.ListItems - 1
 
Benim değiştirdiğim kod altta abey.
Onları inceleyip uyarlayın.
Ayrıca Listviewe çift tıklayınca döngüye gerek yok aslında seçilienin index numarası bulunurki kodda var zaten aslında böyle daha iyi olurdu.
Kısaca Alttaki kodda listview ile ilgili kodlar var abey bakıp uyarlayın.

Benden bu kadar yoksa konu uzayıp duruyor :)
Siz uğraşıp düzenleyin sonra yeni konu açarsınız.
Ben yinede kodların bazılarını açıklayayım.

For i = 1 To ListView1.ListItems.Count burada listviewin son satırına kadar döngü kuruldu.
If ListView1.ListItems(i).Selected = True Then burada seçildiyse.
ListView1.ListItems(i).Index döngü çalışınca seçilen satırın listviewin index(satır) nosu.
u = ListView1.SelectedItem.SubItems(6) listviewde seçilenin 7.sütundaki veri.Bununla döngüsüz bulunur.
ListView1.ListItems.Remove ListView1.SelectedItem.Index Listview1 de seçilen silinir alistviewden.


HTML:
C#:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Benim değiştirdiğim kod altta abey.
Onları inceleyip uyarlayın.
Ayrıca Listviewe çift tıklayınca döngüye gerek yok aslında seçilienin index numarası bulunurki kodda var zaten aslında böyle daha iyi olurdu.
Kısaca Alttaki kodda listview ile ilgili kodlar var abey bakıp uyarlayın.

Benden bu kadar yoksa konu uzayıp duruyor :)
Siz uğraşıp düzenleyin sonra yeni konu açarsınız.
Ben yinede kodların bazılarını açıklayayım.

For i = 1 To ListView1.ListItems.Count burada listviewin son satırına kadar döngü kuruldu.
If ListView1.ListItems(i).Selected = True Then burada seçildiyse.
ListView1.ListItems(i).Index döngü çalışınca seçilen satırın listviewin index(satır) nosu.
u = ListView1.SelectedItem.SubItems(6) listviewde seçilenin 7.sütundaki veri.Bununla döngüsüz bulunur.
ListView1.ListItems.Remove ListView1.SelectedItem.Index Listview1 de seçilen silinir alistviewden.


HTML:
C#:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Halettim hocam ürün ismini yanlış yerden çekmişiz hocam birde bu her işlem sonu listview2 yi güncellemesi mümkünmü
 
Koda yanlı yazmadıysam mobilden alttakini ekleyin.

Listview2.refresh
 
Rica ederim.
Aslında kodlarınız içinde var alttaki
Bunu sona eklerseniz listview2 silinip tekrar güncellenir.
Aslında ayrı bir sub içine alınsaydı tekrar aynı kodu yazmaya gerek olmazdı.
.ListItems.Clear bunu ben sonradan ekledim alttaki koda.

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
Rica ederim.
Aslında kodlarınız içinde var alttaki
Bunu sona eklerseniz listview2 silinip tekrar güncellenir.
Aslında ayrı bir sub içine alınsaydı tekrar aynı kodu yazmaya gerek olmazdı.
.ListItems.Clear bunu ben sonradan ekledim alttaki koda.

HTML:
C++:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Çok teşekkür ederim hocam çok kısa birşey daha soracağım peki aynı işilemi; Ben userform2 de kayıt yaptığımda userform1 deki listview2 yi nasıl refresh edebilirim ?
 
Çok teşekkür ederim hocam çok kısa birşey daha soracağım peki aynı işilemi; Ben userform2 de kayıt yaptığımda userform1 deki listview2 yi nasıl refresh edebilirim ?
Rica ederim.
Userform2 deli listviewe hangi kodla veri alıyorsanız o kodla abey.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst