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

عرض محتويات مخزن معين واكواد الاصناف فى الليست بوكس 2


إذهب إلى أفضل إجابة Solved by محمد هشام.,

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

Compress___4876.jpg.c76965e453b5041e90b2be1bb919017c.jpgالسلام عليكم ورحمة الله وبركاتة

رجاء مساعدتى

عندما اقوم بأختيار اسم المخزن يعرض كل الاصناف والاصناف المكررة بصلاحياتها المختلفة فى الليست بوكس 2 وهى خاصة باالمخزون

ولاكن عندما اقوم بأختيار كود صنف معين من المفروض ان يعرض كل الصلاحيات المختلفة بهذا الصنف والغاء كل الاصناف فى الليست بوكس2  الخاصة بهذا المخزن ولاكن لايعمل 

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

هذا هو الكود المفروض يعرض مايطلبه كود الصنف فقط   Me.CB_Pièce 

If Me.ComboBox1.ListIndex = 0 Or Me.CB_Pièce.ListIndex = 0 _
    Or FlgExit = True Then Exit Sub
    Call Charge_ListBox
'

 

Copy of sell-the-first-quantity-.xlsm

Compress_٢٠٢٤٠٥٢٤_٢٢٢٠٥٤_4876.jpg

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

لو رايت الصورة المدرجة ستجدها تعرض كل الاصناف بصلاحيتها المختلفة فى المخزن فى الليست بوكس 2

المطلوب عند اختيار كود الصنف كمثال102 يعرض فقط فى الليست بوكس2 اصناف 102 بكل صلاحيتها والكمية لصرف الاقرب صلاحية لادراجها فى الليست بوكس 1

هذا هو الكود المفروض يعرض مايطلبه كود الصنف فقط   Me.CB_Pièce 

If Me.ComboBox1.ListIndex = 0 Or Me.CB_Pièce.ListIndex = 0 _
    Or FlgExit = True Then Exit Sub
    Call Charge_ListBox
 

عند اختار مخزن معين يعرض كل الاصناف المتاحة بصلاحيتها فى هذا المخزن فى الليت بوكس2 وهذا الذى بالفعل تم

اما عندما اختار كود الصنف معين المفرزض يعرض فى الليست بوكس2 كل الكميات بهذا الكود بصلاحيتها المختلفة وذا لم يتم

الكود عبارة عن فلتر بين  ComboBox1 & CB_Pièce

ComboBox1 - اسم المخزن

  CB_Pièce    -كود الصنف

وشكرا

Copy of sell-the-first-quantity-.xlsm

تعديل ضفيف ومازالت المشكلة قائمة

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

في 25‏/5‏/2024 at 20:08, mahmoud nasr alhasany said:

لكود عبارة عن فلتر بين  ComboBox1 & CB_Pièce

ComboBox1 - اسم المخزن

  CB_Pièce    -كود الصنف

صراحة لم افهم طريقة اشتغالك على الملف لاكنني حاولت فقط انشاء الكود الخاص بالفلترة ما بين العناصر المدكورة

على يوزرفورم مستقل يمكنك اظافة الاكواد الخاصة بك معه او تعديله بما يناسبك 

 

 

Option Compare Text
Dim OneRng(), Rng, rCrit1, rCrit2
Private Sub UserForm_Initialize()
   Set f = Sheets("Stock")
   OneRng = f.Range("A4:I" & f.[A65000].End(xlUp).Row).value
   Rng = UBound(OneRng, 2)
  ' اسم المخزن
   rCrit1 = 5
   'كود الصنف
   rCrit2 = 1
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(OneRng) To UBound(OneRng)
    d(OneRng(i, rCrit1)) = ""
   Next i
   rw = d.keys
   Me.ComboBox1.List = rw
   Me.ComboBox1.ListIndex = 0
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(OneRng) To UBound(OneRng)
    d(OneRng(i, rCrit2)) = ""
   Next i
   rw = d.keys
   Me.CB_Pièce.List = rw
   Me.CB_Pièce.ListIndex = 0
End Sub
Private Sub ComboBox1_click()
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(OneRng) To UBound(OneRng)
    If OneRng(i, rCrit1) = Me.ComboBox1 Then _
                     d(OneRng(i, rCrit2)) = ""
   Next i
   rw = d.keys
   Me.CB_Pièce.List = rw: Me.CB_Pièce.ListIndex = 0
   Filtre
End Sub
Sub Filtre()
  Dim Tbl()
  Cpt1 = Me.ComboBox1: Cpt2 = Me.CB_Pièce
  N = 0
  For i = 1 To UBound(OneRng)
    If OneRng(i, 5) Like Cpt1 And OneRng(i, 1) Like Cpt2 Then
        N = N + 1: ReDim Preserve Tbl(1 To Rng, 1 To N)
        For K = 1 To Rng: Tbl(K, N) = OneRng(i, K): Next K
    End If
  Next i
  If N > 0 Then
     Me.ListBox2.Column = Tbl
  Else
     Me.ListBox2.Clear
  End If
  If Me.ComboBox1 = "*" And _
  Me.CB_Pièce = "*" Then Me.ListBox2.Clear
End Sub
Private Sub CB_Pièce_click()
   Filtre
End Sub

 

Copy of sell-the-first-quantity- V2.xlsm

تم تعديل بواسطه محمد هشام.
  • Like 2
رابط هذا التعليق
شارك

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

ا/محمد هشام

شكرا جزيلا أنه يعمل

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

 

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

الف شكر ا/ محمد هشام على المجهود الرائع

المشكلة تأتي من تنسيق البيانات عند مقارنتها.
ومن خلال تطبيق تنسيق "عدد صحيح" على البيانات المقارنة، يمكن التحقق من الحالة بشكل صحيح.
سطر واحد فقط للتعديل:

وهذا حل السؤال الاول

 

الف شكر ا/ محمد هشام على المجهود الرائع

ا/محمد هشام 

رجاء مساعدتى 

اولا تنسيق التاريخ فى العمود الاخير فى الليست بوكس ٢ المفروض اظهارة يكون DD/MM/YYYY

اما ثانيا 

اريد قيمة المخزون لأدنى تاريخ فى الليست بوكس ٢ يكون فى التكست بوكس المسمى Me.stocktr

واذا اخترت أعلى تاريخ بالخطاء يعطى لى تحزير بانى اخترت مخزون أعلى تاريخ وليس أدنى 

اكون شاكرا لك

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

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

اولا تنسيق التاريخ فى العمود الاخير فى الليست بوكس ٢ المفروض اظهارة يكون DD/MM/YYYY

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

 

'Private Sub UserForm_Initialize()
'Code...........
For i = LBound(OneRng) To UBound(OneRng): OneRng(i, 9) _
              = Format(OneRng(i, 9), "dd/mm/yyyy"): Next i
End sub

 

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

ريد قيمة المخزون لأدنى تاريخ فى الليست بوكس ٢ يكون فى التكست بوكس المسمى Me.stocktr

واذا اخترت أعلى تاريخ بالخطاء يعطى لى تحزير بانى اخترت مخزون أعلى تاريخ وليس أدنى

للاسف لا استطيع فهم طلبك ومادا تقصد بقيمة المخزون 

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

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

يظهر خيارين فى الليست بوكس صلاحيتين مختلفة وقيمة مخزون مختلفة لهذا المخزن وكود الصنف

اريد عند الاستعلام بعد اختيار كود الصنف يظهر الرصيد تلقائى للمخزون فى خانة التكست بوكس المسمى Me.stocktr

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

 

Compress_٢٠٢٤٠٥٢٨_٢٣٢٤٢٧_7899.jpg

sell-the-first-quantity- V2.xlsm

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

تفضل جرب هل هدا ما تقصده 

img?id=821501

تم تمييز الاظافات التي قمت بتعديلها داخل الاكواد يرجى مراجعتها وتعديلها بما يناسبك 

 

 

sell-the-first-quantity- V3.xlsm

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

أنه يعمل ولاكن وجد أن قيمة المخزون يعرضها فى Me.stocktr يعمل على اخر سطر فى الليست بوكس  وليس على التاريخ الأدنى اريد ربط القيمة مع التاريخ الأدنى

رجاء ممكن اضافة تانية 

وفى حالة إذا كانت القيمة صفر مع التاريخ الأدنى يقوم بتحويل إلى التاريخ التالى

كما موضح فى الصورتين

Compress_٢٠٢٤٠٥٢٩_١٠٣٠٠٣_3433.jpg

Compress_٢٠٢٤٠٥٢٩_١٠٣٠٠٢_2505.jpg

 

sell-the-first-quantity- V3.xlsm

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

تفضل تم التعديل مع اظافة اكواد جديدة اظن انك باستطاعتك تعديلها بما يناسبك للحصول على النتائج المتوقعة 

لانني غير متاكد من قيمة العمود 3 على الليست بوكس 1 هل تود ترحيل قيمة المخزون او الكمية  اليك الكود المستخدم في حالة الرغبة بالتعديل 

p_307150hz91.png

Private Sub CommandButton1_Click()
'''''اضافة البيانات الى الليست بوكس'''''
Dim b As Variant, n As Byte
If catetr <> "" And Me.TextBox1 <> "" Then
 If Quantitetr.value = Empty Then MsgBox "المرجوا ادخال الكمية": Quantitetr.SetFocus: Exit Sub
' ترتيب التيكست بوكس
b = Array(Me.CB_Pièce.value, Me.catetr.value, Me.Quantitetr.value, TextBox1.value)
If ListBox1.ListCount <= 0 Then
ListBox1.Column = b
Else
ListBox1.AddItem b(0)
For n = 1 To 4
ListBox1.List(ListBox1.ListCount - 1, n) = b(n)
Next n
End If
  Me.ListBox1.ColumnCount = 4
  Me.ListBox1.ColumnWidths = "55;55;55;55"
End If
End Sub

 

sell-the-first-quantity- V4 .xlsm

تم تعديل بواسطه محمد هشام.
  • Like 1
رابط هذا التعليق
شارك

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

يوجد شئ اخر رجاء مساعدتى فى اكماله

اولا اريد ان اضيف فى الليست بوكس 2 القيمة السعرية للمنتج

ثانيا اريد عند اختيار المخزن ثم اكود المنتج يظهر محتوى كود الصنف مع اسم الصنف والقيمة السعرية

وهى  اسم الصنف catetr

السعر TextBox2

ثالثا واخيرا اريد عند اختيار مخزن معين فى ComboBox1

لايظهره فى هذا المخزن  ComboBox2 وانما يظهر المخازن الاخرى فى ComboBox2 لعدم التعارض مع المخازن الاخرى

وشكرا جزيلا لك

sell-the-first-quantity- V4 .xlsm

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

Option Compare Text
Dim OneRng(), Rng, rCrit1, rCrit2

Public Property Get f() As Worksheet: Set f = Sheets("Stock")
End Property

Private Sub UserForm_Initialize()
   OneRng = f.Range("A4:I" & f.[A65000].End(xlUp).Row).value
   Rng = UBound(OneRng, 2)
   'تنسيق التاريخ
   For i = LBound(OneRng) To UBound(OneRng): OneRng(i, 9) = Format(OneRng(i, 9), "dd/mm/yyyy"): Next i
   ' تنسيق عمود السعر
   For i = 1 To UBound(OneRng): OneRng(i, 3) = Format(OneRng(i, 3), "00.00"): Next i

'Code............

   Me.ListBox2.ColumnCount = 9
   Me.ListBox2.ColumnWidths = "40;55;60;60;60;0;0;0;50"
End Sub

 عند اختيار مخزن معين فى ComboBox1  لايظهره فى هذا المخزن  ComboBox2 وانما يظهر المخازن الاخرى

Private Sub ComboBox1_AfterUpdate()
  If Me.ComboBox1 = "*" Then Me.ComboBox2 = "*"
    Set j = CreateObject("Scripting.Dictionary")
    j("*") = ""
    a = f.Range("E4:E" & f.[E65000].End(xlUp).Row)
    For i = LBound(a) To UBound(a)
        If (a(i, 1) <> "") And (Format(a(i, 1), "@") <> Me.ComboBox1.value) Then j(a(i, 1)) = ""
    Next i
    Me.ComboBox2.List = j.keys
    Set j = Nothing
End Sub

 

 

sell-the-first-quantity- V5.xlsm

تم تعديل بواسطه محمد هشام.
  • Like 3
رابط هذا التعليق
شارك

الف شكر ا / محمد هشام انه يعمل

يوجد شئ اخر رجاء مساعدتى

وهو ادراج التاريخ فى  TextBox1 الخاص بمخزون الكود  فأنة لايعمل عندما اقم بأختيار كود الصنف

ثانيا واخيرا هل يمكن عمل ترتيب الاسماء المخازن فى sort in combobox1

وشكرا جزيلا لك

sell-the-first-quantity- V6.xlsm

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

  • أفضل إجابة

نظرا للطلبات الحالية اظن انه يجب علينا التعديل على اكثر من كود  للحصول على النتائج المتوقعة 

والتعديل كالاتي :

Private Sub UserForm_Initialize()
  'Code'''''''''
           ''''''''''''''
' 4اسم المخزن
  'Code''''''''''
   rw = d.keys

  ' Sort Combobox 1 Colmun "اسم المخزن" (5)
  tri rw, LBound(rw), UBound(rw)
  Me.ComboBox1.List = rw: Me.ComboBox1.ListIndex = 0
 
'Code''''''''''
 'Sort listbox2 Colmun "الكود" (1)
  'القيمة (OneRng, 1)
  'ترمز الى رقم العمود الهدف قم بتعديلها بما يناسبك
  P OneRng, 1, LBound(OneRng), UBound(OneRng)
End Sub
'********************************
Private Sub ComboBox1_AfterUpdate()
'Code''''''''
    Next i
   rw = j.keys
    tri rw, LBound(rw), UBound(rw)
  'Sort
  Me.ComboBox2.List = rw
    Set j = Nothing
End Sub
'**************************************
Sub Filtre()
'Code'''''''''''''''''
  f.[R2] = Cpt1: f.[S2] = Cpt2
   Me.TextBox2 = Format(CStr(f.[X2]), "#,##0.00")
  If f.[v2] = 0 Then Me.stocktr = f.[U2]: Me.TextBox1.value = Format(f.[W2], "dd/mm/yyyy") Else _
  Me.stocktr = f.[V2]: Me.TextBox1.value = Format(f.[T2], "dd/mm/yyyy")
 'Code'''''''''''''''''    
  If Me.ComboBox1 = "*" And _
  Me.CB_Pièce = "*" Then _
  Me.ListBox2.Clear: SubTotal = "": PriceTotal = "": LabelCont = "": TextBox1 = ""
End Sub

 

مع نسخ هده الاكواد داخل اليوزرفورم 

Sub tri(a, gauc, droi) 'Combobox (1-2) ترتيب تصاعدي
  réf = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
    Do While a(g) < réf: g = g + 1: Loop
    Do While réf < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call tri(a, g, droi)
  If gauc < d Then Call tri(a, gauc, d)
End Sub
'**********************
Sub P(a, V, gauc, droi) 'ترتيب البيانات على الليست بوكس  بشرط رقم الكود
  réf = a((gauc + droi) \ 2, V)
  g = gauc: d = droi
  Do
    Do While a(g, V) < réf: g = g + 1: Loop
    Do While réf < a(d, V): d = d - 1: Loop
    If g <= d Then
       For k = LBound(a, 2) To UBound(a, 2)
         temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
       Next k
       g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call P(a, V, g, droi)
  If gauc < d Then Call P(a, V, gauc, d)
End Sub

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

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

sell-the-first-quantity- V7.xlsm

تم تعديل بواسطه محمد هشام.
  • Like 2
رابط هذا التعليق
شارك

الاستاذ المبدع هشام محمد

تحية طيبة وبعد

رجاء استكمال لمستك الرائعة فى هذا الكود

يتم ادراج البيانات بنجاح فى باقى الشيتات  سواء  Entrees او Sorties

ولاكن فى بعض اصناف لم يتم خصمها من المخزن الخاص بها هل هو تعارض مع تاريخ الصلاحية فلا اعرف السبب تقريبا

رجاء مساعدتى فى استكمالاها تفضلا منك

ملحوظة

عندما يتم تحويل كمية صنف من مخزن الى مخزن اخر

اذا كان المخزن الاخر لايوجد صنف مدرج بأسمة فى شيت stock

فانة  عند اختيار المخزن من combobox2  يستدعى userform9 لادراج المخزن والكمية لاستكمال عملية التحويل

وشكرا

 هذا هو الملف

sell-the-first-quantity- V9.xlsm

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

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