mahmoud nasr alhasany قام بنشر سبتمبر 23 قام بنشر سبتمبر 23 هل يمكن تعديل الكميه بناء على رقم الفاتورة وكود الصنف مع العلم عند تعديل على رقم الفاتورة يقوم بتحديث الكميه كل البيانات مع اختلاف كود الصنف وهذا خطاء لانة بيقوم على حسب الفاتورة و الفاتورة يووجد بيها اصناف كتيرة مختلفة وعند عملية التعديل كل كميات الفاتورة بتبقى معدله مع العلم أن كود الصنف 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
mahmoud nasr alhasany قام بنشر سبتمبر 23 الكاتب قام بنشر سبتمبر 23 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 قام بنشر سبتمبر 30 الكاتب قام بنشر سبتمبر 30 (معدل) لقد وجدت الحل أن الكود صحيح ولاكن العمليه التى كنت أقوم بتعديل عليها كان على رقم فاتورة معينة وهى ٢٧ وكانت كود الصنف مكرر كانت المشكله فى كود الصنف فى شيت البيانات عزرا لقد مرت فترة طويله فى معرفة الخطاء نظرا لانى كنت مشغول فى الفتره الماضيه ولم أتفرغ لمعرفة الخطاء وسأقوم برفع الملف تم تعديل سبتمبر 30 بواسطه mahmoud nasr alhasany 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.