Fiş / Yevmiye Numarası

walabi

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

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

Şöylesi birşey yapmak istiyorum. Excel sayfasının ilk satırları sütun başlıkları. Yani ikinci satırdan başlamak üzere; userform üzerinde bulunan textbox, listbox, combobox yapıştırmak excel sayfasına gitmek istiyorum. Bunu yaparken 1 nolu fiş (1 nolu işlem ya da sadece 1), 2 nolu fiş, 3 nolu fiş gibi numara vermek istiyorum. Ama şu şekilde.
Örneğin;

ID (Fiş No) Firma Malzeme Satır Tutarı
1 nolu fiş xxxxx a 2,29
1 nolu fiş xxxxx b 3,10
1 nolu fiş xxxxx c 1,85

2 nolu fiş yyyyy a 5,55
2 nolu fiş yyyyy b 6,42

3 nolu fiş zzzzzz e 4,44
3 nolu fiş zzzzzz f 5,57



Yapmaya çalıştığım şey aslında sayaç mantığı sanırım ama vba dilinde mantığını kuramadım. Her işlem sonucunda yeni satırlara +1 değer verecek bir kod nasıl olmalıdır.
 

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Örnek dosya ekledim, istediğim şey dosyadaki A sütunu ile ilgili. bu numaralandırma işlemi için gerekli bir kod gerekli.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Dosyanızda herhangi bir userform ya da combobox vs bulunmuyor. Bu nedenle nasıl bir kod istediğinizi anlamadım. Formülle isterseniz A2 hücresinde aşağıdaki formül istediğiniz sonucu vermektedir:

=EĞER(YADA(B2<>B1;D2<>D1);MAK($A$1:A1)+1;A1)
 

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Dosyanızda herhangi bir userform ya da combobox vs bulunmuyor. Bu nedenle nasıl bir kod istediğinizi anlamadım. Formülle isterseniz A2 hücresinde aşağıdaki formül istediğiniz sonucu vermektedir:

=EĞER(YADA(B2<>B1;D2<>D1);MAK($A$1:A1)+1;A1)
Yusuf bey, çok özür, dosya aslı ektedir.

.Cells(sonsat1, "A") = 1

Üstteki kodun = den sonrası istediğim sonucu vermeli.

Userform4 üzerinde, Kaydet butonu altında ,
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları dener misiniz?

PHP:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

Sheets("Alış").Unprotect Password:="1453"
Sheets("Stok").Unprotect Password:="1453"

Dim i  As Long
Dim sonsat1 As Long
 
    For i = 1 To ListBox1.ListCount - 1
        sonsat1 = Sheets("Stok").[A65536].End(3).Row + 1
        With Sheets("Stok")
            .Cells(sonsat1, "B") = ListBox1.List(i, 0)
            .Cells(sonsat1, "C") = ListBox1.List(i, 1)
            .Cells(sonsat1, "D") = ListBox1.List(i, 2)
            .Cells(sonsat1, "E") = ListBox1.List(i, 3)
            If .Cells(sonsat1 - 1, "C") <> .Cells(sonsat1, "C") Or .Cells(sonsat1 - 1, "E") <> .Cells(sonsat1, "E") Then
                .Cells(sonsat1, "A") = WorksheetFunction.Max(.Range("A1:A" & sonsat)) + 1
            Else
                .Cells(sonsat1, "A") = .Cells(sonsat1 - 1, "A")
            End If
            .Cells(sonsat1, "F") = ListBox1.List(i, 4)
            .Cells(sonsat1, "G") = ListBox1.List(i, 5)
            .Cells(sonsat1, "H") = ListBox1.List(i, 6)
            .Cells(sonsat1, "I") = ListBox2.List(i, 0)
            .Cells(sonsat1, "J") = 0 ' ListBox2.List(i, 6) ' stok çıkış, satış işlemi için
            .Cells(sonsat1, "K") = ListBox2.List(i, 1) * 1
            .Cells(sonsat1, "L") = ListBox2.List(i, 2) * 1
            .Cells(sonsat1, "M") = ListBox2.List(i, 3)
            .Cells(sonsat1, "N") = ListBox2.List(i, 4) * 1
            .Cells(sonsat1, "O") = ListBox2.List(i, 5) * 1
            .Cells(sonsat1, "P") = ListBox2.List(i, 6)
            .Cells(sonsat1, "Q") = ListBox2.List(i, 7) * 1
            .Cells(sonsat1, "R") = ListBox2.List(i, 8) * 1
        End With
    Next i
        
    sonsat2 = Sheets("Alış").[A65536].End(3).Row + 1
    With Sheets("Alış")
        .Cells(sonsat2, "A") = sonsat1 - 1 ' ID yani sıra numarası eklemeyi sağlar
        .Cells(sonsat2, "B") = ComboBox1.Text
        .Cells(sonsat2, "C") = TextBox1.Text
        .Cells(sonsat2, "D") = TextBox2.Text
        .Cells(sonsat2, "E") = TextBox3.Text
        .Cells(sonsat2, "F") = TextBox4.Text
        .Cells(sonsat2, "G") = TextBox19.Value
    End With
 '******************* alış birim fiyat değişimi için **********************
 
 ' ***********************************************************************
    
    ListBox1.Clear
    ListBox2.Clear
    TextBox18 = ""
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    TextBox19 = ""
    TextBox18.SetFocus
    ActiveWorkbook.Save
    Sheets("Alış").Protect Password:="1453"
    Sheets("Stok").Protect Password:="1453"
    Application.ScreenUpdating = True
    MsgBox "Veriler Kaydedildi"
End Sub
 

walabi

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

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Aşağıdaki kodları dener misiniz?

PHP:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

Sheets("Alış").Unprotect Password:="1453"
Sheets("Stok").Unprotect Password:="1453"

Dim i  As Long
Dim sonsat1 As Long

    For i = 1 To ListBox1.ListCount - 1
        sonsat1 = Sheets("Stok").[A65536].End(3).Row + 1
        With Sheets("Stok")
            .Cells(sonsat1, "B") = ListBox1.List(i, 0)
            .Cells(sonsat1, "C") = ListBox1.List(i, 1)
            .Cells(sonsat1, "D") = ListBox1.List(i, 2)
            .Cells(sonsat1, "E") = ListBox1.List(i, 3)
            If .Cells(sonsat1 - 1, "C") <> .Cells(sonsat1, "C") Or .Cells(sonsat1 - 1, "E") <> .Cells(sonsat1, "E") Then
                .Cells(sonsat1, "A") = WorksheetFunction.Max(.Range("A1:A" & sonsat)) + 1
            Else
                .Cells(sonsat1, "A") = .Cells(sonsat1 - 1, "A")
            End If
            .Cells(sonsat1, "F") = ListBox1.List(i, 4)
            .Cells(sonsat1, "G") = ListBox1.List(i, 5)
            .Cells(sonsat1, "H") = ListBox1.List(i, 6)
            .Cells(sonsat1, "I") = ListBox2.List(i, 0)
            .Cells(sonsat1, "J") = 0 ' ListBox2.List(i, 6) ' stok çıkış, satış işlemi için
            .Cells(sonsat1, "K") = ListBox2.List(i, 1) * 1
            .Cells(sonsat1, "L") = ListBox2.List(i, 2) * 1
            .Cells(sonsat1, "M") = ListBox2.List(i, 3)
            .Cells(sonsat1, "N") = ListBox2.List(i, 4) * 1
            .Cells(sonsat1, "O") = ListBox2.List(i, 5) * 1
            .Cells(sonsat1, "P") = ListBox2.List(i, 6)
            .Cells(sonsat1, "Q") = ListBox2.List(i, 7) * 1
            .Cells(sonsat1, "R") = ListBox2.List(i, 8) * 1
        End With
    Next i
       
    sonsat2 = Sheets("Alış").[A65536].End(3).Row + 1
    With Sheets("Alış")
        .Cells(sonsat2, "A") = sonsat1 - 1 ' ID yani sıra numarası eklemeyi sağlar
        .Cells(sonsat2, "B") = ComboBox1.Text
        .Cells(sonsat2, "C") = TextBox1.Text
        .Cells(sonsat2, "D") = TextBox2.Text
        .Cells(sonsat2, "E") = TextBox3.Text
        .Cells(sonsat2, "F") = TextBox4.Text
        .Cells(sonsat2, "G") = TextBox19.Value
    End With
'******************* alış birim fiyat değişimi için **********************

' ***********************************************************************
   
    ListBox1.Clear
    ListBox2.Clear
    TextBox18 = ""
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    TextBox19 = ""
    TextBox18.SetFocus
    ActiveWorkbook.Save
    Sheets("Alış").Protect Password:="1453"
    Sheets("Stok").Protect Password:="1453"
    Application.ScreenUpdating = True
    MsgBox "Veriler Kaydedildi"
End Sub

Yusuf Bey teşekkürler, istediğim gibi çalışıyor, sadece sizin yazdığınız satırda sonsat ifadesi sonsat1 olarak değişmeli, kendi dosyamda düzelttim, bir başkasına lazım olabilir diye belirttim. Teşekkürler,
 
Üst