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

أسامة البراوى

الخبراء
  • Posts

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

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

  • Days Won

    2

أسامة البراوى last won the day on سبتمبر 10 2015

أسامة البراوى had the most liked content!

السمعه بالموقع

176 Excellent

9 متابعين

عن العضو أسامة البراوى

  • تاريخ الميلاد 27 ماي, 1970

البيانات الشخصية

  • Gender (Ar)
    ذكر
  • Job Title
    مهندس
  • البلد
    القاهره
  • الإهتمامات
    Programming

اخر الزوار

3,168 زياره للملف الشخصي
  1. السلام عليكم بتجربة هذا الكود يوجد الملاحظات التالية 1- فى الجزء الاول وعند البحث عى البند فى الليست 2.. يجب توجيه الاختيار فى حالة تحقق الشرط الى السطر المطلوب فى الليست For i = 0 To ListBox2.ListCount - 1 If ListBox2.List(i) = item Then ' يجب توجيه الاختيار فى حالة تحقق الشرط الى السطر المطلوب فى الليست ListBox2.ListIndex = i qty2 = Val(ListBox2.Column(1)) stock2 = Val(ListBox2.Column(2)) Exit For End If Next i 2- بعد الانتهاء من عملياتك الحسابية ولتحديث list2 يجب تحديث القيم فى الجدول المصدر الذى استعملته فى خاصية rowsource وهو Table2 ,ويمكنك عن طريق استبدال الكود الموجود ListBox2.List(i, 1) = qty2 بالكود التالى Range("Table2").Cells(i + 1, 2) = qty2 أخيرا انت محتاج تراجع المعادلات اللى انت بتستخدمها ومحتويات ال listbox لان العمود اللى انت بتحسب منه قيمة stock1 و stock2 فيه اسم المخزن
  2. السلام عليكم المشكله انك حاطط المعادله داخل جدول خد نسخه من المعادله فى اي مكان بعيد عن الجدول وهيا تشتغل TEST.xlsm
  3. السلام عليكم يمكن اتباع الخطوات التالية لفتح الملف : 1- ممكن تفتح الملف بالضغط على زر الماوس الايمن ثم اختيار protected view 2- سوف يفتح الاكسل بدون عرض الفورم مع رسالة تحذير 3- قم باظهار محرر الفيجيوال بيسك قبل الموافقة على التحرير 4- قم بالموافقة على التحرير سوف تظهر الفورم ولكن محرر الفيجوال بيسك فى الخلفية يمكنك ايقاف التنفيذ لاخفاء الفورم والعودة الى الملف 5- الغى هذا الاكواد حتى الانتهاء من عملك : Private Sub Workbook_Open() Application.Visible = False mainform.Show End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = True End If End Sub وومككن تشغله لما تخلص تصميم وتضيف الازرار المناسبة
  4. السلام عليكم برجاء توضيح الغرض من الفلتر فى الملف المرفق حتى نستطيع تعديل المعادلة
  5. السلام عليكم بالنسبة للشيت المرفق اظن اللى ممكن يكون مسبب تقله هو كمية المعادلات فى الاعمدة h , i, j و خاصة العمود j والحل من وجهة نظري انك تلغى الاعمدة دي كلها وتستبدل المعادله فى العمود g الى المعادلة التالية =CEILING((D8+B8)/100/5,1)*5 ودي بتحسب لك العائد بنسبة 1% لاقرب 5 جنية (اعلى من المحسوب مباشرة) زي مانت عايز وبدون المعادلات الزياده فى الاعمدة الاخرى بالمناسبة فى خطأ هايحصل فى رصيد نهاية اليوم لما تشيل الاعمدة حاول تظبط معادلتها اظن انها محتاجة اعادة صياغة لانها حتى وبدون حذف اعمدة بتعطى نتائج غير منطقية
  6. السلام عليكم بالنسبه للحل باستخدام Power Query الذى قمت بتطبيقه فى المشاركة 3 هو صحيح ولكن البيانات الاصليه المدخله فى الجداول هى سبب المشكله مثلا Mohammed NOOR له SR و PF مختلف كل شهر فيمجرد ان تزيل هذه الاعمده من الجدول المحوري وتكتفى بالاسم سوف يعطى نتائج افضل وهناك حل اخر ان يكون محتوى العمود SR ثابت بالنسيه لكل موظف ويكون هو الرقم الوظيفى له ومتطابق فى جميع الشهور
  7. السلام عليكم الحل فى Pivot Table لما تقف على الجدول هتلاقى حقل PF قى القائمة اسحبه فوق الاسم مع الصفوف هتلاقيه ظهر لكن ف سطر لوحده فوق الاسم وعلشان يظهر بجواره اختار إعدادات Pivot table ثم اختار المظهر Classic ها يظهرو ف نفس السطر ولكن فى سطر إجمالى تحته قم بأخفاءه بالضغط على الزر الايمن Hide الاجمالى والغاء علامة الصح بجواره
  8. السلام عليكم مرفق حل بالمعادلات فقط (شرط ان لا تتكرر اسماء الدول فى السطر رقم 2) قوائم منسدلة ديناميكية.xlsx
  9. السلام عليكم اظن الأمر لا يحتاج الى كود للترحيل وممكن استعمال دالة Indirect مع دالة بسيطة لتعريف الصفحات معتمدة على الخلية F2 كما هي مكتوبة في الخانات F5 الى F14 كما في شيت "كشف الطباعة" بالملف المرفق وممكن تسهل على نفسك الأمور أكتر وتطبع الجدول بعد ما تضيف Page Header و Page Footer وتتحكم بارتفاع الاسطر لتحديد عدد الأسماء في كل صفحة كما بالشيت "كشف الطباعة 2" بنفس الملف , ترحيل الاسماء.xlsm
  10. السلام عليكم بالنسبة لعدد البيانات 100 او 1000 موظف لكل شهر ليس بكثير لجمعه في جدول واحد ويوجد طرق أخرى لتجميع الجداول خلاف ما تم شرحه مسبقا وممكن حل اخر باستخدام Power Query كما في الملف التالي Evaluation 1.xlsx ودا مش ها تفرق معاه كمية البيانات وطريقة الحل مشروحة في الفيديو التالي شرح دمج الجداول بواسطة Excel Power Query
  11. السلام عليكم: يمكن استخداد الدوال Filter و Sort بالخطوات التالية 1- للتسهيل منسدله فى خلية بأسماء المناديب ولتكن I4 2- مسح محتويات جدول بطاقة المندوب بالكامل من اول سطر 6 بما فيها العمود A 3- نكتب المعادله التالية فى الخانه A6 =SORT(FILTER('بيانات العميل'!A2:G1500,'بيانات العميل'!H2:H1500=I$4,""),2,1) =SORT(FILTER('بيانات العميل'!A2:G1500,'بيانات العميل'!H2:H1500=I$4,""),2,1) دي معادله من دالتين : الداله الاولى filter : ودي بتختار فيه جدول المصدر كله 'بيانات العميل'!A2:G1500 ثم الشرط وهو ان القيمه فى عمود المندوب = الاسم اللى احنا محددينه 'بيانات العميل'!H2:H1500=I$4 ثم القيمة المفترضه فى حالة عدم العثور على بيانات "" الدالة الثانية "Sort" ودي بتستدعى جدول (هنا اخدناه من الداله السابقة Filter) ثم ترتبه بواسطة العمود رقم 2 و بيكون الترتيب تصاعدي 1 سرد العملاء التابعين لكل مندوب 2021.xlsm ملحوظة: الدوال دى غير موجوده فى اصدارات ما قبل 2021
  12. السلام عليكم اولا: يبدو انك نقلت المعادله من ملف به جدول بدون مسميات اعمده . لذلك هو قام بتسمية العمود الاول بهذا الأسم يمكنك تغيير هذا الرمز الى اسم الخلية المرتبطه بالمعادله (رقم الغرفة مثلا) او تحويل نطاق الخلايا الى جدول (Insert > Table) * وتأكد ان اسم النطاق اللى بيبحث فيه صح لانى مش شايف فى الجدول شيت بأسم توزيعات
  13. السلام عليكم أظن ممكن يكون في حل بسيط للموضوع لكن فى اوفيس 2021 او 365 باستعمال دالتى Sort و Filter وبدون استخدام المصفوفات لو عندك احد الاصدارات دي هاوضحه بالتفصيل
  14. السلام عليكم لتبسيط الامور ممكن عمل التالى: 1- تعريف الجداول فى كل شهر Insert Table ........ تكون Table1 , Table2 .... الخ 2 - تجميع الجداول اسفل بعضها فى ورقة عمل جديدة بواسطة الأسم : بمعنى ادخل الخلية A1 واكتب فيها =Table1 و كذلك فى الخلية ِA17 نكتب =Table 2 وهكذا ... الى ان تظهر نسخه من جميع الجداول تحت بعضها ( ملاحظة لازم نترك مسافة بين بداية كل جدول والاخر تساوى الحد الأقصى لصفوف الجداول فى اى شهر انا افترضتها هنا 16 سطر .. علشان لو زودنا سطر فى اي جدول ما يظهرش خطأ ) بكدا يقى عندنا عمود فيه الاسماء ممكن نستعمل دالة CountIf امام كل أسم علشان نعرف تم تقييمه فى كام شهر ونعمل SumIf بدلالة نفس العمود وطبقا للاسم ونقسم المجموع على عدد التقييمات وكده نحصل على متوسط التقييمات لكل فرد فى الاشهر اللى اتقيم فيها ... والملف مرفق Evaluation.xlsx
  15. السلام عليكم مرفق الملف بعد إضافة الاكواد التالية مع توضيح أجزاء الكود وتفعيل عمليات البحث والاضافة والحفظ * تم اضافة زرار مؤقت باللون الاصفر لاستدعاء الفورم من الشاشة الرئيسة برنامج مخازن user 12345.zip ' تعريف المتغيرات الرئيسه Dim Sheet_Name As String Dim L_Row As Integer Dim Current_Row As Integer Private Sub UserForm_Initialize() ' ملء الكمبوبوكس الأساسى حسب جدول اسماء الشيتات L_Row = ThisWorkbook.Sheets("هام جدا للبرمجة").Range("A" & Rows.Count).End(xlUp).Row Me.ComboBox1.RowSource = "='هام جدا للبرمجة'!A2:A" & L_Row End Sub Private Sub ComboBox1_Change() ' عند اختيار اسم الشيت يتم حفظةفى المتغير الرئيسي لاستعماله فيما بعد Sheet_Name = Me.ComboBox1.Value L_Row = Sheets(Sheet_Name).Range("A" & Rows.Count).End(xlUp).Row ' ربط الشيت بالليست بوكس ListBox2.Visible = True Me.ListBox2.ColumnCount = 2 Me.ListBox2.ColumnWidths = "70,120" ListBox2.RowSource = "='" & Sheet_Name & "'!A3:B" & L_Row End Sub Private Sub ListBox2_Change() ' التنقل عبر اختيارالبنود من الليست بوكس Current_Row = ListBox2.ListIndex + 3 Me.TextBox1 = Sheets(Sheet_Name).Range("A" & Current_Row) Me.TextBox2 = Sheets(Sheet_Name).Range("B" & ListBox2.ListIndex + 3) End Sub Private Sub CommandSearch_Click() ' البحث عن قيم معينة وادراجها فى الليست بوكس الخاصة بالبحث ListBox1.Clear If Len(Sheet_Name) = 0 Then MsgBox "من فضلك اختار ورقة العمل" Exit Sub End If If Len(Trim(TextBox3.Text)) = 0 Then MsgBox "لم يتم إدخال قيمة للبحث عنها" ListBox1.Visible = False Exit Sub End If Dim myArray() As String Dim iRow As Integer ListBox1.ColumnCount = 3 ListBox1.ColumnWidths = "0, 70,120" For i = 0 To ListBox2.ListCount - 1 If InStr(1, ListBox2.List(i, 1), TextBox3.Text) <> 0 Then ListBox1.AddItem ' إضافة عمود مخفى برقم البند فى الليست يوكس الاساسي لتسهيل التنقل ListBox1.List(ListBox1.ListCount - 1, 0) = i ListBox1.List(ListBox1.ListCount - 1, 1) = ListBox2.List(i, 0) ListBox1.List(ListBox1.ListCount - 1, 2) = ListBox2.List(i, 1) End If Next ListBox1.Visible = True End Sub Private Sub ListBox1_Change() 'كود التنقل بواسطة قائمة نتائج البحث If ListBox1.ListCount > 0 Then If ListBox1.ListIndex > -1 Then ListBox2.ListIndex = ListBox1.List(ListBox1.ListIndex, 0) End If End If End Sub Private Sub Command_Add_Click() ' لإضافة بند جديد يتم إضافة سطر الى مصدر الليست الاساسى ثم التنقل الى السطر الجديد If Len(Sheet_Name) = 0 Then MsgBox "من فضلك اختار ورقة العمل" Exit Sub End If L_Row = L_Row + 1 ListBox2.RowSource = "='" & Sheet_Name & "'!A3:B" & L_Row ListBox2.ListIndex = L_Row - 3 End Sub Private Sub CommandDelete_Click() ' كود الحذف If Len(Sheet_Name) = 0 Then MsgBox "من فضلك اختار ورقة العمل" Exit Sub End If If Current_Row = 0 Then MsgBox "قم باختيار القيم التى تود حذفها" Exit Sub End If Dim R R = MsgBox("هل ترغب فى حذف السطر الحالى", vbOKCancel + vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "تاكيد الحذف") If R = vbOK Then Sheets(Sheet_Name).Rows(Current_Row).Delete End If ComboBox1_Change End Sub Private Sub CommandSave_Click() ' كود الحفظ If Len(Sheet_Name) = 0 Then MsgBox "من فضلك اختار ورقة العمل" Exit Sub End If If Current_Row = 0 Then MsgBox "قم باختيار القيم التى تود تعديلها او حفظها مسبقا" Exit Sub End If If TextBox1.Text = "" Or TextBox2.Text = "" Then MsgBox "هناك خطأ فى بيانات الكود أو الاسم" Exit Sub End If 'يمكنك هنا ايضا إضافة جمل برمجيةالتأكد من عدم تكرار رقم الصنف اوالكود مسبقا If Application.WorksheetFunction.CountIf(Sheets(Sheet_Name).Range("A1:A" & L_Row), TextBox1.Text) > 0 Then If Sheets(Sheet_Name).Range("A" & Current_Row).Value = TextBox1.Text Then GoTo 1 MsgBox "الكود المدخل متكرر برجاء التأكد من عدم تكرار الاكواد", vbOK + vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "الكود موجود مسبقا" TextBox1.Text = Sheets(Sheet_Name).Range("A" & Current_Row).Value Exit Sub End If 1: Dim CodeNr Dim CodeDiscr ' يفضل حفظ البيانات بعد التحديث فى متغيرات مؤقتة لتفادى الخطأ اثناء الحفظ ثم تحديثها فى ورقة العمل CodeNr = TextBox1.Text CodeDiscr = TextBox2.Text Sheets(Sheet_Name).Range("A" & Current_Row).Value = CodeNr Sheets(Sheet_Name).Range("B" & Current_Row).Value = CodeDiscr MsgBox "تم حفظ البيانات بنجاح", vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "تاكيد" End Sub Private Sub CommandEnd_Click() Me.Hide UserFormMain.Show End Sub
×
×
  • اضف...

Important Information