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

نجوم المشاركات

  1. محمد هشام.

    محمد هشام.

    الخبراء


    • نقاط

      11

    • Posts

      1,366


  2. kkhalifa1960

    kkhalifa1960

    الخبراء


    • نقاط

      6

    • Posts

      1,688


  3. Ahmos

    Ahmos

    02 الأعضاء


    • نقاط

      5

    • Posts

      76


  4. AlwaZeeR

    AlwaZeeR

    الخبراء


    • نقاط

      4

    • Posts

      775


Popular Content

Showing content with the highest reputation on 03 يون, 2024 in all areas

  1. بعد توجيهات أستاذنا @ابوخليل تفضل استاذ @zero1111330566 محاولتي حسب مافهمت اليك الشرح والمرفق . ووافني بالرد . الاصناف_1.rar
    5 points
  2. وعليكم السلام ورحمة الله وبركاته طبعا ينفع عزيزي Function GetTotalSum(tableName As String, fieldName As String) As Double Dim db As DAO.Database Dim rs As DAO.Recordset Dim sql As String Dim totalSum As Double Set db = CurrentDb sql = "SELECT SUM([" & fieldName & "]) AS TotalSum FROM [" & tableName & "]" Set rs = db.OpenRecordset(sql) If Not rs.EOF Then totalSum = rs!TotalSum Else totalSum = 0 End If rs.Close Set rs = Nothing GetTotalSum = totalSum End Function ويمكنك استدعاءها هكذا: Sub TestGetTotalSum() Dim total As Double total = GetTotalSum("Orders", "OrderTotal") MsgBox "Total Sum of OrderTotal: " & total End Sub
    4 points
  3. الآن هنا من يريد أن يتعلم! إذن لدينا بعض الخطوات التي يجب أن نقوم بها قبل الشروع في تطوير النظام البرمجي.. 1. الجلوس مع المكلف (دافع الضرائب) لمعرفة ماهية نشاطة التجاري. 2. البيانات التي يطلبها المكلف في مراقبة نشاطه التجاري. 3. تتميم هذه البيانات بمتطلبات ZATCA في بيانات الفاتورة. 4. تمثيل متطلبات المكلف و ZATCA واقعيا في قاعدة بيانات أكسس. 5. التسجيل في منصة المطورون التجريبية، وتنزل حزمة SDK والمراجع المتعلقة بها. البيئة التجريبية لطلبات التكامل والربط ضمن واجهة برمجة التطبيقات (API) مجموعة أدوات التحقق من الامتثال وحزمة أدوات تطوير البرمجياتت تنزيل جافا SE 11 ومافوق.. 6. تنزيل المراجع التعريفية بنظام الفوترة لمعرفة المصطلحات ورموزها للتعود على ذلك أثناء المناقشة هنا. الموارد التعليمية أتمنى ممن يريد أن يتعلم أن يكون جاداً، لأن مشوار الربط والتكامل طويل ويحتاج إلى صبر! وأنا رجل ملول، قد أترك الشرح ثم أعود إليه، وما على المحسنين سبيل.. أتمنى أن يقوم كل متعلم ببناء قاعدة البيانات التي تخصه ولا يرسلها إلى المشاركة، وسوف أقوم أنا أو أحد المتبرعين ببناء قاعدة بيانات بناءً على اقتراحات المشارين.. ألهمِ اللهُ الجميع الفهم والصبر..
    2 points
  4. وعليكم السلام ورحمة الله تعالى وبركاته Option Compare Text Dim depart, Cnt, comment, f, ColSearch(), J Public Property Get WS() As Worksheet: Set WS = ActiveSheet End Property Private Sub UserForm_Initialize() Dim arr() comment = " تحديد ورقة العمل" Me.Label1.Width = 900 depart = Me.Label1.Left Message = " برنامج المخازن يرحب بكم . صل على محمد" Me.Label1.Caption = "**********" & Message & "**********" & Message & "************" Cnt = Len(Me.Label1.Caption): Me.ComboBox1 = comment ColSearch = Array(3, 2, 1) J = UBound(ColSearch) + 1 For i = 1 To 3: Me("head" & i).Visible = False: Next i k = 1 For Each sh In ActiveWorkbook.Sheets If sh.Cells(3, 3) <> Empty Then ReDim Preserve arr(1 To k) arr(k) = sh.Name k = k + 1 End If Next sh Me.ComboBox1.List = arr Me.ComboBox1.ListIndex = 0 Count.Caption = ListBox1.ListCount Me.ComboBox1 = comment End Sub '*************************************** Private Sub Textbox1_Change() r = "*" & Me.Textbox1 & "*" Dim Cpt(): n = 0 For i = 1 To UBound(f) If f(i, 1) Like r Then ' فلترة بالاسم عمود (1) n = n + 1: ReDim Preserve Cpt(1 To J, 1 To n) c = 0 For Each k In ColSearch c = c + 1: Cpt(c, n) = f(i, k) Next k End If Next i If n > 0 Then Me.ListBox1.Column = Cpt Else Me.ListBox1.Clear Count.Caption = ListBox1.ListCount End Sub '******************************* Private Sub ComboBox1_Change() On Error Resume Next Sheets(CStr(ComboBox1)).Activate f = WS.Range("A3:C" & WS.[a65000].End(xlUp).Row).Value If Me.ComboBox1 <> comment And WS.Cells(3, 3) <> "" Then For i = 1 To 3: Me("Hard" & i).Visible = True: Next i Set d = CreateObject("Scripting.Dictionary") For i = LBound(f) To UBound(f) If f(i, 1) <> "" Then d(i) = Array(f(i, 3), f(i, 2), f(i, 1)) Next i n = d.Count If n > 0 Then Dim Cpt: Cpt = Application.Transpose(d.items) ReDim Preserve Cpt(1 To 3, 1 To n + 1) Me.ListBox1.List = Application.Transpose(Cpt) Me.ListBox1.RemoveItem n For i = 1 To 3: Me("Hard" & i) = WS.Cells(2, i): Next i Count.Caption = ListBox1.ListCount End If End If End Sub يوزر فورم3.xlsb
    2 points
  5. ولك بالمثل اخي @أبو قاسم يسعدنا اننا استطعنا مساعدتك
    1 point
  6. النص بعد حذف الأرقام أصبح مصنفات البختري (15)، و269 - () حدثنا محمد .. اليك النسخة بالمرفقات Smart_Search_NSSJ_V2.accdb
    1 point
  7. السلام عليكم مفيش الزرار اللي حضرتك بتقول عليه فالمرفق ولا يوجد كود او ماكرو في المرفق اللي حضرتك باعته فىه نفس المواصفات دي
    1 point
  8. لست متاكدا من طلبك لاكنك ادا كنت تقصد اظهار اسماء اوراق العمل كما في الصورة المدرجة والتنقل بينها جرب هدا يمكنك تعديله بما يناسيك test.xlsm
    1 point
  9. بارك الله فيك وجزاك الله خير استاذنا القدير ابا ابراهيم حضورك معنا ومداخلتك شرف لنا الله يعطيك الصحة والعافيه وان شاء الله بتكاتف الجهود من الجميع نطلع بنتيجة طيبه يستفيد منها الجميع الف شكر لك ابا ابراهيم
    1 point
  10. السلام عليكم ورحمة الله وبركاته أخي الكريم بارك الله فيك، إليك نسخة محسنة مع بعض الإضافات التي قد نحتاج إليها مستقبلاً "بالمرفقات" - تم إزالة الاكواد الزائدة - تم تعديل الوظيفة الخاصة بقص النص وإضافة بعض المميزات - تم إضافة جدول أسماء الكتب إليك بعض التوضيحات 1- الكود المسؤول عن إضافة أسماء الكتب للكولكشين هو "createBooksCollection" ويمكن التعديل عليه لتغير المصدر الخاص بأسماء الكتب من خلال التعديل علي اسم الجدول : booksSourceTable = "BOOKSLIST" اسم العمود : booksColumn = "BookName" يتم تطيبق هذا الاجراء داخل الكود الاساس من خلال هذه الاكواد 1- يجب تعريف الكوليكشين Dim BooksCollection As Collection ثم التطبيق createBooksCollection BooksCollection 2- تم تعديل الوظيفة الخاصة بالنص حتي تسمح بالاتي هي فالاول كانت تقوم بالبحث عن اول الكلمة (إسم الكتاب) ثم تبحث عن أخر رقم مطابق الان التعديلات هي 1- البحث عن أقرب رقم مطابق وهو الافتراضي 2- البحث عن أخر رقم مطابق 3- إمكانية إضافة نص أختياري بعد الرقم المطابق مثال Sub TestTrimString() Dim fullText As String fullText = "I have too many books contain this subject book 35 and book 353 and book 35/4 and book 135 search in any" ' حتي نحصل علي أقرب نتيجة مطابقة Debug.Print trimString(fullText, "books", "35") ' حتي نحصل علي أبعد نتيجة مطابقة Debug.Print trimString(fullText, "books", "35", False) ' حتي نحصل علي أقرب نتيجة مطابقة ثم نضيف 4 خانات من النص الاساسي Debug.Print trimString(fullText, "books", "35", True, 4) ' حتي نحصل علي أبعد نتيجة مطابقة ثم نضيف 5 خانات من النص الاساسي Debug.Print trimString(fullText, "books", "35", False, 5) End Sub هذه الأكواد متعلقة بوجود العمود MNOX وكما فهمت هذا العمود لن يكون موجود تم وضعه للأختبار فقط لذا يجب تعليق هذه الاكواد في حالة عدم وجودة If CStr(Nz(!MNO, "")) = CStr(Nz(!MNOX, "")) Then !select1 = True Else !select1 = False End If Debug.Print "Total Match is " & DCount("[select1]", "BOOKS", "[select1]=True") & " / " & DCount("*", "BOOKS") & " Total Records" تم إضافة هذا الكتاب لجدول الكتب تم إضافة العمود الخاص بعدد النتائج والعمود الخاص بجميع الـ MNO بها لو أمكنك مشاركة هذه النتيجة عند التجربة علي قواعد بيانات كبيرة It Takes | 78MS | To resolve | 33 | Records لمعرفة كم احتاجت من الوقت أرجو لك من الله التوفيق Smart_Search_NSSJ.accdb
    1 point
  11. أخي الكريم إجابةً علي هل هناك طرق أخري فحسب معلوماتي يوجد طريقة أخري عني طريق تحديد أنماط للبحث داخل النص باستخدام (regEx) ولكن فيما يتناسب مع الحالات التي قد ترد هو المسار المختار الان ونسأل الله التوفيق لماذا ؟ لان المشكلة الحقيقية ليست البحث داخل النص عن أسم الكتاب ومقطع أخر المشكلة ان المقطع الأخر قد يرد قبله اسم كتاب اخر ولذا هداني الله لهذه الطريقة ان نقوم بتحديد النص المراد عن طريق الحدود وهي اسم الكتاب ورقم البحث ومن ثم إذا كانت نتيجة التصفية 1 فلا يوجد مشكلة وهنا تطابق 100% اما اذا كانت أكثر نقوم بالبحث داخل هذه النتائج فإن كان هناك اسم كتاب أخر بين اسم الكتاب والرقم فهذا يعني بان الرقم يخص الكتاب الأخر فنستبعد هذا الاحتمال ولذلك من المهم جداً ان تعرض جميع الحالات الممكنة حتي يتم مراعاتها كما يمكن ان نقوم بأكثر من عملية للوصول إلي أوثق نتيجة بإذن الله والاضافة الحالية التي قد تساعدك ان نقوم بإضافة عمود نضع فيه عدد النتائج التي ظهرت في التصفية وعمود أخر نجمع في ارقام الـ MNO الخاصة بهذه النتائج حتي نقلص وقت المراجعة
    1 point
  12. استاذنا ومعلمنا @ابوخليل هذا ما تعلمناه منكم ( اثلجتم صدري) . اشكركم وحياكم الله وأنا منايا مقابلة شخصكم الكريم . والشكر موصول ايضا لأستاذنا ومعلمنا @Moosak لتفاعله .
    1 point
  13. جزاك الله خير المطلوب وزيادة شكرا لك
    1 point
  14. طلبك غريب !!! مربع التحرير يشتمل على بيانات ثابتة مصدرها الجدول ... ويتم الاختيار منه فمسألة اضافة نص تحتاج عمليات اخرى .. ايضا سيتم تغير النص الأصلي الموجود في الجدول منطقيا .. يمكن تحقيق الفكرة على مربع نص اثناء التحرير والكتابة
    1 point
  15. أخي الكريم تم عمل التعديل كالتالي 1- تقوم الوظيفة بقص النص الأساسي الي مقطع ما بين اسم الكتاب واخر رقم يطابق الرقم الخاص بالبحث 2- وهو خطوة مهم جداً يجب ان تحتوي قاعدة البيانات التي سوف تعم عليها جميع أسماء الكتب لاننا سنضعها داخل كولكشين ونبدأ بعمل التالي الان لدينا النص الذي نريد البحث بداخله ولدينا جميع اسماء الكتب فحتي اتبين ان الرقم يخص الكتاب الخاص بالبحث وليس كتاب اخر سوف اقوم باستبدال جميع اسماء الكتب الاخرى بكلمة محددة حتي اتمكن من عدها لاحقاً إذا وقعت بين الكتاب الاساس في البحث والرقم الخاص بالبحث ومن ثم اقم بالعدد فمثلاً في هذه الحالة عندما أضفت اسم الكتاب الفوائد المعللة لأبي زرعة الي الجدول BOOKS أصبحت النتيجة صحيحة وهنا إذا اضفنا المجمع لقائمة الكتب ستصبح النتيجة صحيحة وهكذا ،،، تم إضافة هذا الجزء حتي يقوم بمقارنة النتيجة بالرقم mnox ويقوم بعمل select1 true or false If CStr(Nz(!MNO, "")) = CStr(Nz(!MNOX, "")) Then !select1 = True Else !select1 = False End If أتمني ان يقوم هذا بالمطلوب وكما أخبرتك سابقاً يفضل إضافة مثال يحتوي علي كل او معظم الحالات حتي نتمكن من وضع تصور يسمح بالتعامل مع أغلب الحالات قدر المستطاع وفقك الله وحفظك بانتظار التجربة علي ملف يحتوي علي عدد كبير ويفضل ان يحتوي علي جميع أسماء الكتب Smart_Search_New02.accdb
    1 point
  16. نظرا للطلبات الحالية اظن انه يجب علينا التعديل على اكثر من كود للحصول على النتائج المتوقعة والتعديل كالاتي : 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
    1 point
  17. 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
    1 point
  18. تفضل تم التعديل مع اظافة اكواد جديدة اظن انك باستطاعتك تعديلها بما يناسبك للحصول على النتائج المتوقعة لانني غير متاكد من قيمة العمود 3 على الليست بوكس 1 هل تود ترحيل قيمة المخزون او الكمية اليك الكود المستخدم في حالة الرغبة بالتعديل 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
    1 point
  19. تفضل جرب هل هدا ما تقصده تم تمييز الاظافات التي قمت بتعديلها داخل الاكواد يرجى مراجعتها وتعديلها بما يناسبك sell-the-first-quantity- V3.xlsm
    1 point
  20. ببساطة يمكنك اظافة السطر التالي في اخر الكود مع تعديل تنسيق التاريخ بما يناسبك '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 للاسف لا استطيع فهم طلبك ومادا تقصد بقيمة المخزون
    1 point
  21. سؤال على الهامش للأخ @سلمان الشهراني ولا غنى عن البقية طبعاً هل لهذا الموضوع علاقة بما تم طرحه هنا ؟؟ أو يساعد في تحقيق الهدف !!
    1 point
  22. صراحة لم افهم طريقة اشتغالك على الملف لاكنني حاولت فقط انشاء الكود الخاص بالفلترة ما بين العناصر المدكورة على يوزرفورم مستقل يمكنك اظافة الاكواد الخاصة بك معه او تعديله بما يناسبك 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
    1 point
  23. السلام عليكم كلما حاولت فتحة تاتينى هذه الرسالة
    1 point
×
×
  • اضف...

Important Information