اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

mahmoud nasr alhasany

03 عضو مميز
  • Posts

    269
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو mahmoud nasr alhasany

  1. السلام عليكم ورحمة الله وبركاتة رجاء مساعدتى جزاك الله خيرا يوجد خيارين بحث وكلاهما لايعمل بسبب انه لايتم عرض 12 عمود فى الليست بوكس ولاكن يتم عرض 10 اعمده فقط ListBox1.ColumnCount = 12.xlsm
  2. Dim totalValue As Double Dim targetValue1 As Double Dim targetValue2 As Double ' Get values from TextBoxes totalValue = Val(TextBox10.Value) targetValue1 = Val(TextBox11.Value) targetValue2 = Val(TextBox12.Value) ' Check for feasibility If targetValue1 + targetValue2 <> totalValue Then MsgBox "Target values do not match total value.", vbCritical Exit Sub End If ' Initialize banknote counts Dim count200 As Integer: count200 = Val(TextBox1.Value) Dim count100 As Integer: count100 = Val(TextBox2.Value) Dim count50 As Integer: count50 = Val(TextBox3.Value) ' Create arrays to store distribution Dim group1(1 To 3) As Integer Dim group2(1 To 3) As Integer ' Random distribution loop Do ' Reset group values For i = 1 To 3 group1(i) = 0 group2(i) = 0 Next i ' Randomly assign 200 denomination banknotes Randomize For i = 1 To count200 If Rnd() < 0.5 Then group1(1) = group1(1) + 1 Else group2(1) = group2(1) + 1 End If Next ' Randomly assign 100 denomination banknotes Randomize For i = 1 To count100 If Rnd() < 0.5 Then group1(2) = group1(2) + 1 Else group2(2) = group2(2) + 1 End If Next ' Randomly assign 50 denomination banknotes Randomize For i = 1 To count50 If Rnd() < 0.5 Then group1(3) = group1(3) + 1 Else group2(3) = group2(3) + 1 End If Next ' Calculate the total value of each group Dim group1Total As Double: group1Total = group1(1) * 200 + group1(2) * 100 + group1(3) * 50 Dim group2Total As Double: group2Total = group2(1) * 200 + group2(2) * 100 + group2(3) * 50 Loop Until group1Total = targetValue1 And group2Total = targetValue2 ' Display the distribution in TextBoxes or other controls TextBox4.Value = group1(1) TextBox7.Value = group2(1) TextBox5.Value = group1(2) TextBox8.Value = group2(2) TextBox6.Value = group1(3) TextBox9.Value = group2(3) لقد وجدت الحل بحمدلله
  3. مالمشكلة رجاء مساعدتى توزيع فئات2 .xlsm
  4. السلام عليكم ورحمة الله وبركاتة الرجاء مساعدتى يوجد خطاء فى توزيعة الخاصة بالفئات 100 اما الباقى مظبوط اولا الرجاء ادخال الارقام اولا ثم ادخال القيمة 1 او القيمة 2 ستجد القيمة 2 يوجد بها خطاء فى توزيع الارقام فى خانة 100 15 =8+8 بدل 15 =8+7 توزيع فئات2 .xlsm
  5. احسنت أ / حسونة حسين احسنت أ / محمد هشام على المجهود الرائع الذى بزلتموه
  6. السلام عليكم ورحمة اللة وبركاتة الرجاء مساعدتى فى عملية بحث جزء من حروف معينة عند كتابتها فى textbox3 فعندما يتم عرضها فى listbox1 يقوم بظهور جزء من الحروف ملونة فى listbox1 وليس الكلمات كلها ان الكود يعمل جيدا ولاكن اريد اضافة خيار لون الحروف التى يتم استعلام عنها فى textbox3 تظهر فى عرض بيانات يظهر جزء من الحروف ملونة فى listbox1 فهل يوجد كود بالروعة دى يعمل هنا شاشة عميل بحث1.xlsm
  7. وجدت الحل بحمدلله Private Sub CheckBox1_Click() Dim arr() As Variant Dim i As Long, j As Long, temp As Variant Dim sortColumn As Integer Dim sortOrder As Boolean ' نسخ البيانات من ListBox إلى المصفوفة ReDim arr(ListBox1.ListCount - 1, ListBox1.ColumnCount - 1) For i = 0 To ListBox1.ListCount - 1 For j = 0 To ListBox1.ColumnCount - 1 arr(i, j) = ListBox1.List(i, j) Next j Next i ' تحديد عمود الفرز بناءً على ComboBox sortColumn = ComboBox1.ListIndex ' تحديد اتجاه الفرز بناءً على CheckBox sortOrder = CheckBox1.Value ' الفرز باستخدام Bubble Sort For i = LBound(arr) To UBound(arr) - 1 For j = i + 1 To UBound(arr) If sortOrder Then ' ترتيب تنازلي If IsNumeric(arr(i, sortColumn)) Or IsNumeric(arr(j, sortColumn)) Then If CDbl(arr(i, sortColumn)) > CDbl(arr(j, sortColumn)) Then ' تبادل السجلين For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k End If Else If UCase(arr(i, sortColumn)) > UCase(arr(j, sortColumn)) Then ' تبادل السجلين For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k End If End If Else ' ترتيب تصاعدي If IsNumeric(arr(i, sortColumn)) Or IsNumeric(arr(j, sortColumn)) Then If CDbl(arr(i, sortColumn)) < CDbl(arr(j, sortColumn)) Then ' تبادل السجلين ' تبادل السجلين For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k End If Else If UCase(arr(i, sortColumn)) < UCase(arr(j, sortColumn)) Then ' تبادل السجلين ' تبادل السجلين For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k End If End If End If
  8. السلام عليكم ورحمة الله وبركاتة رجاء مساعدتى فى comobobx1 يوجد خيارين "كود "و "اسم العميل" كود مرتبط بالعمود الاول واسم العميل مرتبط بالعمود الثانى فى listbox1 ملحوظة عندما اختار كلمة كود فى combobox يقوم بالترتيب تنازلى او تصاعدى من خلال Checkbox انه يعمل جيدا ولاكن عند اقوم باختار كلمة اسم عميل فى combobox لا يقوم بالترتيب تنازلى او تصاعدى من بواسطة Checkbox عندما اضغط على امر Private Sub CommandButton8_Click() Private Sub CommandButton8_Click() Dim arr() As Variant Dim i As Long, j As Long, temp As Variant Dim sortColumn As Integer Dim sortOrder As Boolean ' التأكد من وجود بيانات في ListBox If ListBox1.ListCount = 0 Then MsgBox "لا توجد بيانات لفرزها", vbExclamation Exit Sub End If ' تحديد عمود الفرز بناءً على ComboBox sortColumn = ComboBox1.ListIndex + 1 ' نفترض أن الفهرس يبدأ من 0 ' تحديد اتجاه الفرز بناءً على CheckBox sortOrder = CheckBox1.Value ' نسخ البيانات من ListBox إلى المصفوفة ReDim arr(ListBox1.ListCount - 1, ListBox1.ColumnCount - 1) For i = 0 To ListBox1.ListCount - 1 For j = 0 To ListBox1.ColumnCount - 1 arr(i, j) = ListBox1.List(i, j) Next j Next i ' الفرز باستخدام Bubble Sort For i = LBound(arr) To UBound(arr) - 1 For j = i + 1 To UBound(arr) If sortOrder And arr(i, sortColumn) > arr(j, sortColumn) Then ' ترتيب تنازلي ' تبادل السجلين بالكامل For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k ElseIf Not sortOrder And arr(i, sortColumn) < arr(j, sortColumn) Then ' ترتيب تصاعدي ' تبادل السجلين بالكامل For k = LBound(arr, 2) To UBound(arr, 2) temp = arr(i, k) arr(i, k) = arr(j, k) arr(j, k) = temp Next k End If Next j Next i ' مسح البيانات القديمة وإضافة البيانات الجديدة ListBox1.Clear For i = LBound(arr) To UBound(arr) ListBox1.AddItem For j = LBound(arr, 2) To UBound(arr, 2) ' ListBox1.List(i, j - 1) = arr(i, j) ' نبدأ من الصفر في ListBox ListBox1.List(i, j) = arr(i, j) Next j Next i With ListBox1 .Font.Size = 12 ' تغيير حجم الخط إلى 12 .ColumnCount = 2 .ColumnWidths = "80;120" ' .Font.Color = vbBlue ' تغيير لون الخط إلى الأزرق .BackColor = RGB(255, 255, 204) ' تغيير لون الخلفية إلى أصفر فاتح End With End Sub شاشة عميل بحث.xlsm
  9. لو افترضنا ان يوجد فى textbox1 قيمة 15 نريد تحويلها على textbox4 ,textbox7 ليكون الناتج فى textbox4 7 ليكون الناتج فى textbox4 8 ولا لايعمل فما الحل Private Sub CommandButton26_Click() Dim total200 As Integer, total100 As Integer, total50 As Integer, totalValue As Integer Dim percent200 As Double, percent100 As Double, percent50 As Double, halfPercent As Double Dim group1Total As Integer, group2Total As Integer Dim CalculateTotal As Integer ' التحقق من صحة المدخلات If Not IsNumeric(TextBox11.Text) Or Not IsNumeric(TextBox12.Text) Then ' MessageBox.Show ("الرجاء إدخال قيم عددية في حقل الإجمالي") Exit Sub End If ' التحقق من صحة البيانات If total200 < 0 Or total100 < 0 Or total50 < 0 Then MessageBox.Show ("الرجاء إدخال قيم موجبة") Exit Sub End If If group1Total + group2Total < totalValue Then MessageBox.Show ("مجموع القيم المستهدفة أقل من مجموع القيم المتاحة") Exit Sub End If ' جمع قيم الفئات total200 = Val(TextBox1.Text) + Val(TextBox4.Text) + Val(TextBox7.Text) total100 = Val(TextBox2.Text) + Val(TextBox5.Text) + Val(TextBox8.Text) total50 = Val(TextBox3.Text) + Val(TextBox6.Text) + Val(TextBox9.Text) totalValue = total200 * 200 + total100 * 100 + total50 * 50 ' حساب النسبة المئوية لكل فئة percent200 = total200 * 200 / totalValue percent100 = total100 * 100 / totalValue percent50 = total50 * 50 / totalValue ' توزيع النسب المئوية على المجموعتين group1Total = Val(TextBox11.Text) group2Total = Val(TextBox12.Text) ' توزيع فئة 200 TextBox4.Text = Math.Round((percent200 * 1 - halfPercent) * group1Total / 200) TextBox7.Text = Math.Round((percent200 * (1 - halfPercent)) * group2Total / 200) ' توزيع فئة 100 TextBox5.Text = Math.Round((percent100 * 1 - halfPercent) * group1Total / 100) TextBox8.Text = Math.Round((percent100 * (1 - halfPercent)) * group2Total / 100) ' توزيع فئة 50 TextBox6.Text = Math.Round((percent50 * 1 - halfPercent) * group1Total / 50) TextBox9.Text = Math.Round((percent50 * (1 - halfPercent)) * group2Total / 50) halfPercent = 0.5 ' حساب القيم العددية الإجمالية Me.TextBox58 = Val(TextBox1) + Val(TextBox2) + Val(TextBox3) Me.TextBox59 = Val(TextBox4) + Val(TextBox5) + Val(TextBox6) Me.TextBox60 = Val(TextBox7) + Val(TextBox8) + Val(TextBox9) ' حساب القيم النقدية الإجمالية باستخدام الدالة Me.TextBox13.Value = Val(Me.TextBox1.Value) * 200 Me.TextBox14.Value = Val(Me.TextBox2.Value) * 100 Me.TextBox15.Value = Val(Me.TextBox3.Value) * 50 Me.TextBox16.Value = Val(Me.TextBox4.Value) * 200 Me.TextBox17.Value = Val(Me.TextBox5.Value) * 100 Me.TextBox18.Value = Val(Me.TextBox6.Value) * 50 Me.TextBox19.Value = Val(Me.TextBox7.Value) * 200 Me.TextBox20.Value = Val(Me.TextBox8.Value) * 100 Me.TextBox21.Value = Val(Me.TextBox9.Value) * 50 End Sub للاسف يوجد مشكلة فى الكودين هذا ' توزيع فئة 200 TextBox4.Text = Math.Round((percent200 * 1 - halfPercent) * group1Total / 200) TextBox7.Text = Math.Round((percent200 * (1 - halfPercent)) * group2Total / 200) ' توزيع فئة 100 TextBox5.Text = Math.Round((percent100 * 1 - halfPercent) * group1Total / 100) TextBox8.Text = Math.Round((percent100 * (1 - halfPercent)) * group2Total / 100) ' توزيع فئة 50 TextBox6.Text = Math.Round((percent50 * 1 - halfPercent) * group1Total / 50) TextBox9.Text = Math.Round((percent50 * (1 - halfPercent)) * group2Total / 50) halfPercent = 0.5 ولقد استعملت اكثر من دالة ولا يعمل معى مثل TextBox4.Text = Int((percent200 * 1 - halfPercent) * group1Total / 200) TextBox4.Text = Math.Round((percent200 * 1 - halfPercent) * group1Total / 200) TextBox4.Text = Fix((percent200 * 1 - halfPercent) * group1Total / 200) ولا اعرف ماذا افعل انظر الصورة وطبق المسألة المطروحة فى الصورتين لتجد الاختلاف مسألة.xlsm
  10. لقد وجدت حل ولاكن القيم العددية للاسف غير مظبوطة Private Sub CommandButton26_Click() Dim total200 As Integer, total100 As Integer, total50 As Integer, totalValue As Integer Dim percent200 As Double, percent100 As Double, percent50 As Double, halfPercent As Double Dim group1Total As Integer, group2Total As Integer Dim CalculateTotal As Integer ' التحقق من صحة المدخلات If Not IsNumeric(TextBox11.Text) Or Not IsNumeric(TextBox12.Text) Then ' MessageBox.Show ("الرجاء إدخال قيم عددية في حقل الإجمالي") Exit Sub End If ' التحقق من صحة البيانات If total200 < 0 Or total100 < 0 Or total50 < 0 Then MessageBox.Show ("الرجاء إدخال قيم موجبة") Exit Sub End If If group1Total + group2Total < totalValue Then MessageBox.Show ("مجموع القيم المستهدفة أقل من مجموع القيم المتاحة") Exit Sub End If ' جمع قيم الفئات total200 = Val(TextBox1.Text) + Val(TextBox4.Text) + Val(TextBox7.Text) total100 = Val(TextBox2.Text) + Val(TextBox5.Text) + Val(TextBox8.Text) total50 = Val(TextBox3.Text) + Val(TextBox6.Text) + Val(TextBox9.Text) totalValue = total200 * 200 + total100 * 100 + total50 * 50 ' حساب النسبة المئوية لكل فئة percent200 = total200 * 200 / totalValue percent100 = total100 * 100 / totalValue percent50 = total50 * 50 / totalValue ' توزيع النسب المئوية على المجموعتين group1Total = Val(TextBox11.Text) group2Total = Val(TextBox12.Text) halfPercent = 0.5 ' توزيع فئة 200 TextBox4.Text = CInt((percent200 * halfPercent) * group1Total / 200) TextBox7.Text = CInt((percent200 * (1 - halfPercent)) * group2Total / 200) ' توزيع فئة 100 TextBox5.Text = CInt((percent100 * halfPercent) * group1Total / 100) TextBox8.Text = CInt((percent100 * (1 - halfPercent)) * group2Total / 100) ' توزيع فئة 50 TextBox6.Text = CInt((percent50 * halfPercent) * group1Total / 50) TextBox9.Text = CInt((percent50 * (1 - halfPercent)) * group2Total / 50) ' حساب القيم العددية الإجمالية Me.TextBox58 = Val(TextBox1) + Val(TextBox2) + Val(TextBox3) Me.TextBox59 = Val(TextBox4) + Val(TextBox5) + Val(TextBox6) Me.TextBox60 = Val(TextBox7) + Val(TextBox8) + Val(TextBox9) ' حساب القيم النقدية الإجمالية باستخدام الدالة Me.TextBox13.Value = Val(Me.TextBox1.Value) * 200 Me.TextBox14.Value = Val(Me.TextBox2.Value) * 100 Me.TextBox15.Value = Val(Me.TextBox3.Value) * 50 Me.TextBox16.Value = Val(Me.TextBox4.Value) * 200 Me.TextBox17.Value = Val(Me.TextBox5.Value) * 100 Me.TextBox18.Value = Val(Me.TextBox6.Value) * 50 Me.TextBox19.Value = Val(Me.TextBox7.Value) * 200 Me.TextBox20.Value = Val(Me.TextBox8.Value) * 100 Me.TextBox21.Value = Val(Me.TextBox9.Value) * 50 End Sub انظر الصورة الاولى غير مظبوطة اما الصورة الثانية اريدها هكذا
  11. شكرا جزيلا لك ا/ محمد هشام انا لا اقصد اوزان فأنها خطاء كتابى نظرا لانى كنت اكتب بالهاتف انا اقصد ان الاعداد الفردية التى ادرجتها فى textbox1,2,3 تعادل قيمة النقدية فى textbox10 =2000 * TextBox1: 10 *200 =1500 * TextBox2: 15 * 100 =400 * TextBox3: 8 * 50 لو وضعنا القيمة النقدية فى textbox11 ,ولنفترض 2000 والقيمة النقدية فى textbox12 ,ولنفترض 1900 اريد الارقام العددية فى textbox1,2,3 توزع عشوائى الى textbox4,5,6 وفقا للقيمة فى textbo11 وايضا توزع الى textbox7,8,9 وفقا للقيمة فى textbox12 وهذا هو المطلوب كما سأوضحة فى الصورتان قبل وبعد
  12. الفكرة مثلا هى عند وضع القيم العددية فى * TextBox1: 10 *200 * TextBox2: 15 * 100 * TextBox3: 8 * 50 تكون مجموع الناتج فى textbox10 3900 اريد وضع القيم النقدية textbox11 1900 ليقوم بتوزيع قيم عدديه على حسب الارقام المقابل لها فى textbox1,2,3 وتوزيعها الى * TextBox4: 5 * TextBox5: 7 * TextBox6: 4 وكذلك على حسب القيم النقدية textbox12 2000 على حسب الارقام المقابل لها فى textbox1,2,3 وتوزيعها الى * TextBox7: 5 * TextBox 8: 8 * TextBox9: 4 * قراءة القيم: نقوم بقراءة القيم العددية من النصوص TextBox1, TextBox2, TextBox3 والقيم النقدية من TextBox11 و TextBox12. * حساب الأوزان النسبية: نحسب الوزن النسبي لكل قيمة عددية بناءً على قيمتها الإجمالية. * حساب المبالغ الموزعة: نحسب المبلغ الذي سيتم توزيعه لكل نص بناءً على الوزن النسبي والقيمة النقدية. * توزيع القيم: نقوم بتعيين القيم المحسوبة في النصوص المستهدفة (TextBox4 إلى TextBox9).
  13. الفكرة مثلا هى عند وضع القيم العددية فى * TextBox1: 10 *200 * TextBox2: 15 * 100 * TextBox3: 8 * 50 تكون مجموع الناتج فى textbox10 3900 اريد وضع القيم النقدية textbox11 1900 ليقوم بتوزيع قيم عدديه على حسب الارقام المقابل لها فى textbox1,2,3 وتوزيعها الى TextBox4: 5 TextBox5: 7 TextBox6: 4 وكذلك على حسب القيم النقدية textbox12 2000 ليقوم بتوزيع قيم عدديه على حسب الارقام المقابل لها فى textbox1,2,3 وتوزيعها الى TextBox7: 5 TextBox8: 8 TextBox9: 4 ويكون خصم القيم العدديه متساويه مع القيم العددية فى نقديه ١ ونقديه ٢
  14. احسنت ا/محمد هشام هل يمكن تعديل الكود رجاء بحيث لو أن القيمة الإجمالية مثلا فى textbox10 هى 3900 بحيث اتحكم فى وضع القيمة النقديه ١ مثلا 1000 والقيمة النقدية ٢ 2900 وتوزيع القيمة فئات الاعداد على حسب القيمة المدرجة الذى وضعتها وشكرا
  15. الف شكر ا/ محمد هشام على الاهتمام احب أنوه على ملحوظة فى نقدية ١ اولا فى فئة 100 *7=700 وليست 800 ثانيا بالنسبة للمبلغ المفترض فى textbox10 يكون الإجمالي 3900 لانه هو المبلغ الأساسى الذى يتم توزيع المبالغ العددية عشوائى وبالتساوى إلى نقديه ا ونقديه ٢ أما بالنسبة للمبلغ المفترض فى textbox11 يكون الإجمالي 1900 أما بالنسبة للمبلغ المفترض فى textbox12 يكون الإجمالي 2000 وهذا هو المطلوب
  16. السلام عليكم ورحمة الله وبركاتة لقد صممت فورم به اجمالى المبلغ مع قيم العددية فئات يتم توزيعها على مجموعتين نقدية 1 ونقدية 2 ويوجد المجموع الكلى قبل التوزيع فى Textbox10 ويوجد المجموع نقدية 1 فى Textbox11 ويوجد المجموع نقدية 2 فى Textbox12 ولاكن القيم النقدية فى textbox10,11,12 غير مظبوطة مع المجموعات كما هى مدرجة فى الصورة المرفقة مع العلم انى كنت اريد توزيع القيم العددية الى نقدية 1 و2 على حسب مجموع القيم النقدية وليس العددية فى textbox11,12 Private Sub CommandButton24_Click() Dim قيمة1 As Long, قيمة2 As Long, قيمة3 As Long Dim نصف_القيمة1 As Double, نصف_القيمة2 As Double, نصف_القيمة3 As Double Dim إجمالي_نقدية1 As Double, إجمالي_نقدية2 As Double, إجمالي_كلية As Double Dim نسبة_نقدية1 As Double, نسبة_نقدية2 As Double ' التحقق من صحة الإدخال (يمكن إضافة المزيد من التحقيقات حسب الحاجة) If Not IsNumeric(TextBox1.Value) Or Not IsNumeric(TextBox2.Value) Or Not IsNumeric(TextBox3.Value) Then MsgBox "الرجاء إدخال أعداد صحيحة موجبة فقط." Exit Sub End If If Val(TextBox1.Value) <= 0 Or Val(TextBox2.Value) <= 0 Or Val(TextBox3.Value) <= 0 Then MsgBox "الرجاء إدخال أعداد أكبر من الصفر." Exit Sub End If ' قراءة القيم من النصوص قيمة1 = Val(TextBox1.Value) قيمة2 = Val(TextBox2.Value) قيمة3 = Val(TextBox3.Value) ' حساب النصف لكل قيمة نصف_القيمة1 = قيمة1 / 2 نصف_القيمة2 = قيمة2 / 2 نصف_القيمة3 = قيمة3 / 2 ' تحويل الأجزاء العشرية إلى أعداد صحيحة وتوزيع الباقي TextBox4.Value = Int(نصف_القيمة1) TextBox5.Value = Int(نصف_القيمة2) TextBox6.Value = Int(نصف_القيمة3) TextBox7.Value = قيمة1 - TextBox4.Value TextBox8.Value = قيمة2 - TextBox5.Value TextBox9.Value = قيمة3 - TextBox6.Value Me.TextBox13.Value = Val(Me.TextBox1.Value) * 200 Me.TextBox14.Value = Val(Me.TextBox2.Value) * 100 Me.TextBox15.Value = Val(Me.TextBox3.Value) * 50 Me.TextBox16.Value = Val(Me.TextBox4.Value) * 200 Me.TextBox17.Value = Val(Me.TextBox5.Value) * 100 Me.TextBox18.Value = Val(Me.TextBox6.Value) * 50 Me.TextBox19.Value = Val(Me.TextBox7.Value) * 200 Me.TextBox20.Value = Val(Me.TextBox8.Value) * 100 Me.TextBox21.Value = Val(Me.TextBox9.Value) * 50 ' حساب القيم الإجمالية (مع التعديل) إجمالي_نقدية1 = TextBox13.Value * Val(TextBox4.Value) + TextBox14.Value * Val(TextBox5.Value) + TextBox15.Value * Val(TextBox6.Value) إجمالي_نقدية2 = TextBox13.Value * Val(TextBox7.Value) + TextBox14.Value * Val(TextBox8.Value) + TextBox15.Value * Val(TextBox9.Value) إجمالي_كلية = إجمالي_نقدية1 + إجمالي_نقدية2 If إجمالي_كلية <> 0 Then نسبة_نقدية1 = إجمالي_نقدية1 / إجمالي_كلية نسبة_نقدية2 = إجمالي_نقدية2 / إجمالي_كلية Else MsgBox "حدث خطأ: الإجمالي الكلي يساوي صفرًا." Exit Sub End If ' بدلاً من توزيع القيم بناءً على النسبة المئوية، يمكن توزيعها بالتساوي TextBox11.Value = (نصف_القيمة1 + نصف_القيمة2 + نصف_القيمة3) / 2 TextBox12.Value = (نصف_القيمة1 + نصف_القيمة2 + نصف_القيمة3) / 2 TextBox11.Value = Format(إجمالي_نقدية1, "$#,##0.00") TextBox12.Value = Format(إجمالي_نقدية2, "$#,##0.00") TextBox10.Value = Format(إجمالي_كلية, "$#,##0.00") Me.TextBox59 = Val(TextBox4) + Val(TextBox5) + Val(TextBox6) Me.TextBox60 = Val(TextBox7) + Val(TextBox8) + Val(TextBox9) MsgBox "تم التوزيع بنجاح." End Sub توزيع فئات نقدية.xlsm
  17. الف شكر / محمد هشام على التوضيح بعض النقاط توضيحا جيدا وجزاك الله عنا خير الجزاء وهذا الكود بعد اضافة خيار التاريخ اذا لزم الامر Private Sub CommandButton1_Click() Dim ws As Worksheet Dim lastRow As Long Dim searchValue1 As String Dim searchValue2 As String Dim currentRow As Long Dim DateMin As Date Dim DateMax As Date Dim includeDates As Boolean ' تحديد ورقة العمل Set ws = Worksheets("Sheet3") ' الحصول على القيم من عناصر التحكم searchValue1 = ComboBox1.Value searchValue2 = ComboBox3.Value If IsDate(TextBox1.Value) Then DateMin = CDate(TextBox1.Value) If IsDate(TextBox2.Value) Then DateMax = CDate(TextBox2.Value) includeDates = CheckBox1.Value ' تحديد قيمة مربع الاختيار ' تحديد الصف الأخير lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' مسح قائمة النتائج وتحديد عرض الأعمدة With ListBox2 .Clear .ColumnCount = 6 .ColumnWidths = "35;60;45;40;65;40" .Font.Size = 10 End With ' البحث عن البيانات وتعبئة القائمة currentRow = 0 For i = 2 To lastRow ' التحقق من الشروط If ws.Cells(i, 5).Value = searchValue1 And _ ws.Cells(i, 1).Value Like "*" & searchValue2 & "*" And _ (Not includeDates Or (ws.Cells(i, 6) >= DateMin And ws.Cells(i, 6) <= DateMax)) Then ' إضافة البيانات إلى القائمة ListBox2.AddItem ListBox2.List(currentRow, 0) = ws.Cells(i, 1).Value ListBox2.List(currentRow, 1) = ws.Cells(i, 2).Value ListBox2.List(currentRow, 2) = ws.Cells(i, 3).Value ' سعر ListBox2.List(currentRow, 3) = ws.Cells(i, 4).Value ' كمية المخزون ListBox2.List(currentRow, 4) = ws.Cells(i, 5).Value ' اسم المخزن 'ListBox2.List(currentRow, 5) = ws.Cells(i, 6).Value ' تاريخ نهاية الصنف ListBox2.List(currentRow, 5) = Format(ws.Cells(i, 6).Value, "dd/mm/yyyy") ' تاريخ نهاية الصنف currentRow = currentRow + 1 End If Next i If ListBox2.ListCount = 0 Then MsgBox "لم يتم العثور على نتائج" End If TextBox7.Text = "عدد السجلات في القائمة : (" & ListBox2.ListCount & ")" Call TOtal End Sub
  18. شكرا لك محمد هشام. الكود يعمل جيدا ولاكن اريد اظهار البيانات داخل رؤوس الاعمدة ListBox2.ColumnHeads = True Private Sub CommandButton1_Click() Dim ws As Worksheet Dim lastRow As Long Dim searchValue1 As String Dim searchValue2 As String Dim currentRow As Long Dim colHeaders As Variant searchValue1 = ComboBox1.Value searchValue2 = ComboBox3.Value Set ws = Worksheets("Sheet3") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' تعريف رؤوس الأعمدة colHeaders = Array("كود", "صنف", "سعر", "كمية المخزون", "اسم المخزن", "تاريخ نهاية الصنف") colWidths = "35;60;45;40;65;40" With ListBox2 .Clear .ColumnCount = UBound(colHeaders) + 1 .ColumnWidths = colWidths .Font.Size = 10 .ColumnHeads = True .AddItem For i = 0 To UBound(colHeaders) .List(0, i) = colHeaders(i) Next i End With currentRow = 1 For i = 2 To lastRow If ws.Cells(i, 5).Value = searchValue1 And _ ws.Cells(i, 1).Value Like "*" & searchValue2 & "*" Then ListBox2.AddItem ListBox2.List(currentRow, 0) = ws.Cells(i, 1).Value ListBox2.List(currentRow, 1) = ws.Cells(i, 2).Value ListBox2.List(currentRow, 2) = ws.Cells(i, 3).Value ListBox2.List(currentRow, 3) = ws.Cells(i, 4).Value ListBox2.List(currentRow, 4) = ws.Cells(i, 5).Value ListBox2.List(currentRow, 5) = ws.Cells(i, 6).Value currentRow = currentRow + 1 End If Next i If ListBox2.ListCount = 1 Then MsgBox "لم يتم العثور على نتائج" End If TextBox7.Text = "عدد السجلات في القائمة : (" & ListBox2.ListCount - 1 & ")" Call TOtal End Sub
  19. السلام عليكم ورحمة الله وبركاتة الرجاء مساعدتى انها عملية بحث بين شرطين او اكثر اسم المخزن وكود الصنف والتاريخ اذا لزم الامر واظهار النتائج فى الليست بوكس 2 وعند عملية البحث لايدرج بيانات رؤوس الاعمدة داخل الليست بوكس2 فما الخطاء فى الكود Private Sub CommandButton1_Click() Dim ws As Worksheet Dim lastRow As Long Dim searchValue1 As String Dim searchValue2 As String Dim currentRow As Long searchValue1 = ComboBox1.Value searchValue2 = ComboBox3.Value Set ws = Worksheets("Sheet3") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' ' تعريف رؤوس الأعمدة وعروضها ' colHeaders = Split("كود", "صنف", "سعر", "كمية المخزون", "اسم المخزن", "تاريخ نهاية الصنف") ' 'colHeaders = Array("اسم المخزن", "كود", "صنف", "سعر", "كمية المخزون", "تاريخ نهاية الصنف") colWidths = "40;50;50;40;60;40" ' تهيئة ListBox2 With ListBox2 .Clear '.columnCount = UBound(colHeaders) + 1 ' عدد الأعمدة + 1 لرأس العمود .columnWidths = colWidths .columnCount = 6 .Font.Size = 10 .ColumnHeads = True ' تعيين رؤوس الأعمدة بشكل صريح (اختياري) ' For i = 0 To UBound(colHeaders) ' ' .List(.ListCount - 1, i) = colHeaders(i) ' ListBox2.AddItem colHeaders(i) ' Next i End With 'ListBox2.Clear currentRow = 0 For i = 2 To lastRow If ws.Cells(i, 5).Value = searchValue1 And _ ws.Cells(i, 1).Value Like "*" & searchValue2 & "*" Then ListBox2.AddItem ws.Cells(i, 1).Value ListBox2.List(currentRow, 1) = ws.Cells(i, 2).Value ListBox2.List(currentRow, 2) = ws.Cells(i, 3).Value ListBox2.List(currentRow, 3) = ws.Cells(i, 4).Value ListBox2.List(currentRow, 4) = ws.Cells(i, 5).Value ListBox2.List(currentRow, 5) = ws.Cells(i, 6).Value currentRow = currentRow + 1 End If Next i If ListBox2.ListCount = 0 Then MsgBox "لم يتم العثور على نتائج" End If End Sub عملية بحث بشرطين او اكثر.xlsm
  20. ماشاء الله احسنت ا/ هشام محمد انت رائع حقا ماشاء الله احسنت ا/ هشام محمد انت رائع حقا
  21. اولا اشكر السيدان الفضلاء الرائعان عبدالله بشير عبدالله محمد هشام. على هذا المجهود الرائع ولاكن هذا الكود مختلف عن ما الملف السابق الذى اشرت عليه واردت ان اقوم بعملية ترتيب ابجدى من خلال الكود هذا ولاكن توجد مشكلة ان عملية الترتيب ابجدى فى هذا الملف الذى تم التعديل علية بواستطكم مختلف لانه يعمل على الترتيب هكذا مخزن 1 مخزن 10 مخزن 11 مخزن 12 مخزن 13 مخزن 14 مخزن 2 مخزن 3 مخزن 4 مخزن 5 مخزن 6 مخزن 7 مخزن 8 مخزن 9 وانا اردت ان تكون الترتيب فى الكومبوبوكس 1و2 هكذا مخزن 1 مخزن 2 مخزن 3 مخزن 4 مخزن 5 مخزن 6 مخزن 7 مخزن 8 مخزن 9 مخزن 10 مخزن 11 مخزن 12 مخزن 13 مخزن 14 وشكرا جزيلا لكم على انكم وجدت وقتا لمساعدتنا
  22. رجاء مساعدتى فى ترتيب البيانات فى combobox1,2 ترتيبا ابجديا Sub FillComboBoxesWithoutDuplicates() Dim ws As Worksheet Dim i As Long, lastRow As Long Dim storeNames As Collection Dim storeName As String ' تحديد ورقة العمل Set ws = ThisWorkbook.Sheets("Sheet3") ' تحديد آخر صف يحتوي على بيانات lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row ' إنشاء مجموعة لتخزين الأسماء الفريدة Set storeNames = New Collection ' قراءة الأسماء وإضافتها إلى المجموعة (مع التعامل مع التكرارات) On Error Resume Next For i = 2 To lastRow storeName = ws.Cells(i, "D").Value storeNames.Add storeName, storeName On Error GoTo 0 Next i On Error GoTo 0 ' مسح ComboBox1 و ComboBox2 ComboBox1.Clear ComboBox2.Clear ' ملء ComboBox1 و ComboBox2 بالأسماء الفريدة For Each storeName In storeNames ComboBox1.AddItem storeName ComboBox2.AddItem storeName Next storeName End Sub Private Sub ComboBox1_Change() Dim selectedItem As String selectedItem = ComboBox1.Value ' الحصول على القيمة المحددة في ComboBox1 ' البحث عن العنصر في ComboBox2 وإزالته Dim i As Long For i = ComboBox2.ListCount - 1 To 0 Step -1 If ComboBox2.List(i) = selectedItem Then ComboBox2.RemoveItem i Exit For End If Next i End Sub Private Sub UserForm_Initialize() Dim ws As Worksheet Dim i As Long, lastRow As Long Dim storeNames As New Collection Dim storeName As Variant Set ws = ThisWorkbook.Sheets("Sheet3") lastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row On Error Resume Next For i = 2 To lastRow storeName = ws.Cells(i, "D").Value If Not IsEmpty(storeName) Then storeNames.Add storeName, storeName End If Next i On Error GoTo 0 ComboBox1.Clear ComboBox2.Clear For Each storeName In storeNames ComboBox1.AddItem storeName ComboBox2.AddItem storeName Next storeName End Sub ترتيب البيانات ابجديا.xlsm
  23. لقد وجدت الحل أن الكود صحيح ولاكن العمليه التى كنت أقوم بتعديل عليها كان على رقم فاتورة معينة وهى ٢٧ وكانت كود الصنف مكرر كانت المشكله فى كود الصنف فى شيت البيانات عزرا لقد مرت فترة طويله فى معرفة الخطاء نظرا لانى كنت مشغول فى الفتره الماضيه ولم أتفرغ لمعرفة الخطاء وسأقوم برفع الملف
  24. 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
×
×
  • اضف...

Important Information