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

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

  1. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

    المشرفين السابقين


    • نقاط

      4

    • Posts

      13165


  2. إبراهيم ابوليله

    إبراهيم ابوليله

    المشرفين السابقين


    • نقاط

      3

    • Posts

      2850


  3. طارق محمود

    طارق محمود

    أوفيسنا


    • نقاط

      3

    • Posts

      4533


  4. الصـقر

    الصـقر

    الخبراء


    • نقاط

      3

    • Posts

      1836


Popular Content

Showing content with the highest reputation on 02/19/15 in all areas

  1. معذرة أخي إنشغلت عنك أعتقد أن المطلوب الجديد يحتاج للأكواد ولن أستطيع المحاولة حتي الأحد القادم
    2 points
  2. استاذى ابن مصر جزاك الله كل خير .بارك الله فيك و في أمثالك
    2 points
  3. اخواني واخواتي الأعزاء السلام عليكم ورحمة الله ممكن ان يكون قد تعودنا علي شكل ProgressBar Control لكن يمكن اجراء بعض التحسينات لاضافة مظهر لها كالتالي واترككم للتجربة مع تحياتي ProgressBarControl.rar
    1 point
  4. تم اضافة الاصدار الخامس - سبتمبر 2012 إسم الملف: مُجمِع البيانات للاكسيل - Excel Data Collector أضيف للمكتبة بواسطة: محمد طاهر تاريخ الإضافة: 12 Sep 2011 القسم فى المكتبة: قسم الإكسيل هذا التطبيق يقوم بتجميع البيانات من كافة ملفات الاكسيل الموجودة فى مجلد معبن وفق مجال الخلايا الذي يتم تحديده خطوات الاستخدام ضع كافة الملفات المطلوب تجميع البيانات منها فى مجلد واحد حدد مسار المجلد و مجال الخلايا المطلوب تجميع البيانات منها قم بتشغيل التطبيق من زر Get Data ، سيتم تجميع البيانات من كافة الملفات فى ملف جديد ميزة اضافية اذا اردت استخدام التطبيق اكثر من مرة على عدة مجلدات ، فتوفيرا لخطوات اختيار المجلد المستهدف ، يمكن تحديد مجلد بدء الاختيار الافتراضي، ليبدا اختيار المجلدات منه فى كل مرة أثناء استخدام الملف بدلا من البدء من My Computer . و يمكن عمل ذلك بتحرير الخلية مباشرة ، فمثلا نكتب المسار d:\data الاصدار الثاني إضافة امكانية تحديد ورقة عمل محددة داخل الملفات باسمها ، اكتب اسم ورقة العمل او اتركها خالية للعمل افتراضيا على ورقة العمل الاولي فى جميع ملفات المصدر الاصدار الثالث تم اضافة المزايا التالية : 1- استخدام نموذج بدل من الازرار المباشرة نظرا لاضافة خيارات عديدة ، و يتم تسجيل مسار المجلد و اسم ورقة العمل و المجال المطلوب للخلايا المراد تجميع البيانات منها فى الحقول المناظرة. 2- فى حال عدم تسمية ورقة العمل سيتم التجميع من ورقة العمل الاولي فى جميع المفات داخل المجلد. 3- اضافة تلميحات tips بالعربية عند الوقوف بالماوس على الحقل للتوضيح. 4-امكانية اختيار تجميع البيانات فقط أو تجميع البيانات و التنسيق معا من ملفات المصدر الموجودة داخل المجلد المختار. 5- امكانية اختيار اظهار او اخفاء امتداد اسماء الملفات عند وضعها كعنوان للبيانات فى الملف التجميعي. 6- امكانية السماح بتكرار اسم الملف عند وجود اكثر من عمود يتم استخراجه من نفس الملف ، او الاكتفاء بخلية واحدة مع دمج العناوين. 7- اضافة اطار خارجي يوضح بيانات كل ملف الإصدار الرابع - تنقيح و ترتيب داخلي للكود - تعديل واجهة الاستخدام - امكانية استخراج البيانات دون فتح ملفات المصدر كخيار اضافى ، على أن يتم ذلك دون جلبها بنفس تنسيق المصدر. و هنا يوجد خياران للتشغيل الخيار الأول ، و هو الخيار الأصلي Get Data While Opening Files و به كافة الامكانيات فى الاصدار الثالث ، و امكانية عدم تحديد اسم ورقة العمل ليعمل على أول ورقة عمل فى الملفات الخيار الثاني و المضاف فى هذا الاصدار كخيار اضافي يستخدم عند الحاجة و به بعض المحدودية Get Data Without Opening Files و هنا يتم استخراج البيانات دون فتح ملفات المصدر ، و ذلك بهدف تسريع الاستخدام فى حالة الملفات الكثيرة و كبيرة الحجم و هنا خيار جلب التنسيق للخلايا غير مفعل ، و ايضا لابد من تحديد اسم ورقة العمل و الخيار كله اضافى حيث يغطي الخيار الأول خيارات أكثر الإصدار الخامس تم اضافة خيار امكانية استخراج البيانات بطريفة افقية ( بيانات الملفات المختلفة تظهر فى صفوف ) كخيار بديل و ليس رأسيا فقط ( أعمدة) مثل الاصدارات السابقة إضغط هنـــــــــــا لتنزيل الملف
    1 point
  5. بسم الله الرحمن الرحيم أساتذتى بالمنتدى و ألاخوة الزملاء كل عام وانتم بخير بمناسبة العام الجديد مما لا شك فيه أن الأهداء يقدم الى أغلى شخص لدى الانسان وبما انه اغلى شخص فلابد من تقديم أغلى هدية يملكها فسمحو لى ان اقدم أغلى ما املك واعز ما أملك وهو برنامج EMA الى أغلى منتدى . منتدى أوفيسنا هذا الصرح العظيم الذى شرفت بالانضمام اليه أهداء برنامج EMA برنامج EMA تم تصميمة بعمل متواصل على مدار 300 يوم بمعدل لا يقل عن 5 ساعات يوميا معظمها كان البحث والتفكير وكيفية التنفيذ فأن أحسنت فمن الله وما توفيقى الا بالله وأن أخطأت فمن نفسى والشيطان والحمد لله الذى بنعمته علينا تتم الصالحات تم رفع البرنامج بتاريخ 29-9-2014م وهذا كان الاصدار الاول من الجزء الاول للبرنامج وبعد التواصل مع الاعضاء ومشاركتى لأرائهم طلب منى بعض الاضافات الاخرى والحمد لله تم ذالك أقدم لكم الاصدار الثانى من الجزء الاول أتمنى أن يحوز اعجابكم ورضاكم البرنامج به أمكانيات وخيارات كبيرة جدا تم تصميمه على اعلى مستوى من الرقابه والتحكم فى المدخلات أنا الحمد لله عملت على برامج كبرى وهذا البرنامج عصارة خبرة محاسبية وأنتظرو منى قريباً الجزء الثانى للبرنامج (المخازن والمبيعات والمشتريات) فى نفس الملف وأخيرا وليس أخراً البرنامج بين أيديكم لا يتم فتج البرنامج الا فى الساعه 12ص أى بالليل 2015/1/1م لأنه نسخة عام 2015م ملحوظه مهمه جدا 1-يفضل تشغيل البرنامج على 2007 2-لا يتم تغيير اسم البرنامج نهائيا لانه لا يفتح عند تغيير- الاسم (EMA)فقط فى بعض الاحيان عند التنزيل يكون EMA 1 فى هذه الحالة يحذف 1 أن شاء الله نرفق لكم شرح لكيفية العمل على البرنامج اسم المستخدم / الدعم الفنى الباسورد / 123 EMA.zip
    1 point
  6. اخواني الكرام بعد التوكل على الله ثم الاستشارة وحسب رغبة بعض الاخوة نبداء على بركة الله هذه الدورة شروط الدورة: تقتصر الدورة على شرح الفيجول بيسك للتطبيقات VBA ولا علاقة للمعادلات بهذه الدورة لذا نرجو ان يقتصر السؤال والاستفسار حول الاكواد فقط. عدم إضافة عبارة الشكر (نشكر الجميع على تقدير الجهود) حتى لا يحتاج الموضوع الى تنقيح فإن أعجبك شرح أو رد يمكنك تقييمه من خيار أعجبني شكراً. ان يكون موعد الاستفسارات حول الجزء المطروح للشرح خلال 24 ساعة فقط ويتم الانتقال الى جزء أخر لتعميم الفائدة. سيكون الشرح بشقين كتابي ومرئي. على الاساتذة الذين يشاركون في الشرح اخذ الشرط الثالث بالاعتبار (مشكورين). * سيتم حذف أي مشاركة لا يتم التقيد فيها بالشروط. == تم نقل جميع مشاركات النقاش الى هنا =============================== دروس الدورة ============================= الدرس الاول1 الدرس الاول2 الدرس الثاني الدرس الثالث الدرس الرابع 1 الدرس الرابع 2 الدرس الرابع 3 اساسيات لغة VBA كلغة برمجة (نظري) الفصل الثالث ج1 الفصل الثالث ج2 اسئلة الدورة (الجزء الاول)
    1 point
  7. دروس إكسيل (صوت و صورة)
    1 point
  8. بسم الله الرحمن الرحيم فكرت كثيرا كيف يمكنني ان اشكر هذا المنتدى الرائع بمشرفيه واعضائه وما السبيل لاعبر عن شكري وامتناني للمهندس احمد (ابن مصر) الذي ساعدني وساعد الكثير في هذا المنتدى دون تردد وعن علم ومعرفة وابداع لما يقدمه فما وجدت سوى ان اكتب له هنا كلمة شكر من القلب حيث ان الرسول صلى الله عليه وسلم يقول «لَا يَشْكُرُ اللَّهَ مَنْ لَا يَشْكُرُ النَّاسَ» شكرا استاذ احمد وبارك الله بعلمك وعملك ادعوا الله ان يجعل ما تقدمه من خير للجميع تطبيق للحديث النبوي الشريف : "إذا مات ابن آدم انقطع عمله إلا من ثلاث صدقة جارية أو علم ينتفع به أو ولد صالح يدعو له"
    1 point
  9. اليك شرح لعادلات على الملف شرح معادلة.rar
    1 point
  10. ما شاء الله , اللهم بارك أسلوب جميل و شرح ممتع و خفة دم جميله جزاك الله خيرا نفعك الله بهذا و أثابك عليه و زادنا علما...
    1 point
  11. السلام عليكم جرب المرفق خزينة تجربة3.rar
    1 point
  12. اخى الكريم طلبك غريب !!!!!! هو سهل فى تنفيذه لكن غريب فى تطبيقه وغير منطقى لو فرضنا عندك 500 عامل هتعمل 500 شيت جديد ؟!!!!!!!!! فى فكره افضل من ذالك تعمل صفحه وحده وترحل بها البيانات بعد التسجيل ويمكن عمل زر بحث عند الحاجه اليها وبكدا لا يوجد فى الملف غير ورقتين فقط دى مجرد وجهة نظرى تقبل تحياتى
    1 point
  13. تفضل وجدت لك مثالا كما تحب استيراد بيانات.rar
    1 point
  14. اخوانى الأفاضل أ.أبو فارس أ.ياسر خليل أ.عبد الباري البنا أ.feteh07 م.ياسر البنا أستاذنا أبو القبطان أ.طارق نادر أ.elsedik أ.ابا الحسن والحسين أ.نايف جزاكم الله كل خير جميعا وأدعوا الله ان يديم علينا الأخوة والمحبة في الله ولله وأن يجمعنا سويا في ظل عرشه يوم لا ظل الا ظله تقبلوا موفور احترامى وتقديري لكم جميعا
    1 point
  15. شكرا للأخ الحبيب ابن مصر ((فقد كان و مازال)) يشكل لنا عونا هاما في حل مشاكلنا التقنية
    1 point
  16. السلام عليكم ورحمة الله الاستاذ المهندس احمد يستاهل كل الشكر والثنـــــــــــــــــــــــــــى جزاه الله خير جميع اعمالة قوية جدا وليست ركيكه
    1 point
  17. بعد اذن الاخ علية اليك هذا الحل ربما ينال اعجابك جمع حسب الخلية المجاورة salim.rar
    1 point
  18. معلمي الفاضل ابن مصر ليس غريب عنك ماقيل فيك فأنت جدير بكل بكلمة تقال في حقك بارك الله فيك
    1 point
  19. أخي الكريم أسير الزهور.. تعليق أستاذنا الفاضل رمهان واضح ويقصد من كلامه من خلال مرفقك بأنه يعتمد على عملية الشراء والبيع أي أنه (فاتورة) فـ فواتير البيع والشراء لها أصول وأسس حتى تعمل جيدا ولا تلقى أي مشكلة بعد ذلك في برنامجك ودعنا أولا أخي الكريم أن تنتبه لشيء مهم وهو أن تجعل مسميات الحقول في الجداول والنماذج بالإنجليزية - حتى لو ستجعلها بالفرانكو - ويمكنك من خصائص مسميات الحقول بأن تكتبها بالعربي وذلك لتجنب الأخطاء عند كتابة الأكواد وباختصار شديد والذي يريد أستاذنا رمهان إيصاله إليك بأن الفاتورة تتكون من: 1- رأس الفاتورة (وبها يكون تاريخ الفاتورة واسم المشتري وهكذا) 2- تفاصيل الفاتورة (وهي الأصناف المشتراة وتكون في جدول مستقل مربوطة بنموذج الفاتورة يتم جلبها في النموذج وبالسعر المسجل ويمكنك تغييره) 3- نهاية الفاتورة وهي الإجماليات عموما أعددت لك هذا المثال في المرفق لنموذج فاتورة البيع وبإذن الله خطوة خطوة تنفذ طلبك.. مع العلم بأنني لست متمكن جيدا في نظام الفواتير ولكن من باب تقديم العون كما تعلمنا من معلمينا الأفاضل في هذا المنتدى الكريم جزاهم الله عنا كل خير Flwr.rar
    1 point
  20. مهندس : أحمد " ابن مصر " تقبل إحترامي .. وتقديري .. وفخري
    1 point
  21. بارك الله فيك اخي ابو عبد الله و جزاك خير الجزاء و بعد اذنك و ددت المساهمة في الحل و هي نفس الطريقة التي تفضلت بها. و قد تم عمل اجراء باسم changeColor و استدعاؤه بحدث بعد التحديث لمربع التحرير و السرد و كذلك بحدث في الحالي للنموذج ليتم التنفيذ عند التنقل بين السجلات ايضاً. Private Sub changeColor() If Me.detach = "استقالة" Or Me.detach = "عطلة مرضية" Or _ Me.detach = "متقاعد" Or Me.detach = "منتدب" Or _ Me.detach = "وفاة" Then Me.تفصيل.BackColor = vbRed Else Me.تفصيل.BackColor = RGB(198, 217, 241) End If End Sub المرفق بعد التعديل بالتوفيق للجميع تلوين نموذج.rar
    1 point
  22. إخوانى الأفاضل لا استطيع ان اعبر لكم عن مدى فرحتى وسعادتى بكلماتكم الرقيقة ومشاعركم الطيبة، جزاكم الله كل خير وخالص الشكر والتقدير لهذا الصرح العظيم وأعضائه الكرام الذين المس فيهم روح الاخوة والتعاون بشكل لم اراه من قبل .. ادام الله علينا المحبة والاخوة فإنى أحبكم جميعا في الله وما نحن الا اخوة نتشارك ونتبادل العلم فيما بيننا ويعلم الله انى استفدت من وجودى هنا بشكل اكبر بكثير من افادتى لغيري خالص تحياتي للجميع
    1 point
  23. الأخ الكريم سالم أهلا بك في المنتدى شرفت بين إخوانك يرجى إرفاق ملفك لتوضيح المطلوب بشكل أدق ، وللحصول على نتائج صحيحة إن شاء الله
    1 point
  24. بالفعل أخونا الفاضل والحبيب الغالى / بن مصر يستحق منا كل تقدير وإحترام فهو لا يبخل بعلمه على أحد بارك الله فيه وجزاه الله عنا كل خير مع الشكر الوافر لكل أعضاء المنتدى الأفاضل على كل ما يقدمونه من علم ينتفع به كل أعضاء المنتدى
    1 point
  25. اخونا الحبيب نيابة عن جميع اعضاء منتدانا الحبيب ....نشكرك اخونا وحبيبنا فى الله ... ابن مصر هو بحق استاذ كبير .. وخبير بارع متمكن من ادواته ...وكريم فى عطائه لا يبخل بعلمه ابدا .... فهو بحق اهل للشكر والامتنان جزاه الله خيرا
    1 point
  26. الشكر لكم جميعا ماشاء الله تنشرون العلم والمعرفة دون مقابل اسأل الله ان يجزيكم الخير الكثير في الدنيا والاخرة ولك سيارة ورد
    1 point
  27. تفضل أخي الحبيب جرب الملف التالي به حلين : بالمعادلات وبالأكواد Find Multiple Strings.rar
    1 point
  28. السلام عليكم ورحمة لله أخي الكريم، لست أدري إن كنت فهمت المطلوب... نظرة على المرفق لعل فيه المطلوب... أخوك بن علية المرفق : Book1.rar
    1 point
  29. اخى اليك التوضيح على حسب مقدتى فى فهم الاكواد ListBox1.AddItem .Cells(A, 4) هذا السطر عباره عن ان قيمة اول عمود فى الليست من ناحيه اليسار = قيمة العمود الرابع فى الشيت ListBox1.List(C, 1) = .Cells(A, 3) هذا السطر عباره عن ان قيمة ثانى عمود فى الليست من ناحيه اليسار = قيمة العمود الثالث فى الشيت ListBox1.List(C, 2) = Format(.Cells(A, 2), "dd-mm-yyyy") هذا السطر عباره عن ان قيمة ثالث عمود فى الليست من ناحيه اليسار = قيمة العمود الثانى فى الشيت مع عمل مع عمل فورمات للعمود على ان تظهر القيم على انها تاريخ سنه-شهر-يوم ListBox1.List(C, 3) = .Cells(A, 1) هذا السطر عباره عن ان قيمة رابع عمود فى الليست من ناحيه اليسار = قيمة العمود الاول فى الشيت وهكذا بمعنى ان اذا اردت اضاف سطر سيكون بالشكل الاتى ListBox1.List(C, 3) = .Cells(A, 1) ولكن سنقوم بتغير الرقم ListBox1.List(C, 3) الى الرقم 4 لان الرقم اربعه سوف يشير الى العمود الخامس فى الليست سم نقوم بتغير الرقم Cells(A, 1 الى رقم العمود الذى نريده من الشيت وهكذا ملحوظه لاتنسى زياده عدد اعمده الليست بوكس الى الرقم 8
    1 point
  30. تفضل اخى الكريم تقبل تحياتى معادله بالكود.zip
    1 point
  31. اخى ياسر شرح جميل ووافى كما تعودنا منك تقبل تحياتى
    1 point
  32. اخى جرب وضع الكود الاتى فى حدث الورقه تقبل تحياتى Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("f2:f7000")) Is Nothing _ And IsNumeric(Target) Then Target.Offset(0, 1) = Target.Offset(0, 0) * Target.Offset(0, -1): Exit Sub End If If Not Intersect(Target, Range("e2:e7000")) Is Nothing _ And IsNumeric(Target) Then Target.Offset(0, 2) = Target.Offset(0, 0) * Target.Offset(0, 1): Exit Sub End If End Sub
    1 point
  33. الأخ الفاضل يوسف تفضل الملف التالي .. Muliply Two Columns.rar
    1 point
  34. شكرا وبارك الله فيك أستاذنا يـــــاسر واصل إلى الأمام ســــــــر ، تقبل الله سعيك وزادنا وإياك علما نافعا ونفع بك الأمة. تقبل تحيـــــــــــاتي.
    1 point
  35. السلام عليكم ورحمة الله ... إليك هذا الحل أخي الكريم: في مستند وورد اضغط على (ملف) ثم (خيارات) ثم (تخصيص الشريط). ثم في قسم (اختيار الأوامر من:) اختر أحد هذين (أوامر غير موجودة في الشريط) أو (كافة الأوامر)؛ ثم قم بالتمرير حتى تجد كلمة (إدراج إطار) قم بتحديده. ثم في القسم المقابل (تخصيص الشريط:) اختر تحتها (علامات تبويب رئيسية) تجد في قائمتها علامة تبويب (+إدراج) قم بالضغط على علامة (+) أو بالضغط المزدوج على (إدراج). ثم قم بإنشاء مجموعة جديدة من خلال الضغط على زر (مجموعة جديدة) الموجود أسفل قائمة علامات التبويب، وبهذا تظهر لك [مجموعة جديدة (مخصص)] تحت علامة تبويب (إدراج). قم بإعادة تسميتها إن أحببت ذلك من خلال الضغط على زر (إعادة تسمية...) الموجود في الأسفل بجوار زر (مجموعة جديدة)، ولتكن باسم (إطارات) مثلا. بعدها قم بالضغط على زر (إضافة>>) الموجود بين القسمين أو العمودين؛ فتلاحظ أن الأمر (إدراج إطار) الذي قمت بتحديده مسبقا قد تمت إضافته تحت هذه المجموعة [إطارات (مخصص)]. وإن شئت إضافة أمر (إدراج أفقي) الموجود تحت أمر (إدراج إطار) فلك ذلك، وما عليك إلا الضغط على زر (إضافة>>) لتتم إضافته إلى القسم المحدد؛ وهناك أوامر أخرى متعلقة بالإطارات إن أردت إضافتها فما عليك إلا تمرير الشريط للأسفل في القسم الأيمن لتجد أمر (إطار) وتحته أوامر أخرى، وإضافتها تكون بنفس الطريقة السالفة. بعد إتمام عمليات الإضافة قم بالضغط على زر (موافق) ليتم اعتماد هذه الإضافات. وبعدها ستجد في علامة التبويب (إدراج) في أقصى اليسار مجموعة جديدة باسم (إطارات)؛ قم بإنشاء إطار بالضغط على أمر (تنسيق إطار) أو أمر (إطار) وسيظهر معك علامة (+) كبيرة شبيهة بعلامة إدراج مربع نص؛ وبالتالي يمكنك إنشاء الإطار بكل سهولة. وقد قمت بإرفاق صور توضيحية للخطوات السابقة في حالة ما إذا كان الشرح مشكلا؛ آمل أن تستفيد منها. أسأل الله لكم التوفيق والسداد.
    1 point
  36. اسف اسف اسف بالغلط والله ما بعرف كيف حصل بعتذر بشدة عالغلط
    1 point
  37. عودأ حميداً مشكور على جهودك الطيبة بارك الله بك
    1 point
  38. الحلقة الرابعة عشر ***************** السلام عليكم ورحمة الله وبركاته وحشتكم !! أكيد لا .. لأني لو وحشتكم كنتو فتحتوا الباب وسألتوا عليا .. عموما إنتو وحشتوني ، وعشان وحشتوني هاقدم لكم حلقة جديدة يمكن تفتكروني. النهاردة هتكلم عن حاجة ناس كتير شرحوها ، وشرحوها بشكل ممتاز ، ودا خلاني مش عارف أشرح إزاي ، لأن اللي شرحوها وفوا شرحها صراحة .. هنتكلم عن الحلقات (بس مش حلقات افتح الباب) الحلقات اللي هنتكلم عنها الحلقات التكرارية ، ومن اسمها هي عبارة عن حلقات بتتكرر (إضافة عظيمة!) اسمها بالإنجليزي Loops ودي مهمة جداً في عالم الأكواد ، محدش يقدر يستغنى عنها تقريباً .. نفترض إني دخلت الفصل (بما إني معلم) ولسه دي أول مرة أتعرف على الطلبة اللي في الفصل ..يا ترى أنا عندي استعداد أخلى طالب طالب يقوم وأنا أقوله قول اسمك والطالب اللي بعديه قول اسمك .. أعتقد إن ريقي هينشف ودماغي هتصدع ودا طبعا مش يرضيكم (مش كدا ولا ايه) ..أنا من النوع الكسول فكل اللي هعمله هعمل تكرار من أول طالب في الفصل لآخر طالب ، وأعطي الأمر مرة واحدة .. من أول طالب إلى آخر طالب قووووول اسمك يا حبيبي الطالب التالي هو دا شكل الحلقة التكرارية .. نبرمجها بلغة الـ VBA ... هنقول إن الفصل فيه 60 طالب (معلش دا واقع الفصول في مصر) .. نقطة مهمة مننساش إن الطالب متغير مش ثابت ، فنرمز للطالب المتغير بالرمز X مثلاً ... Sub Loops() Dim X As Long For X = 1 To 60 'Say your name Next X End Sub طبعاً الكود دا شوية له علاقة بالبرمجة وشوية هتش .. ايه اللي هنعمله ..زي ما اتعودنا (دايما) إننا نعرف المتغير .. ونركز في السطر الثاني بدأ بكلمة For متبوعة باسم المتغير اللي هو X وبعدين علامة يساوي عشان نحدد قيمة X المتغيرة (أو الطالب المتغير) وهنا القيمة ليها بداية وليها نهاية (كل شيء له بداية ونهاية) وبيفصل بين البداية والنهاية حرف الجر To وفي آخر الحلقة التكرارية جملة Next X وممكن نقول Next ونسكت ، ومحرر الأكواد هيفهم لوحده .. بس أنا تقليدي شويتين فخلينا نكتب المتغير ، عشان الكود ممكن يكون فيه أكتر من حلقة تكرارية .. الجزء المهم هو الجزء اللي بين السطرين ، وهو دا الأمر المطلوب تكراره ، السطر اللي هنا مجرد تعليق وهتش وملوش علاقة بالبرمجة .. بس حبيت أقرب لكم الفكرة بأسلوب جديد.. كدا لما أنفذ الكود اللي فات ، كل اللي عملته إني أعطيت الأمر مرة واحدة وبس (وأنا حاطط رجل على رجل ... الدورة تلف على طالب طالب ، ويقول اسمه ، ولما يخلص ، الدورة تنتقل للطالب اللي بعديه وهكذا إلى أن ينتهي الطلاب ، ولما الـ 60 طالب يخلصوا ..يتم إيقاف تنفيذ الكود... ناخد أول مثال بجد عشان نقدر نتعلم إزاي نستفيد من الحلقات التكرارية :: لنفترض أننا عايزين نرقم النطاق A1:A10 بالأرقام من 1 إلى 10يعني الخلية A1 = 1 والخلية A2=2 وهكذا ..طبعا الموضوع بسيط جدا Sub NumberRange() Range("A1").Value = 1 Range("A2").Value = 2 Range("A3").Value = 3 Range("A4").Value = 4 Range("A5").Value = 5 Range("A6").Value = 6 Range("A7").Value = 7 Range("A8").Value = 8 Range("A9").Value = 9 Range("A10").Value = 10 End Sub كود في منتهى الروعة .. شايف حسام بيضحك ويقولي عايزك ترقم النطاق من A1:A100 (وابتسم ابتسامة فيها شماته !!) نفكر شوية .. بقول نفكر شوية (بلاش تكمل الحلقة غير لما تبص في الكود وتفكر شوية .. فكر شوية واكسب التوفير في الوقت والجهد) ايه المشترك في أسطر الكود .. وايه المختلف .. المتشابه في كل الأسطر Range("A ").Value = والمختلف هو الرقم بعد حرف الـ A ، والقيمة اللي بعد علامة يساوي .. في السطر الأول الرقم اللي بعد حرف الـ A هو 1 ، والقيمة بعد علامة يساوي بردو 1 ، ونفس الكلام مع السطر رقم 2 ، ورقم 3 وهكذا يبقا أول حاجة تفكر فيها إنك المختلف أو المتغير أو الشيء الغير ثابت تضعه في متغير ، ودا لأنه مش ثابت ومتغير .. فنضع متغير باسم X مثلاً ونعمل حلقة تكرارية من 1 إلى 10 (دي القيم اللي هيحملها المتغير) Sub NumberRange() Dim X As Long For X = 1 To 10 Range("A" & X).Value = X Next X End Sub نفس الكود اللي شرحناه من شوية ، الاختلاف في السطر اللي بين سطري التكرار .. الحلقة هتدور 10 مرات ، وفي كل مرة المتغير X بيحمل قيمة مختلفة (نرررررركز في الجزئية اللي جاية لأنها مهمة جداً جداً ) مش هنفذ الكود مرة واحدة .. سنقوم بعملية التنفيذ واحدة واحدة ، اللي مستعجل يروح ينفذ الكود مرة واحدة ، واللي مش مستعجل أنا معاه ..عشان يعرف حاجة مش هيعرفها الأخ المستعجل ... ضع مؤشر الماوس في أي مكان في الكود .. جميل >> اضغط F8 من لوحة المفاتيح ، وجمد قلبك وقول يا رب .. لاحظت ايه يا عبد المحسن؟ عبد المحسن ناااااااام مني (الله يسامحك) ..عبد المحسن : شايف الدنيا صفرا ليه ، هو فيه عاصفة النهاردة كمان؟ .. رديت عليه : لا يا عبد المحسن كمل نومك ، السطر الأصفر اللي ظهر ده سببه إننا ضغطنا F8 .. ودا فايدته إننا هنقوم بعملية التنفيذ واحدة واحدة .. سطر سطر .. السطر الأصفر على أول سطر في الكود Sub NumberRange() اضغط F8 مرة تانية ، ايه اللي حصل انتقل السطر الأصفر للسطر التالت ، طيب والسطر التاني يا معلم .. ملوش لازمة !!! أكبر خطأ إنك تعتقد إنه ملوش لازمة ، لما ضغطنا F8 للمرة التانية ، محرر الأكواد خزن في الذاكرة كل المتغيرات الموجودة في الكود عايز تتأكد من كلامي ، حرك مؤشر الماوس اللي على شكل حرف I (فيه شرطة فوق وشرطة تحت) حرك الماوس من غير ما تدوس كليك .. واقف على المتغير X هتلاقي تلميح في مستطيل صغير بيقولك المتغير X=0 ، دي كدا القيمة المبدئية للمتغير ... لما تضغط F8 للمرة التالتة ، روح شوف قيمة X مرة تانية هتلاقي قيمة X=1 (ايه اللي خلاها 1 مش كانت صفر من لحظة ) اللي حصل إننا انتقلنا من السطر For X = 1 To 10 والسطر دا هيبدأ في عمل الحلقة التكرارية اللي بنقول عليها ، والحلقة بدايتها 1 زي ما حددنا (وطبعاً ممكن نغير نقطة البداية يا شباب .. مش شرط 1) حرك مؤشر الماوس من غير ما تدوس على المتغير X في السطر المظلل بالأصفر Range("A" & X).Value = X هنلاقي زي ما قلت إن X =1 يعني محرر الأكواد هيعمل ايه دلوقتي ، هيشيل كل X ويحط مكانه القيمة 1 ، فيصبح السطر في الذاكرة بهذا الشكل Range("A1").Value = 1 لحد كدا تمام التمام ، صغر محرر الأكواد بحيث تكون ورقة العمل ظاهرة بالنسبة لك واتأكد إن النطاق A1:A10 فارغ ليس به أي بيانات ، وركز في ورقة العمل ، واضغط F8 عشان تنقل السطر الأصفر إلى هذا السطر ، ولاحظ ورقة العمل Next X لاحظت يا منصور الخلية A1 وضعت فيها القيمة 1 ، نخلي بالنا إن السطر الأصفر بيتم تنفيذه بعد الخروج منه ، فلما خرجنا من السطر تم تنفيذ الأمر وأعطى القيمة 1 للخلية A1 .. اضغط F8 مرة أخرى ، ونلاحظ إن السطر الأصفر انتقل للسطر اللي قبليه ، مش لبداية الحلقة التكرارية ، يعني ببساطة السطر اللي بيحدد بداية الحلقة ونهايتها بيعدي عليه مرة واحدة فقط .. أما سطر الأمر والسطر اللي فيه كلمة Next بيبدل السطر الأصفر عليهم... نبص دلوقتي على قيمة المتغير X هنلاقيها بقت 2 فيتم تنفيذ السطر بمجرد الضغط على F8 ويضع القيمة 2 في الخلية A2 وهكذا ..جرب واضغط F8 وفي كل مرة شوف قيمة المتغير X وشوف النطاق A1:A10 في كل مرة أول ما توصل قيمة المتغير X إلى الرقم 10 تتوقف الحلقة التكرارية ، وينتقل السطر الأصفر لجملة End Sub .. وينتهي عمل الكود .. عارف إني طولت في النقطة اللي فاتت ، بس كان لازم أطول فيها ، عشان أنا فاضي ومفيش ورايا شغل ، فقلت أصدعكم شوية!! ننتقل لمثال آخر --------------- عشان نقدر نفهم إزاي نستفيد من الحلقات التكرارية .. عايزين نعد الاسم (أحمد) في النطاق A1:A10 نفترض إني عندي الأسماء دي في النطاق A1:A10 أحمد ياسر سليم حسام عيسى أحمد أحمد خليل عبد الله أحمد المطلوب : نشوف الاسم (أحمد) كم مرة تم تكراره .. المعطيات : استعن بالله ثم بالحلقة التكرارية .. الفكرة : هنعمل اختبار صغير بقاعدة IF وهنقول لو قيمة الخلية بتساوي "أحمد" .. زود المتغير Counter بقيمة واحد Sub CountName() Dim X As Long Dim Counter As Long For X = 1 To 10 If Range("A" & X).Value = "أحمد" Then Counter = Counter + 1 Next X MsgBox Counter End Sub عملنا متغير جديد باسم Counter عشان لما يتحقق الشرط ويلاقي الاسم "أحمد" يقوم يخلي المتغير Counter يساوي نفسه + 1 طيب ليه يساوي نفسه ، عشان في كل مرة يلاقي أحمد قيمته هتتغير فلازم نضيف واحد لكل Counter جديد النتيجة في الآخر هتظهر في رسالة ، وهي 4 .. طيب نجرب نشيل الواحد في هذا السطر Counter = Counter + 1 لو شيلنا الواحد هتكون النتيجة 0 ، لأن المتغير قيمته المبدئية صفر ، فلما يتحقق الشرط مش هيزيد المتغير إلا لما نضيف واحد في كل مرة يتحقق الشرط. هناخد مثال آخر ---------------- عندنا درجات في النطاق A6:A15 ، عايزين نكتب ناجح أوراسب في الخلية المجاورة للدرجة ، لو الدرجة أكبر من أو يساوي 50 يبقا ناجح ، مكانش يكون راسب ... نخلي بالنا أنا غيرت بداية النطاق عشان الحلقة التكرارية بردو هتتغير بدايتها ونهايتها طبقاً للصفوف الجديدة 58 41 88 40 50 40 98 94 60 35 نجرب الكود التالي .. Sub LoopsTest() Dim X As Long For X = 6 To 15 If Cells(X, 1).Value >= 50 Then Cells(X, 2).Value = "ناجح" Else Cells(X, 2).Value = "راسب" End If Next X End Sub نلاحظ الحلقة التكرارية بدأت من 6 إلى 15 (ودا متغير للصفوف من الصف رقم 6 إلى الصف رقم 15) ووضعنا الشرط بين سطري الحلقة التكرارية ، لو الخلية اللي في الصف X والعمود الأول أكبر من أو يساوي 50 يقوم يعمل ايه؟ يضع القيمة النصية "ناجح" في الخلية اللي في العمود الثاني والصف X (نفس الصف بالطبع لأن قيمة X في الحالة دي هي هي نفس القيمة لأننا في نفس اللفة) .. إذا لم يتحقق الشرط قام بتنفيذ الجزء الثاني بأن يكتب النص "راسب" ثم إغلاق جملة IF بالجملة End IF ومننساش القفلة زي ما اتعودنا.. ننتقل لآخر مثال في الحلقة دي (عشان أنا تعبت وإنتو كمان أكيد تعبتو) في الأمثلة اللي فاتت عملنا حلقات تكرارية للصفوف .. واحد بيقولي طيب والأعمدة ملهاش نصيب في الدوخة اللي إحنا فيها دي .. أقوله أكيد ليها نصيب .. المطلوب إننا في الصف الرابع ، نكتب معادلة =COLUMN() بس في الأعمدة من العمود رقم 1 إلى العمود رقم 15 (A To O) نعقدها شوية ونقول في الأعمدة اللي رقمها فردي بس (الأعمدة اللي رقمها زوجي مش محتاجينها) يعني ببساطة عايزين نحط المعادلة في الأعمدة A C E G I K M O Sub ColumnsLoop() Dim X As Long For X = 1 To 15 Step 2 Cells(4, X).Formula = "=COLUMN()" Next X End Sub الحلقة التكرارية بدأت من العمود الأول حتى العمود رقم 15 (البداية والنهاية) معلومة جديدة Step 2 (دي معناها إننا هنقفز ..والقفز هيكون بمقدار 2 أي خطوتين) بدأنا بـ 1 فلما نقفز بمقدار 2 ، هنروح لرقم 3 ، أي أن المتغير سيكون رقم فردي في كل مرة 1 ، 3 ، 5 ، 7 ، 9 ، 11 ، 13 ، 15 (وهو دا المطلوب بالضبط) سطر الأمر فيه الخاصية Formula ودي عشان نقدر نضع معادلة من خلالها .. والمعادلة ببساطة زي ما شفناها من شوية بس بتكون بين أقواس تنصيص .. طيب الجزء الأول من السطر نلاحظ إننا استخدمنا Cells ودي بتكون متبوعة بقوسين ، وبين القوسين رقم الصف ثم فاصلة ثم رقم العمود ، وبما إن رقم الصف ثابت اللي هو رقم 4 ، فكتبناه زي ما هو .. اما رقم العمود فمتغير فوضعنا رقم العمود X ... جرب الكود وشوف النتيجة بنفسك أرجو أن أكون قد وفقت في توصيل المعلومة بأسلوب مبسط كان معكم أخوكم أبو البراء من تراك أوفيسنا (لف على الحلقات من الحلقة رقم 1 إلى الحلقة رقم 14 .. لو عايز تتعلم الـ VBA) ويا رب ميكونش فيه حد جاله دووووووووخة من كتر اللف .. والله أنا اللي دوخت أستودعكم الله .. دمتم في رعاية الله تقبلوا تحياتي .. دمتم بود
    1 point
  39. اخي الكريم يجب اختيار عنوان مناسب يصف الموضوع ابشر تم تعديل العنوان
    1 point
  40. السلام عليكم اخي ابو عبدالله هل جربت المرفق ,,, يعطيك تنبيه يوميا عند الدخول وبتاريخ اليوم نفسه ,,,, ارى انه افضل من المرور على كافة السجلات حتى تجد التنبيه,,, الحل الآخر اذا كان يعجبك هو وضع التنبيه في نموذج اخر .. وليس النموذج الذي يتم من خلاله ادخال البيانات.... وبالتوفيق ان شاء الله,,,
    1 point
  41. انظر أخى إلى المواضيع التالية فى المنتدى: 1 - VlookUp 2- فديو تعليمى : شرح دالة IFERROR أرجو الاستفادة
    1 point
  42. ما شاء الله ، شروحات في منتهى الروعة . شكرا... شكرا... شكرا... للأخ ياسر ولكل من ساهم بقليل أو كثير في إثراء هذه الحلقات.أسأل الله عز وجل أن يتقبل العمل و يبارك لنا في الأساتذة الأجلاء.
    1 point
  43. السلام عليكم ورحمة الله وبركاته ..... تفضل اخوي ابو عبدالله هذا المرفق عله ماتبحث عنه .... مع الشكر لجميع الأساتذة على جهودهم .. بإمكانك تغيير تاريخ الجهاز وملاحظة ذلك في حال وجود مواعيد تسليم ام لا وذلك بناء على البيانات المدخلة في الجدول receiving وفقنا الله واياكم لكل خير ,,,, تنبيه.rar
    1 point
  44. ماشاء الله تبارك الله شرح ولا اروع ... فعلا السهل الممتنع جزاك الله خيرا استاذ حسام عن كل حرف كتبت
    1 point
  45. ادخل على excell option من شعار اوفيس وبعدين ادخل على formulas ثم من اليمين خلى workbook calculation automatic وان شاء المشكلة هتتحل
    1 point
  46. والآن مع الجزء الثاني من الفصل الثالث لدورة vba والذي يحتوي على: إنشاء ماكرو بدون معاملات (parameters) إنشاء ماكرو بمعاملات إنشاء دالة بدون معاملات (parameters) إنشاء دالة بمعاملات استدعاء ماكرو أو دالة من داخل ماكرو استعمال نافذة التصحيح debug ربط النصوص والمتغيرات ونتائج الدوال ببعض إضافة تعليق التحكم بالتعليقات بالقائمة المتخصرة ولا ينقصني سوى دعاؤكم لي بالخير والتوفيق في الدنيا والآخرة
    1 point
  47. استاذي الحبيب وبرضه مثل ماقلت جربت سابقاً اعلنت المتغير Dim thedate As Variant ونفس الخطاء يظهر استاذي الحبيب محمد صالح انا شغال على الكود طبيعي في ملفاتي والمشكله حاصله عند الاخ الفاضل AbedElkader الذي هو متواجد في هذا الموضوع انا حبيت اعرف اين الخطاء كي نتلافى مثل هكذا مشاكل
    1 point
  48. هذه كائنات النظام طريقة اخفاءها : من شريط الادوات / أدوات / خيارات ثم افتح على لسان التبويب عرض ، وقم بإزالة العلامة من كائنات النظام ايضا ازل العلامة من كائنات مخفية ان الا ترى المخفية
    1 point
×
×
  • اضف...

Important Information