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

توزيع القيم العددية فئات الى مجموعتين على حسب القيم النقدية


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

السلام عليكم ورحمة الله وبركاتة

لقد صممت فورم به اجمالى المبلغ مع قيم العددية فئات يتم توزيعها على مجموعتين نقدية 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

 

توزيع نقدية صورة.png

توزيع فئات نقدية.xlsm

رابط هذا التعليق
شارك

الف شكر ا/ محمد هشام على الاهتمام

احب أنوه على

ملحوظة فى نقدية ١

اولا فى فئة 100 *7=700 وليست 800

ثانيا بالنسبة للمبلغ المفترض فى textbox10 يكون الإجمالي 3900

لانه هو المبلغ الأساسى الذى يتم توزيع المبالغ العددية عشوائى وبالتساوى إلى نقديه ا ونقديه ٢ 

أما بالنسبة للمبلغ المفترض فى textbox11 يكون الإجمالي 1900

أما بالنسبة للمبلغ المفترض فى textbox12 يكون الإجمالي 2000

وهذا هو المطلوب

تم تعديل بواسطه mahmoud nasr alhasany
رابط هذا التعليق
شارك

ادن جرب  هدا 

Capture.JPG.7a0c065f67c0b2914fae748fefe352c1.JPG

 

 

Private Sub CommandButton24_Click()
    Dim a(2) As Long, b(2) As Double, arr As Variant
    Dim total(1) As Double, sum As Double, i As Integer
    arr = Array(200, 100, 50)

    For i = 0 To 2
        If Not IsNumeric(Controls("TextBox" & (i + 1)).Value) Or Val(Controls("TextBox" & (i + 1)).Value) <= 0 Then
            MsgBox "الرجاء إدخال أعداد صحيحة موجبة فقط": Exit Sub
        End If
        a(i) = Val(Controls("TextBox" & (i + 1)).Value)
        b(i) = a(i) / 2
        Controls("TextBox" & (4 + i)).Value = Int(b(i))
        Controls("TextBox" & (7 + i)).Value = a(i) - Controls("TextBox" & (4 + i)).Value
        Controls("TextBox" & (16 + i)).Value = Controls("TextBox" & (4 + i)).Value * arr(i)
        Controls("TextBox" & (19 + i)).Value = Controls("TextBox" & (7 + i)).Value * arr(i)
        
        total(0) = total(0) + Controls("TextBox" & (16 + i)).Value
        total(1) = total(1) + Controls("TextBox" & (19 + i)).Value
    Next i

    sum = total(0) + total(1)
    If sum <> 0 Then
        Controls("TextBox11").Value = Format(total(0), "$#,##0.00")
        Controls("TextBox12").Value = Format(total(1), "$#,##0.00")
        Controls("TextBox10").Value = Format(sum, "$#,##0.00")
    Else
        MsgBox "حدث خطأ: الإجمالي الكلي يساوي صفرًا"
    End If

    Me.TextBox58 = Val(TextBox1) + Val(TextBox2) + Val(TextBox3)
    Me.TextBox59 = Val(TextBox4) + Val(TextBox5) + Val(TextBox6)
    Me.TextBox60 = Val(TextBox7) + Val(TextBox8) + Val(TextBox9)

    MsgBox "تم التوزيع بنجاح"
End Sub

 

توزيع فئات نقدية.xlsm

  • Thanks 1
رابط هذا التعليق
شارك

احسنت ا/محمد هشام

هل يمكن تعديل الكود رجاء بحيث 

لو أن القيمة الإجمالية مثلا فى textbox10 هى 3900

بحيث اتحكم فى وضع القيمة النقديه ١ مثلا 1000 والقيمة النقدية ٢ 2900

وتوزيع القيمة فئات الاعداد  على حسب القيمة

المدرجة الذى وضعتها 

وشكرا

رابط هذا التعليق
شارك

الفكرة مثلا هى عند وضع القيم العددية فى 

 * 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

ويكون خصم القيم العدديه متساويه مع القيم العددية فى نقديه ١ ونقديه ٢

تم تعديل بواسطه mahmoud nasr alhasany
رابط هذا التعليق
شارك

الفكرة مثلا هى عند وضع القيم العددية فى 

 

 * 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).

رابط هذا التعليق
شارك

اخي @mahmoud nasr alhasany  لا افهم مادا تقصده 

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

15 ساعات مضت, mahmoud nasr alhasany said:

توزيع المبالغ العددية عشوائى وبالتساوى إلى نقديه ا ونقديه ٢ 

وكدالك 

14 ساعات مضت, mahmoud nasr alhasany said:

وتوزيع القيمة فئات الاعداد  على حسب القيمة

المدرجة الذى وضعتها 

تفاديا لكثرة التعديلات سأنسحب ربما يستطيع أحد الإخوة مساعدتك 

رابط هذا التعليق
شارك

شكرا جزيلا لك ا/ محمد هشام

انا لا اقصد اوزان فأنها خطاء كتابى نظرا لانى كنت اكتب بالهاتف  

انا اقصد ان الاعداد الفردية التى ادرجتها فى

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

وهذا هو المطلوب كما سأوضحة فى الصورتان قبل وبعد

 

thumbnail1.jpg

thumbnail.jpg

رابط هذا التعليق
شارك

لقد وجدت حل ولاكن القيم العددية للاسف غير مظبوطة                                                                                                                                                                                                              


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

انظر الصورة الاولى غير مظبوطة اما الصورة الثانية اريدها هكذا

14.png

15.png

رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information