اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

هل يمكن تعديل الكميه بناء على رقم الفاتورة وكود الصنف مع العلم عند تعديل على رقم الفاتورة يقوم بتحديث الكميه كل البيانات مع اختلاف كود الصنف وهذا خطاء لانة بيقوم على حسب الفاتورة و الفاتورة يووجد بيها اصناف كتيرة مختلفة وعند عملية التعديل كل كميات الفاتورة بتبقى معدله مع العلم أن كود الصنف Combobox 3 ومدرجه فى الخليه H



Private Sub CommandButton2_Click()

    ' التحقق من وجود ورقة العمل "Transferts"

    If Not WorksheetExists("Log") Then

        MsgBox "غير موجودة" & " " & "Transferts" & " ورقة العمل", vbCritical, "خطأ"

        Exit Sub

    End If

    

    ' التحقق من القيم الفارغة

    If ListBox1.ListIndex = -1 Or (ComboBox3.Value = "" And Me.TextBox1.Value = "") Then Exit Sub

    

    If ListBox1.ListIndex <> -1 Then

        ' التحقق من صحة البيانات

        If Not IsNumeric(TextBox1.Value) Then

            MsgBox "الكمية يجب أن تكون رقمًا."

            Exit Sub

        End If



        If ComboBox1.ListIndex = -1 Then

            MsgBox "يرجى اختيار المخزن الذي سيتم النقل منه."

            Exit Sub

        End If

        

        Dim wsSales As Worksheet, wsStock As Worksheet

        Dim lastRowSales As Long, lastRowStock As Long

        Dim i As Long, j As Long

        Dim invoiceNo As Long, fromStore As String, toStore As String

        Dim fromStore1 As Long, toStore2 As Long

        Dim itemCode As String, quantity As Long, newQuantity As Long

        Dim quantityDiff As Long

        

        invoiceNo = Val(TextBox2.Value)

        fromStore = ComboBox1.Value

        toStore = ComboBox2.Value

        fromStore1 = Val(stocktr.Value)

        toStore2 = Val(stocktrr.Value)

        

        Set wsSales = Worksheets("Log")

        Set wsStock = Worksheets("Inventaire")

        lastRowSales = wsSales.Cells(wsSales.Rows.Count, "A").End(xlUp).Row

        

    For i = 2 To lastRowSales

        If wsSales.Cells(i, "A").Value = invoiceNo Then

            quantity = wsSales.Cells(i, "J").Value ' الكمية الأصلية

            newQuantity = Val(TextBox1.Value) ' الكمية المعدلة

            quantityDiff = newQuantity - quantity ' الفرق بين الكمية الأصلية والمعدلة

            

            ' تعديل الكمية في سجل المبيعات

            wsSales.Cells(i, "J").Value = newQuantity

            wsSales.Cells(i, "M").Value = Now() ' تاريخ التعديل

            wsSales.Cells(i, "N").Value = Environ("Username") ' اسم المستخدم

            

            ' تحديث المخزون بناءً على الفرق في الكمية

            lastRowStock = wsStock.Cells(wsStock.Rows.Count, "A").End(xlUp).Row

            For j = 2 To lastRowStock

                If wsStock.Cells(j, "B").Value = fromStore Then

                    wsStock.Cells(j, "G").Value = wsStock.Cells(j, "G").Value - quantityDiff ' إضافة أو طرح الفرق من المخزن الأصلي

                ElseIf wsStock.Cells(j, "B").Value = toStore Then

                    wsStock.Cells(j, "G").Value = wsStock.Cells(j, "G").Value + quantityDiff ' خصم الفرق من المخزن الآخر

                    wsStock.Cells(j, "M").Value = Now() ' تاريخ التعديل

                    wsStock.Cells(j, "N").Value = Environ("Username") ' اسم المستخدم

                End If

            Next j

        End If

    Next i

    

    MsgBox "تم تعديل الفاتورة وإرجاع الكميات بنجاح"

Else

    MsgBox "المرجوا تحديد الصف المراد تعديله", vbCritical, ""

End If

end sub

 

برنامج امين المخزن2022.xlsm

قام بنشر
Private Sub CommandButton2_Click()
' التحقق من وجود ورقة العمل "Transferts"
    If Not WorksheetExists("Log") Then
        MsgBox "غير موجودة" & " " & "Transferts" & " ورقة العمل", vbCritical, "خطأ"
        Exit Sub
    End If
    
    ' التحقق من القيم الفارغة
    If ListBox1.ListIndex = -1 Or (ComboBox3.Value = "" And Me.TextBox1.Value = "") Then Exit Sub
    
    If ListBox1.ListIndex <> -1 Then
        ' التحقق من صحة البيانات
        If Not IsNumeric(TextBox1.Value) Then
            MsgBox "الكمية يجب أن تكون رقمًا."
            Exit Sub
        End If
        If ComboBox1.ListIndex = -1 Then
            MsgBox "يرجى اختيار المخزن الذي سيتم النقل منه."
            Exit Sub
        End If
    Dim wsSales As Worksheet, wsStock As Worksheet
    Dim lastRowSales As Long, lastRowStock As Long
    Dim i As Long, j As Long
    Dim invoiceNo As Long, fromStore As String, toStore As String
    Dim fromStore1 As Long, toStore2 As Long
    Dim itemCode As String, quantity As Long, newQuantity As Long
    Dim quantityDiff As Long
    Dim foundItem As Boolean ' متغير للتحقق من وجود المنتج في المخزن
    invoiceNo = Val(TextBox2.Value)
    fromStore = ComboBox1.Value
    toStore = ComboBox2.Value
    itemCode = ComboBox3.Value
    Set wsSales = Worksheets("Log")
    Set wsStock = Worksheets("Inventaire")
    lastRowSales = wsSales.Cells(wsSales.Rows.Count, "A").End(xlUp).Row
    For i = 2 To lastRowSales
        If wsSales.Cells(i, "A").Value = invoiceNo And wsSales.Cells(i, "H").Value = itemCode Then
            quantity = wsSales.Cells(i, "J").Value
            newQuantity = Val(TextBox1.Value)
            quantityDiff = newQuantity - quantity
            ' تحديث الكمية في سجل المبيعات
            wsSales.Cells(i, "J").Value = newQuantity
            wsSales.Cells(i, "M").Value = Now()
            wsSales.Cells(i, "N").Value = Environ("Username")
            foundItem = False
            lastRowStock = wsStock.Cells(wsStock.Rows.Count, "A").End(xlUp).Row
            For j = 2 To lastRowStock
                If wsStock.Cells(j, "B").Value = fromStore And wsStock.Cells(j, "C").Value = itemCode Then
                    If wsStock.Cells(j, "G").Value - quantityDiff >= 0 Then
                        wsStock.Cells(j, "G").Value = wsStock.Cells(j, "G").Value - quantityDiff
                        foundItem = True
                    Else
                        MsgBox "الكمية الجديدة أقل من الكمية المتاحة في المخزن.", vbCritical
                        Exit Sub ' الخروج من الـsub إذا كانت الكمية غير كافية
                    End If
                ElseIf wsStock.Cells(j, "B").Value = toStore And wsStock.Cells(j, "C").Value = itemCode Then
                    wsStock.Cells(j, "G").Value = wsStock.Cells(j, "G").Value + quantityDiff
                    wsStock.Cells(j, "M").Value = Now()
                    wsStock.Cells(j, "N").Value = Environ("Username")
                End If
            Next j
            If Not foundItem Then
                MsgBox "لم يتم العثور على المنتج في المخزن المصدر.", vbCritical
                Exit Sub
            End If
        End If
    Next i
    MsgBox "تم تعديل الفاتورة وإرجاع الكميات بنجاح"
End Sub
Yahoo Mail: Search, Organize, Conquer

المشكلة ماذالت قائمة بعد إضافة شرط اخر بكود الصنف Combobox 3 

لقد عالج الكميه فى ورقة العمل  Log

ولم يعالج تحديث المخزون فى ورقة المخزون Inventaire

قام بنشر (معدل)

لقد وجدت الحل أن الكود صحيح ولاكن العمليه التى كنت أقوم بتعديل عليها كان على رقم فاتورة معينة وهى ٢٧ وكانت كود الصنف مكرر كانت المشكله فى كود الصنف فى شيت البيانات عزرا لقد مرت فترة طويله فى معرفة الخطاء نظرا لانى كنت مشغول فى الفتره الماضيه ولم أتفرغ لمعرفة الخطاء وسأقوم برفع الملف 

تم تعديل بواسطه mahmoud nasr alhasany
  • Like 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information