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

كل الانشطه

هذه الصفحة تحدث تلقائياً

  1. Yesterday
  2. السلام عليكم أستاذ الفاضل نموذج General_Report هو من اريد ان يتغيير اللون والخط في حقول Conclusion و حقل PracticalValueEstimation استاذ وادراج الارقام اليك الصورة نكما هو في نموذج مصغر للفكرة Nouveau Image bitmap (3).bmp
  3. في هذا الموضوع سنستعرض دالتين احترافيتين CountWeekday – لحساب عدد أيام محددة بين تاريخين CalculateMonthStats – لحساب إحصائيات شهرية لأي فترة زمنية الدوال مرنة، سريعة، وصحيحة حتى في الفترات الطويلة، ويمكن استخدامها لأي يوم من أيام الأسبوع وليس فقط الجمعة والسبت تعريف أيام الأسبوع Public Enum WeekDays wdSunday = 1 wdMonday = 2 wdTuesday = 3 wdWednesday = 4 wdThursday = 5 wdFriday = 6 wdSaturday = 7 End Enum دالة CountWeekday تحسب عدد أي يوم تختاره بين تاريخين مرنة: يمكن استخدامها لحساب أيام الأحد، الإثنين، الأربعاء، الجمعة … إلخ. سريعة وفعّالة دون الحاجة لتكرار كل يوم في الفترة. تتعامل مع التاريخ بشكل صحيح . الكود Public Function CountWeekday( _ ByVal StartDate As Date, _ ByVal EndDate As Date, _ ByVal TargetDay As WeekDays) As Long Dim TotalDays As Long, BaseCount As Long, ExtraDays As Long Dim FirstDay As Long, Offset As Long If StartDate > EndDate Then Exit Function TotalDays = DateDiff("d", StartDate, EndDate) + 1 If TotalDays <= 0 Then Exit Function BaseCount = TotalDays \ 7 ExtraDays = TotalDays Mod 7 FirstDay = Weekday(StartDate, vbSunday) Offset = (TargetDay - FirstDay + 7) Mod 7 CountWeekday = BaseCount If Offset < ExtraDays Then CountWeekday = CountWeekday + 1 End Function ------ دالة CalculateMonthStats تحسب إحصائيات الشهر: عدد الأيام الإجمالي عدد أيام الجمعة والسبت (يمكن تعديلها لأي أيام أخرى) عدد أيام العمل (باقي الأيام) الكود Public Type TMonthStats MonthName As String CalendarYear As Long FridayCount As Long SaturdayCount As Long TotalDays As Long WorkingDays As Long End Type Public Const MONTH_NAMES_AR As String = "يناير,فبراير,مارس,ابريل,مايو,يونيو,يوليو,أغسطس,سبتمبر,اكتوبر,نوفمبر,ديسمبر" Public Function GetArabicMonthName(ByVal MonthNumber As Long) As String Static arrMonths As Variant If IsEmpty(arrMonths) Then arrMonths = Split(MONTH_NAMES_AR, ",") If MonthNumber >= 1 And MonthNumber <= 12 Then GetArabicMonthName = arrMonths(MonthNumber - 1) End Function Public Function CalculateMonthStats( _ ByVal StartDate As Date, _ ByVal EndDate As Date, _ ByVal MonthNumber As Long, _ ByVal YearNumber As Long) As TMonthStats Dim result As TMonthStats result.MonthName = GetArabicMonthName(MonthNumber) result.CalendarYear = YearNumber result.TotalDays = DateDiff("d", StartDate, EndDate) + 1 result.FridayCount = CountWeekday(StartDate, EndDate, wdFriday) result.SaturdayCount = CountWeekday(StartDate, EndDate, wdSaturday) result.WorkingDays = result.TotalDays - result.FridayCount - result.SaturdayCount CalculateMonthStats = result End Function مميزات الدوال مرنة: تعمل لأي يوم تختاره سريعة وفعالة: تعتمد على القسمة والحسابات الرياضية صحيحة للفترات الطويلة: سواء أيام، أشهر أو سنوات تحقق تلقائي: لا تنتج أخطاء إذا كان تاريخ البداية أكبر من النهاية سهل التعديل: يمكن استخدام CountWeekday لحساب أيام محددة أخرى داخل CalculateMonthStats الفكرة العامة: باستخدام هاتين الدالتين، يمكنك: حساب عدد أي يوم من أيام الأسبوع بين تاريخين. بناء تقارير شهرية مع إحصاءات كاملة لأيام العمل والعطلات. التحكم الكامل في تحديد أيام العطلات أو الأيام المستثناة حسب الحاجة. وممكن التجربة من خلال الاكواد التالية '------------------------------------------------- ' اختبار حساب عدد أيام يوم محدد في فترة '------------------------------------------------- Public Sub TestCountSingleWeekday() Dim StartDate As Date Dim EndDate As Date Dim TargetDay As WeekDays Dim Count As Long ' مثال: من 1 مارس 2025 إلى 31 مارس 2025 StartDate = DateSerial(2025, 3, 1) EndDate = DateSerial(2025, 3, 31) ' اليوم المطلوب: الجمعة TargetDay = wdFriday ' حساب عدد الأيام Count = CountWeekday(StartDate, EndDate, TargetDay) ' طباعة النتيجة في النافذة الفورية Debug.Print "==============================" Debug.Print "اختبار CountWeekday:" Debug.Print "الفترة من: " & FormatDateValue(StartDate) Debug.Print "إلى: " & FormatDateValue(EndDate) Debug.Print "اليوم المطلوب: " & WeekdayName(TargetDay) Debug.Print "عدد الأيام: " & Count Debug.Print "==============================" End Sub '------------------------------------------------- ' اختبار حساب أكثر من يوم (مثلاً الجمعة والسبت) '------------------------------------------------- Public Sub TestCountMultipleWeekdays() Dim StartDate As Date Dim EndDate As Date Dim FridayCount As Long Dim SaturdayCount As Long ' مثال: من 1 أبريل 2025 إلى 30 أبريل 2025 StartDate = DateSerial(2025, 4, 1) EndDate = DateSerial(2025, 4, 30) ' حساب كل يوم على حدة FridayCount = CountWeekday(StartDate, EndDate, wdFriday) SaturdayCount = CountWeekday(StartDate, EndDate, wdSaturday) ' طباعة النتائج Debug.Print "==============================" Debug.Print "اختبار CountWeekday لعدة أيام:" Debug.Print "الفترة من: " & FormatDateValue(StartDate) Debug.Print "إلى: " & FormatDateValue(EndDate) Debug.Print "عدد أيام الجمعة: " & FridayCount Debug.Print "عدد أيام السبت: " & SaturdayCount Debug.Print "==============================" End Sub '------------------------------------------------- ' اختبار حساب كامل إحصاءات الشهر '------------------------------------------------- Public Sub TestCalculateMonthStats() Dim Stats As TMonthStats Dim StartDate As Date Dim EndDate As Date ' مثال: مارس 2025 كامل StartDate = DateSerial(2025, 3, 1) EndDate = DateSerial(2025, 3, 31) Stats = CalculateMonthStats(StartDate, EndDate, Month(StartDate), Year(StartDate)) ' طباعة النتائج Debug.Print "==============================" Debug.Print "اختبار CalculateMonthStats:" Debug.Print "الشهر: " & Stats.MonthName & " - " & Stats.CalendarYear Debug.Print "إجمالي الأيام: " & Stats.TotalDays Debug.Print "أيام الجمعة: " & Stats.FridayCount Debug.Print "أيام السبت: " & Stats.SaturdayCount Debug.Print "أيام العمل: " & Stats.WorkingDays Debug.Print "==============================" End Sub '================================================= ' دالة اختبار عدد أيام أي يوم من الأحد إلى الخميس '================================================= Public Sub TestCountWeekdaysOtherThanFriSat() Dim StartDate As Date Dim EndDate As Date Dim TargetDay As WeekDays Dim Count As Long ' مثال للفترة: من 1 مارس 2025 إلى 31 مارس 2025 StartDate = DateSerial(2025, 3, 1) EndDate = DateSerial(2025, 3, 31) Debug.Print "==============================" Debug.Print "اختبار CountWeekday للأيام غير الجمعة والسبت:" Debug.Print "الفترة من: " & FormatDateValue(StartDate) Debug.Print "إلى: " & FormatDateValue(EndDate) ' التجربة لجميع الأيام من الأحد إلى الخميس For TargetDay = wdSunday To wdThursday Count = CountWeekday(StartDate, EndDate, TargetDay) Debug.Print WeekdayName(TargetDay) & ": " & Count Next TargetDay Debug.Print "==============================" End Sub '================================================= ' دالة اختبار عدد أيام أي يوم من الأحد إلى الخميس (باستثناء الثلاثاء) '================================================= Public Sub TestCountWeekdaysExceptTuesday() Dim StartDate As Date Dim EndDate As Date Dim TargetDay As WeekDays Dim Count As Long ' الفترة الزمنية للاختبار StartDate = DateSerial(2025, 3, 1) EndDate = DateSerial(2025, 3, 31) Debug.Print "==============================" Debug.Print "اختبار CountWeekday للأيام الأحد-الإثنين-الأربعاء-الخميس (باستثناء الثلاثاء)" Debug.Print "الفترة من: " & FormatDateValue(StartDate) Debug.Print "إلى: " & FormatDateValue(EndDate) ' التجربة لجميع الأيام من الأحد إلى الخميس مع استثناء الثلاثاء For TargetDay = wdSunday To wdThursday If TargetDay <> wdTuesday Then Count = CountWeekday(StartDate, EndDate, TargetDay) Debug.Print WeekdayName(TargetDay) & ": " & Count End If Next TargetDay Debug.Print "==============================" End Sub اطيب الامانى
  4. في ظل التفاعل المتواضع ، تم اعتماد الفكرة :- 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. للتطبيق والتنفيذ وطرحها في موضوع مستقل إن شاء الله . شكراً من القلب لكل من تفاعل ولكل من مر من هنا . سيتم الإعلان عن الفكرة والمطلوب تنفيذها وشروطها وجميع معطياتها في موضوع قريب منفصل
  5. استاذ @بلال بلال اليك المرفق المقترح كامل ولكي نكمل طلبك عليك بكل نموذج تضع (*) حمراء بجوار كل (كمبوبكس أو تكستبكس أو لابل ) للذي تريد عليه تغيير اللون والخط و ......... ورجعه لي بعد تحدد لاتمام العمل ........ واي تعديلات تريدها . Bilal_Yamen_New.rar
  6. أخي الفاضل بعد تطبيق الملف عندي وإضافة نماذج أخري عند التشغيل واختيار في نموذج الدخول ( سعد محمد ) يدخل علي الشاشة الرئيسية وعند الضغط مثلا علي زر التلاميذ تأتي الرسالة ويقف المؤشر علي كلمة InputBoxDK وكمان التكست الملونة لا يظهر رقم اليوزر
  7. دى الاجابة اللى اوصى بيها حساب الجمعة والسبت(V3).accdb
  8. طيب ولان كلمة حساب فى المطلق كانت تحتمل العديد من الاحتمالات مثلما اشار الاستاذ : ابوخليل ولانى جاوبت اجابة قد تحتمل الخطا ولكن بما انها صادفت انها هى الاجابة المرغوبة ابشر سوف اقدم واعيد الاجابة بشكل اكثر احترافية ولكن اولا دعنى اقدم لكم نصيحة الى ان انتهى من عمل الاجابة بالشكل اللائق حاول دائما تسمية الحقول والجداول بشكل احترافى
  9. للاسف 95 بس ما تكفى ولا توفى 1+1=2 ما يصير نقول ونحكى ان 1+1 ممكن =1.95 ونستدل بمثل زى ده على هذه الحالة تحياتى
  10. السلام عليكم ورحمه الله وبركاته اخواني الاعزاء محتاج كود لشيت اكسيل هبعته لعميل السيناريو المطلوب اول ثلاث ايام فترة تجريببه ثم يطلب كود تفعيل وفى حالة نقل الشيت الى جهاز اخر يطلب كود تفعيل جديد نفس فكرة البرامج الجهازه فترة تجريبيه بعدها تفعيل وحماية من النقل
  11. الف شكرا لحضرتك استاذ خليفة وبارك الله فيك وأكثر الله من أمثالك وغفر الله لك ذنبك وزادك الله من علمه الذي لا ينضب
  12. يقول المثل : ما لا يُدرك جُلُه .. لا يُترَك كُلُه 😄🖐️ وبعدين 95% نسبة حلوة تخش بيها كلية الهندسة إن شاء الله 😅
  13. ⏳ باقي من الوقت ساعات قليلة حتى نهاية وقت الإستفتاء ..
  14. ماشاء الله زادك الله علماً ورفع الله قدرك ورزقك الله الفردوس الأعلى من الجنة
  15. جرب التعديل التالي لا ننس كتابة اسم الملف في الحلية A2 الكل (1) (2).xlsm لا حرج ان اردت اي تعديل احر
  16. ماشاء الله إضافة لو أمكن ورقة العمل الجديدة اسمها سوف يوجد فى الخلية a2 هل يمكن التسمية مباشر الورقة الجديدة تكون بالامتداد الجديد مباشر دون مشاهدة عملية الحفظ الحفظ يكون فى نفس مسار الملف القديم اعلم أننى اثقلت على حضرتك
  17. اليك التعديل الكود يحفظ بامتداد XLSB اذا اردته XLSM قم بتغيير XLSB الى XLSM + تغيير 50 الى 52 الكل (1).xlsm
  18. ان شاء الله ساقوم بالتعديل على الكود
  19. تمام اريد التعديل على الكود فقط
  20. يشمل كل عملية حفظ واعتقد انك تريد التعديل على الكود ليحفظ بامتداد XLSM أو XLSB هل الامركذلك
  21. الأخ الكريم / عبدالله بشير عبدالله كل عام وحضرتك بخير وجزاكم الله خير الجزاء سؤال هل هذا التعديل يشمل كل عملية حفظ للأكسيل عموما أم الملف الورفق ؟ - اود يكون التعديل على الكود فقط إن أمكن -
  22. السلام عليكم ورحمة الله وبركاته كان من الافضل ارفاق ملف للتطبيق عليه جرب الملف المرفق ببيانات افتراضية في النطاق A2:A100 ومعادلة الجمع في الخلية D2 ,DL ويمكنك نسحها الى اي خلية اخرى =IFERROR(SUMPRODUCT((A2:A100>0)*(SUBTOTAL(103;OFFSET(A2;ROW(A2:A100)-MIN(ROW(A2:A100));0)))*(A2:A100));0) جمع الأرقام الموجبة فقط الظاهرة دون المخفية.xlsx
  23. مفيش حاجة اسمها كده بنسبة ونضرب رقم فى حاجة اسمها فى وميض اهتزاز رعشة او مفيش ودى مشكلة ازلية فى الاكسس مالهاش اى علاج
  24. وعليكم السلام ورحمة الله وبركاته اضغط على قائمة ملف (File). اختر خيارات (Options) . من النافذة التي ستظهر، اختر تبويب حفظ (Save) . ابحث عن خيار حفظ المصنفات كما بالصورة ثم موافق
  25. لدي قائمة أرقام موجبة وسالبة وبعضها مخفية، أريد دالة جمع الأرقام الموجبة فقط الظاهرة دون المخفية
  1. أظهر المزيد
×
×
  • اضف...

Important Information