نجوم المشاركات
Popular Content
Showing content with the highest reputation since 03/06/26 in all areas
-
أهلاً بكم في التحدي الثاني من سلسلة "الفعاليات والتحديات الشهرية". بعد الإستفتاء والإستطلاع الذي تم ؛ وقع اختيار المصوتين على الموضوع :- 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. وعليه ، فأن هذا التحدي محفوف بالإثارة والمتعة الكبيرين لأنه سيكون مفتوح الأفق من أوسع أبوابه بحيث ستكون :- 📖 قصة التحدي :- طلب منك عزيزي المشارك ( المصنع التقني نفسه ) بناء نظام تسجيل دخول محترف وعالي الجودة برمجياً وتصميمياً كواجهة ، يتمتع بمزايا تمنح المسؤول منح الصلاحيات للمستخدمين بطريقة قوية ومتينة . 🛠️ المطلوب :- إنشاء جدول باسم tbl_Users للمستخدمين ، وأي جداول أخرى تحتاجها لإدارة الصلاحيات . 🚫 شروط التحدي :- يجب عليك ضبط إعدادات التحدي ، بحيث يكون هناك جزء لإدارة المستخدمين وكلمات المرور ، والصلاحيات بالطريقة التي تريدها وتراها في مخيلتك الواسعة . دون أي قيود في تنفيذ الفكرة . 🚫 قوانين المشاركة :- السقف مفتوح للمشاركين بالطريقة والوسيلة والأسلوب الذي يراه مناسباً لتنفيذه الفكرة . استخدام واجهة جذابة لواجهة تسجيل الدخول . أو واجهة الإعدادات والصلاحيات . مدة الإشتراك بتقديم الأعمال والأفكار سيكون 30 يوماً من تاريخ الموضوع اليوم 10-03-2026 ، وتنتهي بإذن الله بتاريخ 10-04-2026 ♻ كيف تشارك ؟ قم برفع ملف مرفق فقط . وتذكر أنك عزيزي المشارك تملك الحق في 3 محاولات لإجاباتك خلال التحدي الواحد فقط .4 points
-
أثناء بحثي ضمن مخزون تطبيقات الاكسس عندي للبحث عن أفكار جديدة أستخدمها كموضوع لأداة جديدة أضيفها لسلسلة الأدوات المساعدة المخصصة وقع بيدي ملف كنت قد حملته منذ سنوات من أحد المنتديات الأجنبية وقد كان عبارة عن تحدي أو لغز غريب وهو عن مربع تحرير وسرد يحتوي على قائمة عناصر ولكن عند فتحه في وضع التصميم لا نجد أي عناصر في مصدر الصف الخاص بالقائمة والحقيقة أني وأثناء محاولاتي لحل اللغز وجدت أنه في مضمونة يتكون من أكثر من سؤال 1- كيف تم إضافة عناصر القائمة؟ 2- كيف يمكن حذف تلك العناصر؟ 3- أين يتم حفظ القائمة؟ وحتى أكون صادقاً في كلامي فقد إستطعت حل السؤالين 1 و 2 أما 3 فلم أعرف إجابته إلا بالبحث في الإنترنت وبصراحة أني عند إسترجاع ذكريات محاولاتي لحل اللغز إسترجعت المتعة التي وجدتها في المحاولة بحد ذاتها ناهيك عن متعة إيجادي للحل فأتمنى أن تجدوا تلك المتعة أثناء محاولتكم (طبعاً لمن لم يمر عليهم هذا اللغز من قبل) في الأخير إذا أردتم مني إجابة أي سؤال فأنا مستعد ولكني سأؤجل الإجابة حتى لا تفسد المتعة لمحبي الألغاز لغز.rar3 points
-
أخواني وأساتذتي ومعلمينا ( دون استثناء ) ابدأ مووعي هذا بسؤال يلامس ( نقاط الألم ) لدى المبرمجين :- هل سبق لك أن ورثت قاعدة بيانات اكسيس بآلاف السطور البرمجية وشعرت بالضياع مع كثرة الدوال والأكواد ؟ هل تبحث عن طريقة سحرية لتنظيف مشروعك من الأكواد الميتة والإجراءات غير المستخدمة ؟ هل تواجه مشاكل في توافق أكواد Windows API بين إصدارات Office 32-bit و 64-bit ؟ أهلاً بك في عالم Access Code Explorer - أول وأقوى مدير متكامل لمشاريع Access/VBA في العالم العربي . هذه ليست مجرد أداة ، بل مشروع متكامل يحول الـاكسيس الخاص بك إلى بيئة تطوير محترفة (IDE) بمعنى الكلمة . 1️⃣ القسم الأول : التحليل والاستكشاف (Analysis & Exploration) :- مستكشف الكائنات الذكي : شجرة متكاملة تعرض كل مكونات المشروع من ( جداول ، استعلامات ، نماذج ، تقارير ، موديولات و كلاسات ) بطريقة منظمة وقابلة للطي والفتح ( نظام الشجرة في ليست بوكس ). البحث العميق : ابحث عن أي نص برمجي أو كلمة في جميع الإجراءات والاستعلامات دفعة واحدة . الأداة ستظهر لك النتائج وتضع علامة مرجعية على السطر الذي تم العثور عليه داخل الكود ! عرض SQL بشكل احترافي : عند اختيار أي استعلام ، ترى كوده مع تصنيف لنوعه ( استعلام تحديث ، إضافة ، حذف ، توحيد ... إلخ ) وإمكانية تحويله إلى كود VBA جاهز بنقرة واحدة . إحصائيات دقيقة : عرض عدد الجداول ، الاستعلامات ، النماذج ، التقارير ، الموديولات ، الكلاسات ، وإجمالي سطور الأكواد في مشروعك . الأداة قادرة على اكتشاف إصدار الأوفيس ونواته ، وإصدار الويندوز ونواته أيضاً في التعليق التوضيحي للنموذج عند فتحه . 2️⃣ القسم الثاني : أدوات الصيانة والتحسين ( Maintenance & Optimization ) :- 🧹 كشف وإزالة الإجراءات غير المستخدمة ( Dead Code ) :- يقوم بتحليل علاقات الاستدعاءات بين الإجراءات ( Call Graph ) . يحدد بدقة الإجراءات التي لا يتم استدعاؤها من أي مكان . ميزة الأمان : يقوم بإنشاء نسخة احتياطية تلقائية لجميع الإجراءات قبل حذفها ! 3️⃣ القسم الثالث : مصحح الأكواد الشامل (VBA Fixer) :- إزالة الأسطر الفارغة المكررة . حذف الإجراءات الفارغة . تعطيل أو إزالة أوامر Debug.Print و Stop . إعادة تنسيق الكود بالكامل ( Code Formatting ) مع مسافات بادئة ذكية . اكتشاف وإصلاح أخطاء معالج الأخطاء ( On Error Goto ) الميتة . إضافة ( On Error GoTo 0 ) المفقودة بعد استخدام ( On Error Resume Next ) . توحيد وإصلاح أسطر Option Explicit و Option Compare في كل الموديولات والكائنات . اكتشاف المتغيرات غير المستخدمة . ( سيتم إضافته قريباً ) وضعان للتشغيل : 🌐 الوضع الشامل : لتحليل وإصلاح المشروع بأكمله . 🎯 الوضع الفردي : لتحليل وإصلاح إجراء واحد فقط ( الذي تحدده في القائمة ) . 4️⃣ القسم الرابع : ثورة إدارة Windows APIs :- 📚 مكتبة APIs مدمجة : تحتوي على عشرات من أشهر دوال Windows API مصنفة حسب الوظيفة ( Window, File, Registry, Process, Memory, Network... ). 🧠 كشف وحل مشاكل التوافق ( API Compatibility Checker ) :- يكتشف تلقائياً الـ APIs المكررة في جميع أنحاء المشروع . يحدد لك أفضل مكان للاحتفاظ بالـ API ( يفضل الموديولات العامة ) . يكشف مشاكل الـ 64-bit : يجد جميع الدوال التي تفتقد إلى PtrSafe أو تستخدم Long بدلاً من LongPtr . 💉 حقن وإدراج الـ APIs بذكاء : على سبيل المثال ؛ إذا استخدمت دالة CreateFile في كودك ولم تعلن عنها ، الأداة تكتشف ذلك وتقوم بإضافتها تلقائياً إلى موديول مركزي Mod_Foksh وتحويلها إلى Public لتكون متاحة في كل مكان . 📝 شرح وأمثلة استخدام : لكل API في المكتبة شرح مبسط وأمثلة جاهزة للنسخ واللصق . 5️⃣ القسم الخامس : واجهة مستخدم ذكية :- أزرار تحكم سريعة : طي/ فتح كل المجموعات بنقرة واحدة ، ترتيب الإجراءات تصاعدي/تنازلي . قوائم منظمة (Menus) : تم تقسيم الأدوات إلى قائمتين (Menu01, Menu02) لتجنب ازدحام الواجهة . مؤشرات بصرية : أثناء عمليات الإصلاح الطويلة ، ترى أي جزء يعمل حالياً من خلال تغير لون التسميات التوضيحية . ☢ متطلبات التشغيل (Requirements) :- مايكروسوفت اكسيس 2010 أو أحدث (يفضل 2013/2016/365) . ♻ طريقة التثبيت ( Installation ) :- قم بفتح قاعدة البيانات التي ترغب في تحليلها . فقط قم باستيراد ( نسخ و لصق ) النموذج Frm_Foksh إلى مشروعك . قم بفتح النموذج . الأداة ستقوم تلقائياً بإنشاء الجداول اللازمة عند أول تشغيل . استمتع بالمستوى الجديد من التحكم ! ‼ تعليمات الأمان ( Safety Instructions - مهم جداً ) :- ⚠️ تنبيه هام قبل استخدام أي ميزة للحذف ( مثل Delete Unused Procedures ) ، الأداة تقوم تلقائياً بإنشاء نسخة احتياطية بصيغة txt في نفس مجلد قاعدة البيانات الحالية . يُنصح دائماً بأخذ نسخة احتياطية كاملة من ملف قاعدة البيانات قبل تجربة أدوات التعديل الجماعي . إذا كان مشروعك محمي بكلمة مرور ، الأداة لن تتمكن من قراءة الأكواد حتى تقوم بإلغاء الحماية مؤقتاً . 📸 واجهة الأداة المتواضعة :- قد لا تخلو الأداة من بعض الأخطاء البسيطة حالياً في الواجهة ، ولكن الوظائف جميعها تعمل بشكل سليم . والأخطاء الواردة قد تكون في ضبط عناصر الواجهة ليس إلا . ⛔ لا تحاول التغيير في الأكواد الخاصة بالنموذج ، ما لم تكن على دراية كافية بما تقوم به من تعديلات ⛔ ملف الأداة للتحميل :- Access KitTools - Master 1.0.accdb.zip3 points
-
أخواني وأساتذتي ومعلمينا ( دون استثناء ) بعد المعاناة التي تواجه كل مبرمج أو هاوي أو محترف في التعامل مع الصور داخل آكسيس ، بوجود الترميش أو الوميض . وكنت قد طرحت تساؤلاً حول آلية تجنب هذه المشكلة عند تعامل آكسيس مع الصور داخل النماذج الحركية . خرجت بهذه الفكرة البسيطة والتي آمل أن تكون الحل الشافي لهذه المعضلة - كما عودناكم دائماً - بإيجاد الحل السحري لها . الفكرة تم ترجمتها بأسلوب بسيط بحيث نجعل النموذج يقوم برسم الأحداث دفعة واحدة بدلاً من رسم كل حركة بشكل منفصل أثناء التعامل مع الصور . الدالة المستخدمة :- '********************************************** '*** *** '*** FFFFFF OOO KK KK SSSS HH HH *** '*** FF O O KK KK SS HH HH *** '*** FFFFF O O KKK SS HHHHHH *** '*** FF O O KK KK SS HH HH *** '*** FF OOO KK KK SSSSS HH HH *** '*** *** '********* Anti Flicker By Foksh 2026 ********* Option Compare Database Option Explicit #If VBA7 Then Private Declare PtrSafe Function GetWindowLongPtr Lib "user32" Alias "GetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function SetWindowLongPtr Lib "user32" Alias "SetWindowLongPtrA" _ (ByVal hWnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function SetWindowPos Lib "user32" _ (ByVal hWnd As LongPtr, ByVal hWndInsertAfter As LongPtr, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #Else Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal uFlags As Long) As Long #End If Private Const GWL_EXSTYLE As Long = -20 Private Const WS_EX_COMPOSITED As Long = &H2000000 Private Const SWP_NOMOVE As Long = &H2 Private Const SWP_NOSIZE As Long = &H1 Private Const SWP_NOZORDER As Long = &H4 Private Const SWP_FRAMECHANGED As Long = &H20 Public Sub Form_SetComposited(ByVal frm As Access.Form, ByVal EnableIt As Boolean) On Error Resume Next #If VBA7 Then Dim h As LongPtr: h = frm.hWnd Dim ex As LongPtr: ex = GetWindowLongPtr(h, GWL_EXSTYLE) If EnableIt Then If (ex And WS_EX_COMPOSITED) = 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex Or WS_EX_COMPOSITED)) End If Else If (ex And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLongPtr(h, GWL_EXSTYLE, (ex And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #Else Dim h32 As Long: h32 = frm.hWnd Dim ex32 As Long: ex32 = GetWindowLong(h32, GWL_EXSTYLE) If EnableIt Then If (ex32 And WS_EX_COMPOSITED) = 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 Or WS_EX_COMPOSITED)) End If Else If (ex32 And WS_EX_COMPOSITED) <> 0 Then Call SetWindowLong(h32, GWL_EXSTYLE, (ex32 And Not WS_EX_COMPOSITED)) End If End If Call SetWindowPos(h32, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_FRAMECHANGED) #End If End Sub مع ترك المساحة بالتفعيل أو التعطيل حسب الحاجة . بحيث يتم الاستدعاء لها في حدث عند التحميل للنموذج بهذا الأسلوب البسيط :- Form_SetComposited Me, True أو التعطيل بهذا الشكل :- Form_SetComposited Me, False الملف مفتوح المصدر . لمن يرغب بالتجربة على مشروعه ، فضلاً وكرماً منه بإخباري بالنتيجة أن كانت ناجحة أم لا . علماً أنه تم استخدام الفكرة نفسها في إنشاء لعبة الأونو في هذا الموضوع مسبقاً ، والنتيجة كما شاهدتموها في أداء اللعبة والتعامل مع الصور بشكل دقيق لتخرج اللعبة كتجربة دون أي ترميش أو وميض عند حركة الصور داخل النماذج . Anti Flicker.accdb3 points
-
Version 1.0.0
23 تنزيل
أقدم لكم اليوم أداة بسيطة في شكلها ولكنها فريدة في نتائجها خصوصاً لم يستهويهم التميز في شكل النماذج الخاصة بهم فمثلاً إذا رغبت بالحصول على شريط عنوان ملون لنماذجك وتخصيص لون انص العنوان كما بالصورة أو رغبت بتخصيص لون حدود النموذج كم بالصورة أو رغبت في تحديد شكل زوايا النموذج كما بالصورة وأخيراً وهذه هي الميزة الأفضل من وجهة نظري وهي أن تجعل شريط العنوان شفاف كما بالصورة إذا كنت تريد الحصول على أي من النتائج أعلاه فهذه الأداة هي كل ما تحتاجه مرفق لكم ملف مضغوط بداخله ملف أكسس ومستند وورد يشرح كل ما تحتاج معرفته للإستفادة من الأداة في تطبيقاتك الخاصة هناك ملاحظتين رغم أنها مذكورة في اكثر من مكان في المرفقات إلا أنه ولأهميتها يجب ذكرهما هنا فبحسب المصدر فإن هذه الأداة لن تعمل إلا في Windows 11 فقط لذا لو جربها أحدكم في إصدارات أخرى فياريت يعلمنا إذا إشتغلت معه أم لا الملاحظة الثانية لن تظهر نتائج الأداة إلا في النماذج المنبثقة بمعنى أنه يجب أن يتم تعيين القيمة (نعم - Yes) لخاصية (منبثق - Pop Up) تحياتي3 points -
في هذا الموضوع سنستعرض دالتين احترافيتين 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 اطيب الامانى3 points
-
وعليكم السلام ورحمة الله وبركاته الحل هو نقل الكود إلى موديول (Module) عادي وتخصيص زر لتشغيله فقط عندما تضيف أوراق عمل جديدة اليك التعديل بالمرفق المصنف2.xlsm2 points
-
2 points
-
ابتسامة ماكرة ... المهم مركز الصدارة لا ينتزع2 points
-
جرب التعديل التالي لا ننس كتابة اسم الملف في الحلية A2 الكل (1) (2).xlsm لا حرج ان اردت اي تعديل احر2 points
-
السلام عليكم ورحمة الله وبركاته كان من الافضل ارفاق ملف للتطبيق عليه جرب الملف المرفق ببيانات افتراضية في النطاق A2:A100 ومعادلة الجمع في الخلية D2 ,DL ويمكنك نسحها الى اي خلية اخرى =IFERROR(SUMPRODUCT((A2:A100>0)*(SUBTOTAL(103;OFFSET(A2;ROW(A2:A100)-MIN(ROW(A2:A100));0)))*(A2:A100));0) جمع الأرقام الموجبة فقط الظاهرة دون المخفية.xlsx2 points
-
2 points
-
2 points
-
1 point
-
1 point
-
بارك الله فيك اخي @Debug Ace نقدر نقول الان إن الإجابة أصبحت بإصدارين إصدار بسيط موجه للأعضاء العاديين وإصدار إحترافي للمحترفين 😅1 point
-
أداة مجانية لإزالة كل أنواع الحماية من ملفات إكسل! Excel-Password-VBA-Sheets-Remover هل نسيت كلمة سر ملف Excel مهم؟ أو تريد إزالة حماية الأوراق أو أكواد VBA بسرعة؟ أقدم لكم برنامج الجديد والمجاني Excel Password Remover! المميزات: إزالة حماية الأوراق (Worksheet) فك حماية مشروع VBA معالجة عدة ملفات دفعة واحدة يعمل بشكل كامل على جهازك (خصوصية تامة) واجهة عربية وإنجليزية يدعم كل الصيغ (xlsx, xlsm, xlsb, xls...) طريقة الاستخدام التحضير: احفظ نسخة احتياطية من ملفاتك المهمة التشغيل: افتح التطبيق (اختر العربية أو الإنجليزية) الموافقة: اقرأ إخلاء المسؤولية واضغط على "موافق" إضافة الملفات: اسحب وأفلت الملفات في المنطقة المخصصة أو اضغط على زر "إضافة ملفات" الانتظار: سيعالج التطبيق الملفات تلقائياً في الخلفية الحفظ: اضغط على أي ملف لحفظه منفرداً أو استخدم زر "حفظ الكل" لحفظ جميع الملفات الناجحة تنبيه مهم بعد إزالة حماية VBA افتح الملف المعالج في Excel ادخل إلى محرر VBA (Alt + F11) ستظهر رسالة خطأ "Invalid Key" - اضغط OK احفظ الملف (Ctrl + S) ثم أغلقه أعد فتح الملف - ستجد محرر VBA مفتوحاً بدون كلمة مرور للتحميل المباشر (نسخ ويندوز جاهزة): https://github.com/ps91.../Excel-Password-VBA-Sheets-Remover التحميل المباشر النسخة العربية https://www.up-4ever.net/6mgk38ds3lbt التحميل المباشر النسخة الإنجليزية https://www.up-4ever.net/4jli1bvht6r9 يرجى قراءة إخلاء المسؤولية في وصف المشروع. الأداة للاستخدام القانوني فقط على ملفاتك الشخصية. #Excel #برامج #اكسل #كسر_الحماية #برامج_مجانية #VBA1 point
-
تعجبني الأفكار التي تكون من خارج الصندوق 👏1 point
-
1 point
-
1. كيف تم إضافة عناصر القائمة؟ بنفس الطريقة اللى انا عملت بيها قاعدة وجدول وحقل و نموذج ومربع سرد و كله جديد X جديد واضفت البيانات 2- كيف يمكن حذف تلك العناصر؟ زى ما اضفنا البيانات نخذفها 3- أين يتم حفظ القائمة؟ فى الجدول1 point
-
تنفيذ الفكرة البسيطة بطريقتي على ويندوز 10 😅 وبما أنك اعتمدت على DWM المدمجة في الويندوز 11 و حتى الويندوز 10 ولكن بميزات إضافية ليست في الويندوز 10 . لذا استخدمت اسلوب الحيلة على النموذج لتطبيق فكرة الإنحناء للنموذج وتغيير لون شريط العنوان ونصه باستخدام مستطيل و ليبل . طبعاً مع تحديد قيمة حدود النموذج = None وهي نقطة مهمة في التنفيذ والإستجابة الصحيحة . طبعاً فكرتي ليست بجمال فكرتك بالتنفيذ الملف بعد التطبيق .. أداة تخصيص شريط العنوان - محدثة.zip1 point
-
1 point
-
ههههههههههههههههههههه طيب نتناقش بعد ما تشوفوا ده C:\Users\000000\Desktop\لغز.accdb Thursday, March 12, 2026 Table: Table1 Page: 1 Properties AlternateBackShade: 95 AlternateBackThemeC 1 AlternateBackTint: 100 BackShade: 100 BackTint: 100 DatasheetForeTheme 0 DatasheetGridlinesThe 3 DateCreated: 3/12/2026 2:41:20 AM DefaultView: 2 DisplayViewsOnShare 1 FilterOnLoad: False GUID: {انا حذفته HideNewField: False LastUpdated: 3/12/2026 2:43:11 AM NameMap: Long binary data OrderByOn: False OrderByOnLoad: True Orientation: Left-to-Right PublishToWeb: 1 ReadOnlyWhenDiscon False RecordCount: 1 ThemeFontIndex: 1 TotalsRow: False Updatable: True Columns Name Type Size ID Long Integer 4 AggregateType: -1 AllowZeroLength: False AppendOnly: False Attributes: Fixed Size, Auto-Increment CollatingOrder: General ColumnHidden: False ColumnOrder: Default ColumnWidth: Default CurrencyLCID: 0 DataUpdatable: False GUID: {انا حذفته} OrdinalPosition: 0 Precision: 1033 Required: False ResultType: 0 Scale: 0 SourceField: ID SourceTable: Table1 TextAlign: General Field1 Short Text 255 AggregateType: -1 AllowZeroLength: True AppendOnly: False Attributes: Variable Length CollatingOrder: General ColumnHidden: False ColumnOrder: Default ColumnWidth: Default CurrencyLCID: 0 DataUpdatable: False DisplayControl: Text Box GUID: {انا حذفته} C:\Users\00000\Desktop\لغز.accdb Thursday, March 12, 2026 Table: Table1 Page: 2 IMEMode: 0 IMESentenceMode: 3 OrdinalPosition: 1 Precision: 1033 Required: False ResultType: 0 RowSource: "آسيا";"أفريقيا";"أوروبا";"أمريكا الشمالية";"أمريكا الجنوبية";" Scale: 0 SourceField: Field1 SourceTable: Table1 TextAlign: General UnicodeCompression: True Table Indexes Name Number of Fields PrimaryKey 1 Clustered: False DistinctCount: 1 Foreign: False IgnoreNulls: False Name: PrimaryKey Primary: True Required: True Unique: True Fields: ID Ascending User Permissions admin Delete, Read Permissions, Set Permissions, Change Owner, Read Definition, Write Definition, Read Data, Insert Data, Update Group Permissions Admins Delete, Read Permissions, Set Permissions, Change Owner, Read Definition, Write Definition, Read Data, Insert Data, Update Users Delete, Read Permissions, Set Permissions, Change Owner, Read Definition, Write Definition, Read Data, Insert Data, Update1 point
-
Version 1.0.0
29 تنزيل
قد يكون من أهم إستخدامات كائن الشجرة Treeview هو إستخدامها في شجرة الحسابات أو الهياكل التنظيمية ولكن يوحد لهذا الكائن وظيفة هامة أخرى وهي إستخدامه في شاشة لوحة التبديل أو شاشة التنقل الرئيسية Switchboard لذا وبإستخدام الأداة المرفوعة سابقاً في هذا الموضوع يمكننا الحصول على أكثر من شكل لشاشة لوحة التبديل الرئيسية . يتم من خلال الأمثلة المرفقة وعند النقر على عناصر الشجرة القيام بأحدى الوظائف التالية - فتح نموذج بشكل طبيعي (أو كنموذج فرعي عند إستخدام لوحة التبديل الجانبية) مع إمكانية إضافة معلمات لحاصية OpenArgs - فتح نموذج بشكل منبثق أو مشروط مع إمكانية إضافة معلمات لحاصية OpenArgs - فتح تقرير في وضع المعاينة مع إمكانية إضافة معلمات لحاصية OpenArgs - طباعة تقرير مباشرة مع إمكانية إضافة معلمات لحاصية OpenArgs - تشغيل إجراء عام (يجب أن يكون إجراء في وحدة نمطية ويجب أن يكون بدون معلمات) - إستدعاء دالة عامة (يجب أن تكون إجراء في وحدة نمطية مع أو بدون معلمات) ستجدون في المرفقات الملفات التالية : 1 - النموذج الأول لشاشة التبديل + القالب الخاص به في هذا المثال سنحصل على لوحة تبديل مستقلة يمكن إستخدامها كشاشة رئيسية للتطبيقات الخاصة 2 - النموذج الثاني لشاشة التبديل + القالب الخاص به في هذا المثال سنحصل على لوحة تبديل جانبية تقوم بفتح النماذج كنماذج فرعية ضمن الشاشة الرئيسية 3 - النموذج الثالث لشاشة التبديل + القالب الخاص به وهو نسخة مطابقة للنموذج الثاني ولكنها مخصصة لمن يستخدمون اللغة الإنجليزية في الواجهات الخاصة بهم لاتوجد أي تعليمات إضافية فآلية العمل هي نفسها الموضحة في الموضوع الخاص بإداة Treeview المخصصة ولكن سنجد هنا بعض الإضافات على النحو التالي - إظهار أيقونة تميز عناصر المستوى الأول عن بقية المستويات - تبديل أيقونتي الجمع والطرح بأشكال أخرى (لمن يحبون التغيير) - طريقة تحويل إتجاه الشجرة من اليسار إلى اليمين لمن يستخدمون اللغة الإنجليزية في تطبيقاتهم وهذا يعني أنه يمكننا القيام بنفس التعديلات على الأداة في الموضوع السابق للحصول على نفس النتائج هنا من المزايا الإضافية المقدمة مع الإداة أنه عند إستخدام النموذج الثاني أو الثالث سنجد كيف نقوم بإظهار شاشة عامة تحتوي على أيقونة وعنوان التطبيق وأي معلومات إضافية نرغب في إظهارها وتظهر هذه الشاشة عندما لايتم تحديد أي عنصر من القائمة أو أن تحديد العنصر لاينتج عنه فتح أي نموذج فرعي تحياتي1 point -
1 point
-
تمت التجربة على ويندوز 10 نسخة برو نواة 64 ، ولم تعمل ، كما توقعتم. بعد التجربة على ويندوز 11 ، الفكرة جميلة جداً ، وتعمل بشكل رائع ، أما ويندوز 10 فهي فعلاً لم تعمل كما هو متوقع . ولكن بعد إجراء بعض التحسينات ، لاحظت انها عملت بشكل بسيط لبعض الخصائص في ويندوز 10 .1 point
-
أكرمك الله وزادك الله من فضله بالفعل انجاز عظيم جعله الله فى ميزان حسناتك1 point
-
ما شاء الله و لا قوة إلا بالله - أداة أكثرمن رائعة جزاكم الله علي ما بذلتموه من جهد فيها و نفع بكم و رزقكم دائما العلم النافع1 point
-
1 point
-
في ظل التفاعل المتواضع ، تم اعتماد الفكرة :- 2️⃣ إنشاء نظام تسجيل دخول احترافي برمجياً ، مع نظام صلاحيات متعدد المستويات .. للتطبيق والتنفيذ وطرحها في موضوع مستقل إن شاء الله . شكراً من القلب لكل من تفاعل ولكل من مر من هنا . سيتم الإعلان عن الفكرة والمطلوب تنفيذها وشروطها وجميع معطياتها في موضوع قريب منفصل1 point
-
1 point
-
يقول المثل : ما لا يُدرك جُلُه .. لا يُترَك كُلُه 😄🖐️ وبعدين 95% نسبة حلوة تخش بيها كلية الهندسة إن شاء الله 😅1 point
-
ماشاء الله زادك الله علماً ورفع الله قدرك ورزقك الله الفردوس الأعلى من الجنة1 point
-
اتفضل معاك 3 نماذج اختر الطريقة اللى تعجبك حساب الجمعة والسبت(V2).accdb1 point
-
1 point
-
1 point
-
ريح نفسك مالهاش حل... طريقك مسدود مسدود مسدود يا ولدى Access لا يدعم DoubleBuffering1 point
-
1 point
-
اعرض الملف حافز التجريبي حافز التجريبي صاحب الملف أحمد عبد العاطي رشيدي تمت الاضافه 03/07/26 الاقسام قسم الإكسيل1 point
-
1 point
-
مصر و جميع الامة العربية و الامة الاسلامية بالخير و البركات و الف خير ان شاء الله1 point
-
إصلاح مشكلة الإرسال على دفعات ، حسب الوقت الذي يقرره المستخدم من خانتي . ضبط مشكلة Yahoo عند استلامه بريد من Gmail ، والسبب طبعاً في هذه المشكلة هو سيرفر الـ Yahoo نفسه لما يفرضه من قيود أمان . وحيث أنه يمكن للمستخدم اعتبار الإيميل Not Spam عند استلامه بريد من Gmail . إتاحة الإرسال من Outlook كما فعلنا في Gmail . حيث على المستخدم فقط تشغيل تطبيق الـ Outlook وتفعيل بريده مرة واحدة فقط لا غير . وبعدها لن نحتاج للتطبيق أبداً أو حتى فتح التطبيق بالخلفية أو بأي شكل من الأشكل . السبب في هذا هو عدم فرض قيود مايكروسوفت على المستخدم نهائياً . تحسين ردود الرسائل في الجدول Tbl_SentLog ، بحيث تكون أوضح للمستخدم عن سبب الخلل عند فشل الإرسال ، كي يتم التعامل مع الخلل بشكل مباشر . تحسين وإصلاح بعض النقاط الصغيرة . EmailSender V.2.0.accdb.zip1 point
-
السلام عليكم ورحمة الله وبركاته حل بالكود وان اضفت مواد احرى عدل النطاق في الكود Sub ProcessAndSumData() Dim wsB As Worksheet Set wsB = ThisWorkbook.Sheets("B") Application.ScreenUpdating = False With wsB .Range("B10:I12").ClearContents With .Range("B10:I10") .FormulaR1C1 = "=IFERROR(SUMPRODUCT((A!R3C1:R1828C1=R6C3) * (ISNUMBER(INDEX(A!R3:R1828,0,MATCH(R8C,A!R1,0)))) * (INDEX(A!R3:R1828,0,MATCH(R8C,A!R1,0))>=60)),""/"")" .Value = .Value End With With .Range("B11:I11") .FormulaR1C1 = "=IFNA(SUMPRODUCT((INDEX(A!R3:R1828,0,MATCH(R8C,A!R1,0))<60) * ISNUMBER(INDEX(A!R3:R1828,0,MATCH(R8C,A!R1,0))) * (A!R3C1:R1828C1=R6C3)),""/"")" .Value = .Value End With With .Range("B12:I12") .FormulaR1C1 = "=SUM(N(R[-2]C), N(R[-1]C))" .Value = .Value End With End With Application.ScreenUpdating = True End Sub لا تنس تفعيل الماكرو aa2.xlsb1 point
-
السلام عليكم جرب الكود Sub تلوين_المكرر() Dim ws As Worksheet, rng As Range, cell As Range Dim dict As Object, lastRow As Long Dim r As Long, c As Long, key As String Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row If lastRow < 5 Then lastRow = 5 Set rng = ws.Range("A5:J" & lastRow) rng.Interior.ColorIndex = xlNone Application.ScreenUpdating = False For r = 5 To lastRow For c = 1 To 10 Set cell = ws.Cells(r, c) If Not IsError(cell.Value) And Len(cell.Value) > 0 Then key = Trim(cell.Value) Set dict = CreateObject("Scripting.Dictionary") For Each c2 In ws.Range(ws.Cells(r, 1), ws.Cells(r, 10)) If c2.Value = key Then dict(key) = dict(key) + 1 Next If dict(key) > 1 Then cell.Interior.Color = vbRed: GoTo NextCell ' التحقق عموديًا dict.RemoveAll For Each r2 In ws.Range(ws.Cells(5, c), ws.Cells(lastRow, c)) If r2.Value = key Then dict(key) = dict(key) + 1 Next If dict(key) > 1 Then cell.Interior.Color = vbRed End If NextCell: Next c Next r Application.ScreenUpdating = True End Sub1 point
-
وعليكم السلام ورحمة الله وبركاته جرب الكود حيث قبل التنفيذ، يقوم بحذف أي دوائر سابقة 1الثالث.xlsb1 point
-
السلام عليكم ورحمة الله تم التعديل على معادلاتك (معادلات الصفيف) في الملف لتتماشى مع طلبك دون استخدام الفلترة أو ماكرو... ألق نظرة على الملف المرفق. ID.xlsx1 point
-
تفضل ملفين من أعمال ألأعضاء بالمنتدى مع العمل أن المنتدى زاخر بأفكار بملفات مثل المرفقات يمكنك استخدام البحث أو تنزيل ملف فهرس المنتدى كود إدراج صورة.rarإدراج صورة من خلال دالة معرفة من قبل.rarإدراج صورة في مربع نص بالدوال.rar1 point
-
السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، ذكرت لك سابقا أن لا حرج بيننا ويمكنك طلب ما تريد في أي وقت تريد فستجدني إن شاء الله في الخدمة بما أستطيعه وأعرفه... بالنسبة للخلل الذي ذكرته في ملفك الأخير قد تنبهت إليه مباشرة بعد إرسال الملف وهي الحالة التي تكون فيها فترة التقسيط بين تاريخين محصورين بين بداية شهر ونهاية الشهر نفسه وقد تنبهت لموضع الخطأ في المعادلة وقمت بتصحيحه لذلك لم أتعب كثيرا في التفكير في الطلب الذي ورد في ردك وتجد في الملف المرفق تصحيحا للخطأ... أرجو أن تراقب الملف جيدا علني قد أخطأت في المعادلة وهذا راجع لطولها وكثرة الشورط فيها (ربما لا تمسح جميع الحالات الخاصة بطريقة التقسيط حسب الفترات)... أخوك بن علية Prepaid Exp. Settlement 3.rar1 point
-
السلام عليكم ورحمة الله أخي الكريم عيد مصطفى، قمت ببعض التغييرات على المعادلات الخاصة بالأشهر وعدد أيام كل شهر وإضافة شهور السنة الموالية... تم إضافة معادلة (طويلة بعض الشيء لعله يمكن تبسيطها) التي تقوم بحساب أقساط الشهور حسب الفترات المدرجة في العمودين C و D والمبالغ المحجوزة في العمودين F و G. ويمكن مقارنة نتائج هذه المعادلات مع ما قمتَ بحسابه بطريقة يدوية في ملفك المرفق (بداية من السطر 8 والملونة بالأصفر)... أعتقد أن المعادلات (رغم طولها) قد أوفت المطلوب... أرجو أني وفقت في تقريب المطلوب... وإذا كان هناك تساؤلات أخرى أو بعض الأخطاء في المعادلات فستجدني بإذن الله في الخدمة في كل حين... أخوك بن علية Prepaid Exp. Settlement.rar1 point