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

Foksh

الخبراء
  • Posts

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

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

  • Days Won

    255

كل منشورات العضو Foksh

  1. أيضاً ويمكن من خلال مربع نص غير منضم وأن تجعل مصدر بياناته :- =DCount("*","Tbl_student","gender=1 AND fsl_id=" & [txtFslId] & " AND alsaf_Id=" & [alsaf_Id])
  2. تم تعديل الملف بإضافتين بسيطتين ، وتصحيح وظيفة موجودة مسبقاً :- إضافة ميزة الكشف عن حالة الجدول عن اختياره من قائمة الجداول . إضافة ميزة تطبيق الحماية أو حذفها عن جميع الجداول مع استثناء جداول محددة في سطر الإستدعاء . تصحيح وظيفة "تضمين التحقق من وجود الكائن" ، والتي تم تعديلها لتعمل فقط عند اختيار جداول محددة من القائمة المنسدلة .
  3. اعرض الملف ⭐ هدية ~ أداة حماية الجداول وتحصينها في آكسيس 2026 ⭐ أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. في الموضوع الذي سبق وتم طرحه في هذا الموضوع ، كانت المشاركات بناءة لفتح باب الإبتكار والتطوير وخلق بيئة حماية وحصانة للجداول من خلال ضبط حماية السجلات وتحصينها داخل الجداول عن طريق ماكرو البيانات . والشكر موصول لأخي الأستاذ موسى @Moosak وأخي منتصر @منتصر الانسي ، لمشاركتهما الحديث والأفكار بخصوص هذا الموضوع . وبناءً على الفكرة العامة فقد توصلت وبحمد الله وفضله لفكرة تمكن المستخدم ( المطور عادةً أو صمم قاعدة البيانات ) من حماية الجداول والسجلات من الحذف أو التعديل المباشر على السجلات داخل الجداول . وبالتالي تطبيق حصانة كاملة على الجداول التي يحددها المستخدم . ميزات الأداة :- 1️⃣ تأتي الأداة بمديول واحد يمكن نسخه إلى أي قاعدة بيانات ، وإستدعاء دالة الحماية ، أو حذفها على أي جدول / جداول يختارها المستخدم . 2️⃣ واجهة تفاعلية تسمح لك كمستخدم بتطبيق واختيار نوع الوظيفة بسهولة تامة ، بدلاً من كتابة الإستدعاءات ، تسهيلاً لتطبيق الحماية أو حذفها . 3️⃣ تتعامل الأداة مع الجداول المحلية و الجداول المرتبطة بشكل منظم وديناميكي صامت جداً . 4️⃣ للأداة القدرة على التعامل مع استدعاءات الإستعلامات ( الإضافة ، التحديث والحذف ) بشكل صارم ومحكم التنفيذ . 5️⃣ أيضاً القدرة حتى مع التعامل مع استعلامات الـ SQL بذكاء خاص . 6️⃣ قدرة الأداة على تطبيق الحماية على جدول ( على سبيل المثال ) مع استثناء حقل أو حقول من الحماية . بحيث تستطيع من خلال أي نموذج التعديل على هذه الحقول داخل الجدول المحمي دون أي تعارض . 7️⃣ إمكانية تطبيق الحماية / حذفها لجداول محددة تختارها من خلال الإستدعاء مرة واحدة ، أو جميع الجداول في قاعدة بياناتك . 8️⃣ إتاحة الفرصة أيضاً لتطبيق الحماية أو حذفها على جداول قاعدة بيانات خارجية دون الحاجة إلى نقل المديول لقاعدة البيانات هذه ( التي اخترتها ) . 9️⃣ التعامل الذكي مع الجداول المرتبطة فقط بحمايتها أو إلغاء الحماية عنها ؛ وأن تستثني الجداول المحلية الغير مرتبطة . 🔟 التعامل مع مسار جداول قواعد البيانات المرتبطة دون الحاجة لإدخال المسار بشكل يدوي . 1️⃣1️⃣ التعامل بذكاء مع قواعد البيانات المرتبطة والمحمية بكلمة مرور . بحيث يتم التعرف واكتشاف كلمة المرور تلقائياً وتمريرها إلى الحماية أو الحذف دون الحاجة للتدخل اليدوي . 1️⃣2️⃣ قراءة جداول قاعدة البيانات الخارجية والتعامل معها مباشرة مع عرض جداولها داخل الأداة من داخل قاعدة بيانات مشروعك . وحتى حقول كل جدول في قاعدة البيانات تلك التي اخترتها . 1️⃣3️⃣ إمكانية تطبيق الحماية أو الحذف بشكل صامت أو إظهار رسالة تفاعلية بالنتيجة التوضيحية . 1️⃣4️⃣ رسائل أخطاء معربة بالكامل لجميع احتمالات رسائل الخطأ التي يمكن أن تظهر للمستخدم . 1️⃣5️⃣ تمكين المستخدم من نسخ سطر الإستدعاء ولصقه في أي وظيفة أو حدث يحتاجها لها . 1️⃣6️⃣ في المديول ، يوجد شرح مبسط لآلية الإستدعاءات التي يمكن للأداة تطبيقها وتقديمها لك من خلال واجهة النموذج المخصص للإستدعاءات . 1️⃣7️⃣ إتاحة الفرصة بتطبيق الحماية أو حذفها عن كافة الجداول ، مع استثناء جداول محددة . 1️⃣8️⃣ عرض حالة الجدول إن كان محمياً مسبقاً أو لا ، وحالة الحماية عند وجود حقول تم استثناؤها . 1️⃣9️⃣ تضمين التحقق من وجود الكائنات التي يتم استدعاء الحماية عليها من خلال كود VBA . كمثال :- ' التحقق من وجود الكائن قبل التنفيذ If DCount("*", "MSysObjects", "Name In ('Tbl_1', 'Tbl_2') And Type In (1, 4, 6)") = 2 Then Else MsgBox "أحد الكائنات المحددة [Tbl_1, Tbl_2] غير موجود في قاعدة البيانات!", vbExclamation End If صورة من واجهة الأداة :- ملف الأداة مفتوح المصدر صاحب الملف Foksh تمت الاضافه 10/07/26 الاقسام قسم الأكسيس
  4. Version 1.0

    15 تنزيل

    أخواني وأساتذتي ومعلمينا ( دون استثناء ) .. في الموضوع الذي سبق وتم طرحه في هذا الموضوع ، كانت المشاركات بناءة لفتح باب الإبتكار والتطوير وخلق بيئة حماية وحصانة للجداول من خلال ضبط حماية السجلات وتحصينها داخل الجداول عن طريق ماكرو البيانات . والشكر موصول لأخي الأستاذ موسى @Moosak وأخي منتصر @منتصر الانسي ، لمشاركتهما الحديث والأفكار بخصوص هذا الموضوع . وبناءً على الفكرة العامة فقد توصلت وبحمد الله وفضله لفكرة تمكن المستخدم ( المطور عادةً أو صمم قاعدة البيانات ) من حماية الجداول والسجلات من الحذف أو التعديل المباشر على السجلات داخل الجداول . وبالتالي تطبيق حصانة كاملة على الجداول التي يحددها المستخدم . ميزات الأداة :- 1️⃣ تأتي الأداة بمديول واحد يمكن نسخه إلى أي قاعدة بيانات ، وإستدعاء دالة الحماية ، أو حذفها على أي جدول / جداول يختارها المستخدم . 2️⃣ واجهة تفاعلية تسمح لك كمستخدم بتطبيق واختيار نوع الوظيفة بسهولة تامة ، بدلاً من كتابة الإستدعاءات ، تسهيلاً لتطبيق الحماية أو حذفها . 3️⃣ تتعامل الأداة مع الجداول المحلية و الجداول المرتبطة بشكل منظم وديناميكي صامت جداً . 4️⃣ للأداة القدرة على التعامل مع استدعاءات الإستعلامات ( الإضافة ، التحديث والحذف ) بشكل صارم ومحكم التنفيذ . 5️⃣ أيضاً القدرة حتى مع التعامل مع استعلامات الـ SQL بذكاء خاص . 6️⃣ قدرة الأداة على تطبيق الحماية على جدول ( على سبيل المثال ) مع استثناء حقل أو حقول من الحماية . بحيث تستطيع من خلال أي نموذج التعديل على هذه الحقول داخل الجدول المحمي دون أي تعارض . 7️⃣ إمكانية تطبيق الحماية / حذفها لجداول محددة تختارها من خلال الإستدعاء مرة واحدة ، أو جميع الجداول في قاعدة بياناتك . 8️⃣ إتاحة الفرصة أيضاً لتطبيق الحماية أو حذفها على جداول قاعدة بيانات خارجية دون الحاجة إلى نقل المديول لقاعدة البيانات هذه ( التي اخترتها ) . 9️⃣ التعامل الذكي مع الجداول المرتبطة فقط بحمايتها أو إلغاء الحماية عنها ؛ وأن تستثني الجداول المحلية الغير مرتبطة . 🔟 التعامل مع مسار جداول قواعد البيانات المرتبطة دون الحاجة لإدخال المسار بشكل يدوي . 1️⃣1️⃣ التعامل بذكاء مع قواعد البيانات المرتبطة والمحمية بكلمة مرور . بحيث يتم التعرف واكتشاف كلمة المرور تلقائياً وتمريرها إلى الحماية أو الحذف دون الحاجة للتدخل اليدوي . 1️⃣2️⃣ قراءة جداول قاعدة البيانات الخارجية والتعامل معها مباشرة مع عرض جداولها داخل الأداة من داخل قاعدة بيانات مشروعك . وحتى حقول كل جدول في قاعدة البيانات تلك التي اخترتها . 1️⃣3️⃣ إمكانية تطبيق الحماية أو الحذف بشكل صامت أو إظهار رسالة تفاعلية بالنتيجة التوضيحية . 1️⃣4️⃣ رسائل أخطاء معربة بالكامل لجميع احتمالات رسائل الخطأ التي يمكن أن تظهر للمستخدم . 1️⃣5️⃣ تمكين المستخدم من نسخ سطر الإستدعاء ولصقه في أي وظيفة أو حدث يحتاجها لها . 1️⃣6️⃣ في المديول ، يوجد شرح مبسط لآلية الإستدعاءات التي يمكن للأداة تطبيقها وتقديمها لك من خلال واجهة النموذج المخصص للإستدعاءات . 1️⃣7️⃣ إتاحة الفرصة بتطبيق الحماية أو حذفها عن كافة الجداول ، مع استثناء جداول محددة . 1️⃣8️⃣ عرض حالة الجدول إن كان محمياً مسبقاً أو لا ، وحالة الحماية عند وجود حقول تم استثناؤها . 1️⃣9️⃣ تضمين التحقق من وجود الكائنات التي يتم استدعاء الحماية عليها من خلال كود VBA . كمثال :- ' التحقق من وجود الكائن قبل التنفيذ If DCount("*", "MSysObjects", "Name In ('Tbl_1', 'Tbl_2') And Type In (1, 4, 6)") = 2 Then Else MsgBox "أحد الكائنات المحددة [Tbl_1, Tbl_2] غير موجود في قاعدة البيانات!", vbExclamation End If صورة من واجهة الأداة :- ملف الأداة مفتوح المصدر
  5. وعليكم السلام ورحمة الله وبركاته .. طلبك غير واضح أبداً أخي جيلاني 😇 .. يا ريت تدعم طلبك بتوضيح أكثر وحتى لو مدعوم بملف أو صورة على الأقل .
  6. اذهب الى عرض الجدول Tbl_Lab_Results بوضع التصميم ، واذهب الى الحقل HDL_Risk ، واجعل خاصية حجم الحقل = Single - مفرد ، والتنسيق = 0.00# أو Fixed - أعتقد ثابت ، واحذف القيمة 4.00 الحالية وجرب عدل في النموذج القيمة 211 .
  7. ما شاء الله أستاذ محمد .. دائماً ما تبهرنا بمناقشات وحوارات جميلة ومفيدة . شكراً بشمهندس محمد على طرحك وتعبك . ونأمل أن يستفيد الكثيرين من هذه المواضيع الجميلة في تطوير بيئة عمل آكسيس ليرقى خارج المألوف . ورغم أنك قد حصلت على أحد التعليقات بما إذا كان هناك شرح باللغة العربية ، فإن العمل سيكون أكثر متعة وفائدة للكثيرين . بارك الله فيك وجزاكم الله كل الخير .
  8. مشاركة بسيطة .. أخي الفاضل @egymina2012 ، تعدد الطلبات وكثرة التعديلات تربك وتشوش من يتقدم بتقديم حلول . لذا أرجو منك التوضيح بشكل أكثر وضوحاً للمطلوب ، ويا حبذا لو كان على شكل نقاط . بخصوص طلب تصحيح اسم الفرقة وإضافة ( انتساب و انتظام ) . في الجزء التالي في الكود داخل ملفك الأخير ، وتحديداً في السطر ' تحديث عنوان الفرقة في شيت الطباعة wsPrint.Range("C2").Value = "اسماء الطلاب - " & gradeTitle لاحظ هنا أنه يقوم بإضافة رقم الفرقة نصاً في الخلية C2 .. فإذا كنت تريدها في C3 أيضاً ، فقط أضف السطر التالي مباشرة أسفل الجزء الذي أشرت لك إليه :- wsPrint.Range("C3").Value = "اسماء الطلاب - " & gradeTitle & " ( انتظام - وانتساب )" اما باقي طلباتك فأرجو منك إيضاحها لو تكرمت ..
  9. كما هو واضح من الرسالة أن إصدار نسخة الـ 365 = 64 بت .. بينما أنت قمت بتشغيل قاعدة بيانات Accde - 64 بت على إصدار 32 بت ، وهنا في الوضع الحالي للأسف لا يمكنك ذلك . التحزيم يعتمد على إصدار النسخة التي تم تشغيل وإنشاء الملف من خلالها . بينما في فكرة قمت بطرح تجربة عليها في هذا الموضوع هنا . يتم إنشاء ملف Accde حسب الإصدار الموجود في أي كمبيوتر .
  10. بفضل الله سبحانه وتعالى ، ثم لك على هذه السهرة الجميلة والغنية وسماع صوتك .. قد أكملت سهرتي التي تكللت بالنجاح .. وقد كانت الثمرة في نهاية موسم الحصاد تتلخص بـ :- 1) ميزة الإستكشاف التلقائي لقواعد البيانات الخلفية ( Auto-Detect Back-End ) :- يكتشف مسار الـ Back-End واسم الجدول الأصلي آلياً من خاصية tdf.Connect 2) ميزة التعامل مع القواعد المحمية بكلمة مرور ( Password-Protected Back-Ends ) :- يستخرج كلمة المرور تلقائياً إن كانت محفوظة في نص الاتصال ( PWD=... ) أو يدعم تمرير كلمة المرور يدوياً عبر المعامل: DbPassword:="MyPass" 3) دعم العلاقات والتتالي ( Cascade Aware ) :- دالة بسيطة تكتشف الجداول التابعة المربوطة بتتالي الحذف ، بحيث تفك / تعيد حمايتها مع الجدول الرئيسي بلحظة واحدة . 4) عدم الحاجة لاستدعاء أيقاف الحماية ومن ثم تنفيذ أمر يستدعي استعلامات التحديث أو الحذف ، ومن ثم إعادة تفعيل الحماية . 5) دعم مرن لإضافة السجلات في الجداول من النماذج دون الحاجة الى الإستدعاءات السابقة في النقطة السابقة ( إيقاف / تشغيل الحماية ) . 6) ما زال قيد التطوير والتجارب ، هو إمكانية استثناء حقل أو حقول في جدول واحد من التحديث وأبقاء الحماية على بقية الحقول . 7) أيضاً ما زال قيد التطوير فكرة لتتعامل مع القواعد الخارجية ، بحيث يقوم المستخدم بتنفيذ الحماية أو حذفها لجدول محدد في قاعدة بيانات خارجية .
  11. وأنا قمت بحذفه احترازاً ، لا عليك 🤗 وهنا الموضوع توسع بشكل يفوق عقلي الصغير , ليتعامل مع القواعد المقسمة مثلاً .. أو التعامل مع الاستعلامات ( تحديث أو حذف ) .... إلخ
  12. هههههههههه ، تقريباً 😁 الشكر لله من قبل ومن بعد ، وفعلاً قطعة الصلصال هذه فتحت لي باب الأفكااااااار الغريبة التي تراودني . وقد أسعدت بلقاء صوتي جمعني مع أخي موسى وقد شاركني تجربة فريدة وجميلة جداً ، ولكن اتضح أنني أنا اللي كنت غائب في هذه الأيام . وخطر ببالي سؤال عند ملاحظتي لـ blnIsBlocked ، هل تم تعريف هذا المتغير ؟؟ والإجابة هنا لصاحب الفكرة طبعاً .. ويبقى سؤالي هو ، هل من الممكن تطبيق الحماية بحيث نسمح بالإضافة ولا نسمح بالتعديل أو الحذف من داخل الجداول مباشرة بدون الإضطرار لإيقاف وتشغيل الحماية في كل عملية حفظ من خلال النماذج ؟؟
  13. وحتى لا يتبادر إلى ذهن أي شخص فكرة أنني أملك الحل .. فقد يظن البعض أني أُمهد لموضوع جديد أو فكرة جديدة .😣. فوالله أني لم أتعثر حتى بطرف الخيط ، ولم أستدل إلى فكرة حتى لو لم تكن ناجحة 😇
  14. تتركني في أول الطريق ، وانت صاحب الكود وأدرى بخباياه 😥 ... بحاول ، وإن لم أخرج بنتيجة ، فنرجوا المساعدة ممن يجود علينا بكرمه
  15. العفو أخي وسام .. سرني مرورك .. وأهلاً وسهلاً بك معنا بأولى مشاركاتك .
  16. شكراً لك من القلب مهندسنا أبا المعتصم .. أمسكتني طرف الخيط بشكل محكم .. ولكن في تجربتك الجميلة والرائعة كانت النتيجة عند تجربة الإضافة والحفظ من داخل نموذج :- أي أنه حتى النموذج لم يستطع إضافة سجل 😥 . أيضاً لو كان لدي 25 جدول على سبيل المثال ، فهل سأضطر إلى كتابة كافة أسماء الجداول في مصفوفة الاستدعاء للحماية أو الحذف 😁 !!
  17. شكراً لاستجابتك مهندس محمد .. انا أريد منع التعديل على الجداول نفسها من داخل الجداول نفسها . يعني لو فتحت أي جدول وحاولت اعمل عليه تعديل أو حذف سجل ، يمنع التعديل أو الحذف منه . كمثال ، جرب تعدل على أي قيمة داخل الجدول أو حذف السجل في الملف التالي الذي تمت إضافة الحماية عليه يدوياً Test.accdb
  18. السلام عليكم ورحمة الله وبركاته .. في إحدى المواضيع التي تم طرحها في "الفعاليات والتحديات الشهرية" ، وتحديداً في التحدي الأول ، كان من أحد الحلول والأفكار المطروحة ؛ تطبيق ماكرو على مستوى الجدول لمنع التحديث والتعديل لأي قيمة داخل الجدول . لكن طبعاً كانت الفكرة قائمة على التنفيذ اليدوي من خلال إضافة ماكرو قبل التحديث للجدول من خصائص الجدول نفسه . الحاصل هنا أنني أريد تطبيق هذه الفكرة برمجياً ، وخصوصاً أن لدي ما يقارب الـ 25 جدول . والهدف هو منع الحقن الخارجي أو التلاعب بالجداول . وقد أرهقتني كثرة المحاولات ولم أصل إلى نتيجة حتمية برمجية صحيحة . حتى بمساعدة الذكاء الإصطناعي 😣 . وقد طرحت السؤال داخل مجموعتنا "مجتمع آكسيس جروب" في الواتس أب ، ولم ألقَ أي إجابة . أرجو المساعدة بتطبيق الفكرة برمجياً VBA بحيث أحدد اسم (الجدول / الجداول) التي أريد تطبيق حمايتها من التعديل لأي قيمة ، و الحذف لأي سجل . (كلاهما) بمعنى أوضح . أريد عند الدخول إلى جدول ومحاولة تعديل قيمة على أحد الحقول (وليس حقل محدد) لأي سجل أو محاولة حذف أي سجل ، أن يتم منعي بإظهار رسالة بأن "الجدول محمي من التعديل" ( للتعديل ) . أو "لا يمكنك حذف سجلات من هذا الجدول" ( للحذف ) . فهل هذا ممكن برمجياً ❓ أفيدوني أفادكم الله . وهذا ملف مرفق كمثال يحتوي جدول بحقول بسيطة وبه 3 سجلات عشوائية . TblMacroVBA.accdb
  19. شكراً لك هذا الإطراء أخي منتصر ، والحقيقة انك كنت الحافز بمتابعة الموضوع واستكمال هذه الإضافة البسيطة . ولكم النصيب الأكبر مما دعيتم أبا المعتصم .. فعلاً هناك الكثير من الأيقونات ، وقد قدرت تقريباً بـ 3500 ايقونة ، ولكن برأيك هل تصفح 3500 أو حتى 1000 أيقونة سيكون ممتعاً 😅 نعم صحيح ، حتى تتم المعاينة فيجب أن تكون القائمة قد تم إنشاؤها وإضافة محتوياتها .. كحال أن تقوم بتكبير حجم الخط ونوعه قبل أن تكتب فلن يظهر التنسيق والتأثير إلا بوجود نص ، وهنا الشيء ذاته 😊 .
  20. زر Create الأيقونات مفروزة امامك أخي أحمد ، والخيار الذي استخدمته ( اليدوي ) للذين يعرفون ما رقم الأيقونة التي يريدونها ، أو للتجربة 😅 ما فهمت !!!!! اي عبارة لا تتغير
  21. التحديث الجديد من أداة صانع القوائم المختصرة ، الإصدار الثالث ، ويشمل :- تمكين المستخدم من تعيين أيقونات الـ FaceID بطريقة عصرية وديناميكية . التمكين من استعادة أيقونة أمر الإفتراضية . التعامل الكامل مع جميع الإصدارات من 2003 - 365 طريقة الإستخدام :- أنشئ قائمتك المختصرة الجديدة . حدد اي خيار من القائمة ، وانقر زر الفيس 🙂 . تنقل بين التبويبات والتصنيفات ، واختر ايقونتك التي تريدها .. احفظ القائمة ، وجربها . الزر الذي يمثل أيقونة آكسيس هو زر استعادة الأيقونة الإفتراضية للزر المحدد من القائمة التي انشأتها . ملف التحديث مفتوح المصدر ، للإصدارات أحدث من 2003 :- Menu Builder V.3.zip الإصدار 2003 قريباً ، حال ضبطه 100%
  22. تحقيقاً لرغبة أخي @أحمد العيسى ، إضافة جديدة قريباً للأداة ، إختيار أيقونات مخصصة للأزرار داخل القوائم المختصرة .
  23. استبدل الدالة الكاملة السابقة ، بهذا التعديل :- Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim lastRow As Long Dim cell As Range Dim pctCol As Range Dim pct As Double Dim grade As String Dim i As Long Set ws = Me lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row If lastRow < 2 Then Exit Sub Set pctCol = Intersect(Target, ws.Range("F2:F" & lastRow)) If Not pctCol Is Nothing Then On Error GoTo CleanUp Application.ScreenUpdating = False Application.EnableEvents = False For Each cell In pctCol If IsNumeric(cell.Value) And cell.Value <> "" Then pct = CDbl(cell.Value) Select Case pct Case Is >= 92.1: grade = "ممتاز مع المرتبة" Case Is >= 90.1: grade = "ممتاز" Case Is >= 85.1: grade = "جيد مع مرتبة الشرف" Case Is >= 75.1: grade = "جيد جدا" Case Is >= 65: grade = "جيد" Case Is >= 50: grade = "مقبول" Case Else: grade = "راسب" End Select ws.Cells(cell.Row, "E").Value = grade End If Next cell With ws.Sort .SortFields.Clear .SortFields.Add Key:=ws.Range("F2:F" & lastRow), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal .SortFields.Add Key:=ws.Range("B2:B" & lastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange ws.Range("A1:M" & lastRow) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .Apply End With For i = 2 To lastRow If ws.Cells(i, "B").Value <> "" Then ws.Cells(i, "A").Value = i - 1 End If Next i CleanUp: Application.EnableEvents = True Application.ScreenUpdating = True End If End Sub الملف بعد التعديل :- لابلبلبلبلبلب.xlsm
×
×
  • اضف...

Important Information