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

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

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

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

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

  • Days Won

    7

كل منشورات العضو إبراهيم ابوليله

  1. اخى كود جميل واكثر من رائع فيه فن كتير مشكورا عليه تقبل تحياتى
  2. اخى ابو تراب اشكرك على المتابعه للموضوع واتمنى ان اكون قد وفقت فى شرح الدروس السابقه تقبل تحياتى
  3. اخى هل تقصد هكذا اظهار واخفاء الاوراق مع منع التعديل عليها.rar
  4. اخى هل تقصد هكذا تقبل تحياتى اظهار واخفاء الاوراق مع منع التعديل عليها.rar
  5. اخى khmb اشكرك على المتابعه واتمنى ان يكون الشرح جيدا لاننى لست خبير فى الشرح ولكنى اشرح على قدر الامكان تقبل تحياتى
  6. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى وقد انتهينا سابقان من تناول الدرس الثانى ( أ ) الكود الاول--كود يقوم بعمل تسلسل لرقم الفاتوره الدرس الثانى ( ب ) الكود الثانى--كود يقوم بعمل تسلسل لبيانات الفاتوره الدرس الثانى ( ج ) كود الثالث--يقوم باحضار بيانات العميل عند كتابة الكود الخاص بالعميل الان نتناول شرح الدرس الثانى ( ح ) الكود الرابع---كود يقوم باحضار بيانات الصنف عند كتابة الكود الخاص بالصنف فى هذا الدرس كما هو واضح من العنوان اننا سوف نتعامل مع الاصناف وبياناتها اذا لابد ان تكون لدينا بيانات لهذه الاصناف وان نكون قد قمنا بادخال هذه البيانات فى الاماكن المخصصه لها فى شيت codes الان نقوم بادخال بعض البيانات الخاصه بالاصناف وذلك فى شيت codes وذلك على ان يكون ادخال البيانات كالاتى 1-ان يتم ادخال كود الصنف فى العمود A بداية من السطر 3 مع عدم تكرار الكود 2-ان يتم ادخال اسم الصنف فى العمود B بداية من السطر 3 مع عدم تكرار الاسم 3-ان يتم ادخال الوحده فى العمود C بداية من السطر 3 وهنا يمكن تكرار اسم الوحده 4-ان يتم ادخال السعر فى العمود D بداية من السطر 3 وبعد ان نقوم بادخال بعض البيانات كما هو واضح فى الصوره الان وبعد ان انتهينا من كتابة بيانات الاصناف كما فى الصوره السابقة نذهب الى شيت invoice ثم نقوم بادخال الاكواد الاتيه 1-2-3-4-5 فى الخلايا من c16 الى c20 سنلاحظ ان الخلايا d16:d20 والتى يكتب فيها اسم الصنف مازالت فارغه الخلايا من e16:e20 والتى يكتب فيها الوحده مازالت فارغه الخلايا من f16:f20 والتى يكتب فيها الكميه مازالت فارغه الخلايا من g16:g20 والتى يكتب فيها السعر مازالت فارغه كما فى الصوره الان تأتى مرحلة وضع الكود وسوف نقوم بوضع الكود فى حدث الورقه وذلك من اجل تنفيذ الكود تلقائيا دون الحاجه الى زر نقوم بفتح محرر الاكواد ونقوم بكتابة الكود كما هو موضح فى الصوره قم الان بمسح الاكواد الموجوده فى الخلايا من C16 الى C20 والتى قمنا بادخالها سابقا ثم نقوم بادخال الاكواد الاتيه 1-2-3-4-5 فى الخلايا من c16 الى c20 سنلاحظ ان الخلايا d16:d20 والتى يكتب فيها اسم الصنف لم تعد فارغه الخلايا من e16:e20 والتى يكتب فيها الوحده لم تعد فارغه الخلايا من f16:f20 والتى يكتب فيها الكميه لم تعد فارغه الخلايا من g16:g20 والتى يكتب فيها السعر لم تعد فارغه كما فى الصوره شرح الكود If Target.Cells.Count <> 1 Then Exit Sub هذا السطر يمنع حدوث الاخطاء فى حالة مسح اكثر من خليه مع بعضها If Not Intersect(Target, [c16:c37]) Is Nothing Then هنا نستخدم قاعده if لتطبيق شرط معين الا وهو فى هذه السطر نقول انه فى حالة عدم وجود متشابهات داخل النطاق c16:c37 يتم الاتى If Target.Value = Empty Then هنا نستخدم شرط اخر فى حالة تحقق الشرط الاول الا وهو انه فى حالة ان تكون اى من الخلايا من c16:c37 فارغه يتم الاتى Target.Offset(0, 1) = "" يتم اعطاء الخليه التى تلى الخليه الفارغه فى النطاق المحدد ب TARGET(C16:C37) اى التى تلى الخليه الفارغه فى نفس السطر وفى العمود الذى يليها بمقدار عمود واحد فقط لاشئ بمعنى لو ان الخليه الفارغه هى C20 يتم حزف محتوى الخليه D20 من البيانات Target.Offset(0, 2) = "" يتم اعطاء الخليه التى تلى الخليه الفارغه فى النطاق المحدد ب TARGET(C16:C37) اى التى تلى الخليه الفارغه فى نفس السطر وفى العمود الذى يليها بمقدار عمودين فقط لاشئ بمعنى لو ان الخليه الفارغه هى C20 يتم حزف محتوى الخليه E20 من البيانات Target.Offset(0, 4) = "" يتم اعطاء الخليه التى تلى الخليه الفارغه فى النطاق المحدد ب TARGET(C16:C37) اى التى تلى الخليه الفارغه فى نفس السطر وفى العمود الذى يليها بمقدار اربعة اعمده فقط لاشئ بمعنى لو ان الخليه الفارغه هى C20 يتم حزف محتوى الخليه g20 من البيانات End If نهاية الشرط If Target.Value = Empty Then For Each cl In Sheets("codes").[a3:a53] هنا بداية الكود الخاص باحضار البيانات هنا يتم استخدام الحلقه التكراريه FOR EACH للبحث فى نطاق محدد وهنا فى هذا السطر تم تعريف المتغير CI على انه عباره عن الخلايا من A3:A53 فى شيت CODES والتى سوف تستخدم كنطاق للبحث If cl = Target Then هنا نقوم باستخدام القاعده IF لتحديد شرط استخراج البيانات وهنا نقول انه اذا كان النطاق المسمى ب CI من A3:A53 فى شيت CODES يساوى النطاق المسمى TARGET من C16:C37 فى شيت INVOICE يتم الاتى Target.Offset(0, 1) = cl.Offset(0, 1) هنا نقول انه فى حالة تحقق الشرط يتم اعطاء الخليه التى تلى الخليه التى وقع عليها الشرط فى النطاق المحدد ب TARGET(C16:C37) اى التى تليها بمقدار نفس السطر وتليها بمقدار عمود واحد فقط يتم اعطائها قيمة الخليه التى تلى الخليه التى وقع عليها الشرط فى النطاق المسمى ب CI من A3:A53 فى شيت CODES اى الخليه التى التى تليها بمقدار نفس السطر وتليها بمقدار عمود واحد فقط للتوضيح اكثر بمعنى اننا لو كتبنا الرقم 2 فى الخليه C19 يتم البحث عن هذا الرقم فى الخلايا من A3:A53 فاذا كان الرقم موجود ضمن نطاق البحث يتم اعطاء الخليه D19 قيمة الخليه B التى تطابق الرقم2 وهكذا كما فى الصوره وهكذا بالنسبه للسطرين التاليين Target.Offset(0, 2) = cl.Offset(0, 2) Target.Offset(0, 4) = cl.Offset(0, 3) Exit Sub هنا نجبر الكود على الخروج وعدم تنفيذ شئ اخر End If نهاية الشرط If cl = Target Then Next استكمال الحلقه التكراريه For Each cl For Each c2 In Sheets("codes").[a3:a53] هنا نقوم بعمل كود اخر من وظيفته حزف بيانات الخلايا فى حالة ان الكود المدخل غير موجود ضمن نطاق البحث وهذا السطر تم شرحه من قبل فلا حاجه لاعدة الشرح If Target <> c2 Then هنا نقوم باستخدام القاعده IF لتحديد شرط حزف البيانات اى تفريغ الخلايا وهنا نقول انه اذا كان النطاق المسمى ب CI من A3:A53 فى شيت CODES اكبر من او اقل من النطاق المسمى TARGET من C16:C37 فى شيت INVOICE يتم الاتى Target.Offset(0, 1) = "" Target.Offset(0, 2) = "" Target.Offset(0, 4) = "" ايضا هذه السطر تم شرحها من قبل فلا حاجه لاعادة الشرح MsgBox "هذا الكود غير معرف من قبل" رساله تفيد بان الكود غير معرف Exit Sub هنا نجبر الكود على الخروج وعدم تنفيذ شئ اخر End If نهاية الشرط If c2 <> Target Then Next استكمال الحلقه التكراريه For Each c2 End If نهاية الشرط If Not Intersect(Target, [c16:c37]) Is Nothing Then End Sub نهاية عمل الكود ............................................................................................................................................................................................................................ الان نقوم بتجربه الملف المرفق لرؤيه عمل الكود على حده شاهد المرفق 4-EXCEL ----------------------------------------------------------------------------------- الان قد انتهينا من شرح الدرس الثانى ( ح ) الكود الرابع---كود يقوم باحضار بيانات الصنف عند كتابة الكود الخاص بالصنف اتمنى ان اكون قد وفقت فى الشرح تقبلوا تحياتى 4-EXCEL.rar
  7. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى وقد انتهينا سابقان من تناول الدرس الثانى ( أ ) الكود الاول--كود يقوم بعمل تسلسل لرقم الفاتوره الدرس الثانى ( ب ) الكود الثانى--كود يقوم بعمل تسلسل لبيانات الفاتوره الان نتناول شرح الدرس الثانى ( ج ) كود الثالث--يقوم باحضار بيانات العميل عند كتابة الكود الخاص بالعميل فى هذا الدرس كما هو واضح من العنوان اننا سوف نتعامل مع العملاء اذا لابد ان تكون لدينا بيانات لهؤلاء العملاء وان نكون قد قمنا بادخال هذه البيانات فى الاماكن المخصصه لها فى شيت codes الان نتعرف على كيفية ادخال البيانات الخاصه بمجموعه من العملاء وذلك فى شيت codes وذلك على ان يكون ادخال البيانات كالاتى 1-ان يتم ادخال كود العميل فى العمود f بداية من السطر 3 مع عدم تكرار الكود 2-ان يتم ادخال اسم العميل فى العمود g بداية من السطر 3 مع عدم تكرار الاسم الان نقوم بادخال بعض البيانات كما هو واضح فى الصوره ملوحظه سوف يتم لاحقا معرفة كيفية انشاء فوم لادخال هذه البيانات دون الحاجه الى الادخال اليدوى الان وبعد ان انتهينا من ادخال بيانات بعض العملاء نذهب الى شيت invoice ثم نقوم بادخال الكود الاتى101 وهو خاص بالعميل عبدالله باقشير فى الخليه f6 سنلاحظ ان الخليه d8 والتى يكتب فيها اسم العميل مازالت فارغه الخليه I8 والتى يكتب فيها تليفون العميل مازالت فارغه الخليه d10 والتى يكتب فيها عنوان العميل مازالت فارغه الان نقوم باضافة موديول جديد ونسميه call_age_data ثم نقوم بكتابة الكود الاتى فى محرر الاكواد كما فى الصوره وكما يظهر فى الصوره انه تم اضافة الكود الى محرر الاكواد وكما قلنا سابقا ان الكود سوف يكون فى حدث الورقه وذلك من اجل تنفيذ الكود تلقائيا دون الحاجه الى زر لذلك نذهب الى محرر الاكواد الخاص بشيت invoice ثم نضع فيه الكود الذى سوف يقوم باستدعاء الكود السابق الان نذهب الى شيت INVOICE ثم نكتب كود العميل101 فى الخليه F6 سنلاحظ انه تم استدعاء البيانات الخاصه بالعميل فى الخلايا كما فى الصوره شرح الكود Sub call_agent_data() وكما قلنا سابقا كلمة sub ,وهى اختصار لكلمة Subroutine وتعنى تنفيذ مهمه محدده هذه المهمه تم تسميتها ب call_agent_data Set WS = Worksheets("INVOICE") تم تعريف المتغيرws على انه شيت اكسيل المسمى ب invoice Set WS1 = Worksheets("codes") المسمى ب تم تعريف المتغيرws1 على انه شيت اكسيل codes WS.Cells(8, 4) = "" هنا يتم تفريغ اى حزف محتوى الخليه الواقعه فى السطر8 والعمود4-- اى الخليه(d4) فى شيت ws اى فى الشيت المعرف باسم invoice هذه الخليه هى خليه اسم العميل WS.Cells(8, 8) = "" هنا يتم تفريغ اى حزف محتوى الخليه الواقعه فى السطر8 والعمود8-- اى الخليه(h8) فى شيت ws اى فى الشيت المعرف باسم invoice هذه الخليه هى خليه تليفون العميل WS.Cells(10, 4) = "" هنا يتم تفريغ اى حزف محتوى الخليه الواقعه فى السطر10 والعمود4-- اى الخليه(d10) فى شيت ws اى فى الشيت المعرف باسم invoice هذه الخليه هى خليه عنوان العميل Dim hh As Integer hh متغير تم تعريفه على انه عدد صيح For hh = 3 To 51 هنا تم تعريف قيمه المتغيرhh على انها تتراوح مابين الرقمين 3 والرقم 51 او بمعنى ان الكود سوف ينفذ على الاسطر من 3 الى 51 If WS.Cells(6, 6).Value = WS1.Cells(hh, 6) Then هنا نستخدم قاعده if لوضع شرط معين هنا نقول انه فى حالة ان الخليه الواقعه فى السطر 6 والعمود 6 اى الخليه f6 فى شيت ws اى فى الشيت المعرف باسم invoice تساوى الخليه الواقعه فى السطر المعرف ب hh فى العمود 6 اى من الخليه (f6 الى F51) اى الخليه f6 فى شيت ws1 اى فى الشيت المعرف باسم codes يتم الاتى WS.Cells(8, 4) = WS1.Cells(hh, 7) سنجد هنا انه فى حالة تحقق الشرط السابق يتم اعطاء الخليه الواقعه بين السطر8 والعمود 4 اى الخليه ( d8 ) فى شيت ws اى فى الشيت المعرف باسم invoice يتم اعطائها قيمة الخليه التى تساوى الشرط والواقعه بين السطر المعرف ب hh فى العمود 7 اى من الخليه (e7 الى e51) وهكذا بالنسبه للسطرين التاليين WS.Cells(8, 8) = WS1.Cells(hh, 8) WS.Cells(10, 4) = WS1.Cells(hh, 9) GoTo 2 هنا نقول انه بعد تحقق الشرط وبعد تنفيذ مايتم بعد تحقق الشرط يتم الذهاب الى الرقم2 والرقم 2 قد تم الاشاره اليه فى الكود على انه 2 End Sub اى نهاية عمل الكود If WS.Cells(6, 6).Value <> WS1.Cells(hh, 6) Then وهنا نستخدم قاعدة if ايضا ولكن لوضع شرط اخر داخل نفس الكود وفى هذا السطر نقول هنا نقول انه فى حالة ان الخليه الواقعه فى السطر 6 والعمود 6 اى الخليه f6 فى شيت ws اى فى الشيت المعرف باسم invoice لاتساوى(اكبرمن او اقل من) الخليه الواقعه فى السطر المعرف ب hh فى العمود 6 اى من الخليه (f6 الى F51) فى شيت ws1 اى فى الشيت المعرف باسم codes يتم الاتى WS.Cells(8, 4) = WS1.Cells(hh, 7) سنجد هنا انه فى حالة تحقق الشرط السابق يتم الاتى GoTo 1 والرقم 1 قد تم الاشاره اليه فى الكود على انه 1 MsgBox "هذا العميل غير مسجل من قبل" اى ظهور رساله تفيد بان الرقم الذى تم ادخاله غير مسجل من قبل End If هنا كما قلنا سابقا انه طالما بدأنا بكلمة if لابد ان يكون هناك اقفال بكلمة end if وهنا نجد ان end if هذه تقفل السطر If WS.Cells(6, 6).Value = WS1.Cells(hh, 6) Then End If هنا كما قلنا سابقا انه طالما بدأنا بكلمة if لابد ان يكون هناك اقفال بكلمة end if وهنا نجد ان end if هذه تقفل السطر If WS.Cells(6, 6).Value <> WS1.Cells(hh, 6) Then Next وكما قلنا سابقا انه طالما بدأنا ب for فهذا يعنى انه لابد ان يتم اقفال هذه الحلقه ب next ............................................................................................................................................................................................................................ الان نقوم بتجربه الملف المرفق لرؤيه عمل الكود على حده شاهد الفيديو 3-EXE والمرفق 3-EXCEL ----------------------------------------------------------------------------------- الان قد انتهينا من شرح الدرس الثانى ( ج ) كود الثالث--يقوم باحضار بيانات العميل عند كتابة الكود الخاص بالعميل اتمنى ان اكون قد وفقت فى الشرح تقبلوا تحياتى 3-EXCEL.rar
  8. اخى حنفضر اشكرك على المتابعه واتمنى لك التوفيق والاستفاده تقبل تحياتى
  9. اخى ابوسليمان اتمنى لك الاستفاده مشكورا على المتابعه تقبل تحياتى
  10. اخى محمد تابع الدروس على الربط الاتى http://www.officena.net/ib/index.php?showtopic=57179&page=2 تقبل تحياتى
  11. ياجماعه انا كنت عامل فاتوره وعايزه تسحب الكميات اللي هكتبها داخل الفاتوره من شيت المخزن ارجو المساعده ضروررررررررررررررري اخى محمد الهدف من هذه الدروس هى ان تصل بنفسك الى الدرجه التى تجعلك تعتمد على نفسك فى انشاء برانامج فاتوره خاص بك دون الحاجه الى مساعده احد ان شاء الله تقبل تحياتى
  12. اخى محمد شاكرك على المتابعه واتمنى ان استطيع تقديم شيئا مفيدا تقبل تحياتى
  13. اخى جلال اشكرك على متابعة الموضوع اتمنى ان يكون الموضوع مفيدا تقبل تحياتى
  14. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى وقد انتهينا سابقان من تناول الدرس الثانى ( أ ) الكود الاول--كود يقوم بعمل تسلسل لرقم الفاتوره الان نتناول شرح الدرس الثانى ( ب ) الكود الثانى--كود يقوم بعمل تسلسل لبيانات الفاتوره اود ان اوجه عناية احبائى المتابعين الى اننا سوف نقوم بوضع الكود فى حدث الورقه ولكن دعونا نجرب شيئا قبل وضع الكود انظر الى الصوره وكما قلنا سابقا ان وضع الكود سوف يكون فى حدث الورقه نقوم بفتح محرر الاكواد ونقوم بكتابة الكود كما هو موضح فى الصوره قم الان بمسح الاكواد الموجوده فى الخلايا من C16 الى C18 والتى قمنا بادخالها سابقا ثم قم باعاده ادخالها من جديد وستلاحظ انه تم عمل تسلسل فى الخلايا من B16 الى B18 كما هو موضح فى الصوره شرح الكود Private Sub Worksheet_SelectionChange(ByVal Target As Range) هذا الكود يوضوع فى حدث الورقه وهو من وظيفته انه فى حالة حدوث اى تغير فى النطاق المحدد يتم تفعيل الكود If Target.Column = 3 Then هنا نستخدم قاعده if لوضع شرط معين وهنا نشترط انه فى حالة ان يكون العمود رقم 3 هو عمود الادخال ونود ان نشير الى انه طالما بدأنا سطر الكود ب if فهذا يعنى اننا لابد ان يتم اقفال هذا السطر ب end if s = 1 متغير يشير الى ان بدايه الترقيم سوف يبدأ من الرقم 1 For T = 16 To 37 هنا تم استخدام الحلقه التكراريه for وننبه الى انه طالما بدأنا سطر الكود ب for فهذا يعنى انه لابد ان يتم اقفال هذه الحلقه ب next وهنا تم الاشاره الى t على انه متغير يشير الى ان تنفيذ الحلقه التكراريه سوف تتم بداية من السطر 16 وحتى السطر 37 If Cells(T, 3) = "" Then هنا نقول انه اذا كانت الخليه الواقعه فى النطاق المعرف ب t (من السطر 16الى37) فى العمود الثالث فارغه يتم الاتى Cells(T, 2).Value = "" يتم جعلل الخليه الواقعه فى النطاق المعرف ب t(من السطر 16الى37) فى العمود الثانى فارغه End If هنا كما قلنا سابقا انه طالما بدأنا بكلمة if لابد ان يكون هناك اقفال بكلمة end if وهنا نجد ان end if هذه تقفل السطر If Cells(T, 3) = "" Then If Cells(T, 3) > "" Then هنا نبدأ شرط جديد نقول فيه انه اذا كانت الخليه الواقعه فى النطاق المعرف ب t(من السطر 16الى37)فى العمود الثالث غير فارغه يتم الاتى Cells(T, 2).Value = s هنا نقول انه فى حالة تحقق الشرط السابق يتم جعل الخليه الواقعه فى النطاق المعرف ب t(من السطر 16الى37) فى العمود الثانى تساوى قيمة المتغير المعرف ب s اى 1 s = s + 1 اى انه فى حالة ان تكون الخلاياالتى يتم عمل التسلسل فيها اى من b16الى b37 قد اخذت قيمة المتغير s يتم اضافة الرقم 1 الى الخليه التى تليها وهكذا End If هنا كما قلنا سابقا انه طالما بدأنا بكلمة if لابد ان يكون هناك اقفال بكلمة end if وهنا نجد ان end if هذه تقفل السطر If Ce lls(T, 3) > "" Then Next وكم قلنا سابقا انه طالما بدأنا ب for فهذا يعنى انه لابد ان يتم اقفال هذه الحلقه ب next End If هنا كما قلنا سابقا انه طالما بدأنا بكلمة if لابد ان ي كون هناك اقفال بكلمة en d if وهنا نجد ان end if هذه تقفل السطر If Ta rget.Column = 3 Then End Sub نهاية الكود ............................................................................................................................................................................................................................ الان نقوم بتجربه الملف المرفق لرؤيه عمل الكود على حده فقط قم بالكتابه داخل الخلايا من C16 الى C37 وستلاحظ ظهور الناتج فى الخلايا من B16 الى B37 شاهد الفيديو 2-EXE والمرفق 2-EXCEL ----------------------------------------------------------------------------------- الان قد انتهينا من شرح الدرس الثانى ( ب ) الكود الثانى--كود يقوم بعمل تسلسل لبيانات الفاتوره اتمنى ان اكون قد وفقت فى الشرح تقبلوا تحياتى 2-EXE.rar 2-EXCEL.rar
  15. اخى محمد معادله جميله مشكورا عليها والاجمل فيها البطاطا كما قال الاستاذ ياسر تقبل تحياتى
  16. اخى محمد اشكرك على متابعة الموضوع وعلى الكلمات الطيبه واتمنى ان اقدم شيئا مضيفا ردا لجميل هذا المنتدى الكبير علينا تقبل تحياتى
  17. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى الدرس الثانى ( أ ) الكود الاول--كود يقوم بعمل تسلسل لرقم الفاتوره بالتاكيد اننا نحتاج لمثل هذا الكود توفيرا للوقت الضائع فى ادخال الرقم بأيدينا وظيفة الكود انه بعد الانتهاء من الفاتوره وادخال بياناتها يقوم الكود تلقائيا بوضع رقم جديد للفاتوره وهذا الكود سوف يكون مرتبط بالبيانات المسجله فى شيت INVOICE DATA وبالاخص فى العمود C والخاص برقم الفاتوره حيث ان عمل الكود يكون كالاتى انه فى حالى عدم وجود بيانات فى العمود c يتم اعطاء الخليه الرقم 1 اما فى حالة وجود بيانات يتم اخذ اكبر رقم موجود ثم يتم اضافة 1 اليه الان نتعرف على كيفيه كتابة الكود وطريقه عمل الكود نقوم بانشاء موديل جديد وكتابة الكود داخلها كالاتى وهنا نجد ان الشكل النهائى للكود يكون كالأتى Sub INV_NO() On Error Resume Next Dim WS As Worksheet Dim WS1 As Worksheet Set WS = Worksheets("INVOICE") Set WS1 = Worksheets("INVOICE DATA") If WS.Range("F2").Value = "" Then WS.Range("F2").Value = 1 Exit Sub End If If WS.Range("f2").Value <> "" Then With WS1 WS.Range("F2").Value = Application.Max(WS1.[C3:C10800]) + 1 End With End If End Sub واسمحو لى ايها الاخوه الافاضل بمحاوله متواضعه منى لشرح اسطر الكود Sub INV_NO() كلمة sub ,وهى اختصار لكلمة Subroutine وتعنى تنفيذ مهمه محدده هذه المهمه تم تسميتها ب INV_NO Dim WS As Worksheet Dim WS1 As Worksheet هنا يتم الاعلان عن متغير اسميناه ب ws ,ومتغير اخر اسميناه ب ws1 وتم الاشاره الى كلا من المتغيرين على انهما سيكونان عباره عن شيت اكسيل Set WS = Worksheets("INVOICE") Set WS1 = Worksheets("INVOICE DATA") وهنا يتم تعريف المتغيرين وتحديد اسمهما فنجد ان المتغير الاول ws تم نعريفه على انه الشيت المسمى ب invoice ونجد ان المتغير الثانى ws1 تم نعريفه على انه الشيت المسمى ب invoice data If WS.Range("f2").Value = "" Then هنا ينم استخدام القاعده if داخل الكود لتنفيذ شئ معين وفى البداية نود ان نشير الى شئ معين الا وهو كيفيه استخدام المتغير ws فمثلا فى هذا السطر نشير الى الخليهf2فى شيت invoice وبذلك يكون شكل الكود كألأتى sheets("invoice").range("f2") هكذا يتم الاشاره الى الخليه f2 فى شيت invoice اما فى حالة استخدام الاختصار اى استخدام المتغير ws تكون الاشاره كالأتى ws.range("f2") وبالنظر الى سطر الكود سنجد اننا نريد ان نقول انه فى حالة عدم وجود بيانات فى الخليه f2 فى الشيت ws اى شيت invoice يتم تنفيذ الاتى WS.Range("F2").Value = 1 وفى هذا السطر نجد انه سوف يتم تنفيذ أو سوف يتم اعطاء الخليه f2 فى شيت ws اى فى شيت invoice الرقم 1 Exit Sub End If كلمة Exit Sub وظيفها انه تقوم بانهاء عمل الكود فلا يتم تنفيذ شئ بعدها اما كلمة End If فهى تقوم بانهاء عمل الشرط if If WS.Range("f2").Value <> "" Then هنا نريد ان نقول انه فى حالة وجود بيانات فى الخليه f2 فى شيت ws اى فى شيت invoice يتم الاتى WS.Range("F2").Value = Application.Max(WS1.[C6:C10800]) + 1 بالنظر الى هذا السطر سنجد اننا قد استخدمنا المعادله MAX هذه المعادله من وظيفتها ان تقوم بالبحث داخل النطاق المشار اليه (C3:C10800) فى شيت WS1 اى فى شيت INVOICE DATA ثم يتم اضافة الرقم 1 الى النتاتج بمعنى انه فى حالة وجود الارقام الاتيه فى الخلايا 1-2-3-4-5 سنجد ان المعادله MAX سوف تعطى الرقم 5 كأكبر رقم موجود ثم يتم اضافة الرقم 1 الى الرقم5 1+5=6 وبذلك تصبح قيمة الخليه f2 فى شيت ws اى فى شيت invoice تساوى الرقم 6 وهكذا End If End Sub اما كلمة End If فهى تقوم بانهاء عمل الشرط if اما كلمة End sub فهى تقوم بنهاء عمل الكود نهائيا ............................................................................................................................................................................................................................................................. الان يتم التعرف على كيفيه انشاء زر وربطه بالكود ---------------------------------------------------------------------------------------------- الان قد انتهينا من شرح الدرس الاول (أ) اتمنى ان اكون قد وفقت فى الشرح تقبلوا تحياتى
  18. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى الدرس الثانى ( أ ) الكود الاول--كود يقوم بعمل تسلسل لرقم الفاتوره بالتاكيد اننا نحتاج لمثل هذا الكود توفيرا للوقت الضائع فى ادخال الرقم بأيدينا وظيفة الكود انه بعد الانتهاء من الفاتوره وادخال بياناتها يقوم الكود تلقائيا بوضع رقم جديد للفاتوره وهذا الكود سوف يكون مرتبط بالبيانات المسجله فى شيت INVOICE DATA وبالاخص فى العمود C والخاص برقم الفاتوره حيث ان عمل الكود يكون كالاتى انه فى حالى عدم وجود بيانات فى العمود c يتم اعطاء الخليه الرقم 1 اما فى حالة وجود بيانات يتم اخذ اكبر رقم موجود ثم يتم اضافة 1 اليه الان نتعرف على كيفيه كتابة الكود وطريقه عمل الكود نقوم بانشاء موديل جديد وكتابة الكود داخلها كالاتى وهنا نجد ان الشكل النهائى للكود يكون كالأتى Sub INV_NO() On Error Resume Next Dim WS As Worksheet Dim WS1 As Worksheet Set WS = Worksheets("INVOICE") Set WS1 = Worksheets("INVOICE DATA") If WS.Range("I6").Value = "" Then WS.Range("I6").Value = 1 Exit Sub End If If WS.Range("f6").Value <> "" Then With WS1 WS.Range("I6").Value = Application.Max(WS1.[C6:C10800]) + 1 End With End If End Sub واسمحو لى ايها الاخوه الافاضل بمحاوله متواضعه منى لشرح اسطر الكود Sub INV_NO() كلمة sub ,وهى اختصار لكلمة Subroutine وتعنى تنفيذ مهمه محدده هذه المهمه تم تسميتها ب INV_NO Dim WS As Worksheet Dim WS1 As Worksheet هنا يتم الاعلان عن متغير اسميناه ب ws ,ومتغير اخر اسميناه ب ws1 وتم الاشاره الى كلا من المتغيرين على انهما سيكونان عباره عن شيت اكسيل Set WS = Worksheets("INVOICE") Set WS1 = Worksheets("INVOICE DATA") وهنا يتم تعريف المتغيرين وتحديد اسمهما فنجد ان المتغير الاول ws تم نعريفه على انه الشيت المسمى ب invoice ونجد ان المتغير الثانى ws1 تم نعريفه على انه الشيت المسمى ب invoice data If WS.Range("f6").Value = "" Then هنا ينم استخدام القاعده if داخل الكود لتنفيذ شئ معين وفى البداية نود ان نشير الى شئ معين الا وهو كيفيه استخدام المتغير ws فمثلا فى هذا السطر نشير الى الخليهf6فى شيت invoice وبذلك يكون شكل الكود كألأتى sheets("invoice").range("f6") هكذا يتم الاشاره الى الخليه f6 فى شيت invoice اما فى حالة استخدام الاختصار اى استخدام المتغير ws تكون الاشاره كالأتى ws.range("f6") وبالنظر الى سطر الكود سنجد اننا نريد ان نقول انه فى حالة عدم وجود بيانات فى الخليه f6 فى الشيت ws اى شيت invoice يتم تنفيذ الاتى WS.Range("I6").Value = 1 وفى هذا السطر نجد انه سوف يتم تنفيذ أو سوف يتم اعطاء الخليه f6 فى شيت ws اى فى شيت invoice الرقم 1 Exit Sub End If كلمة Exit Sub وظيفها انه تقوم بانهاء عمل الكود فلا يتم تنفيذ شئ بعدها اما كلمة End If فهى تقوم بانهاء عمل الشرط if
  19. بسم الله الرحمن الرحيم والصلاة والسلام على اشرف المرسلين سيدنا محمد صلى الله عليه وسلم لقد قدمت سابقا نموذج فاتوره على الاكسيل بدون فورم وبناء على طلب بعض الاخوه فى شرح كيفيه عمل النموذج وتلبية لرغباتهم نتناول طريقه عمل النموذج ونظرا لضيق الوقت ان شاء الله يتم تناول درس يوميا على الاقل حتى الانتهاء بإذن الله .......................................................................... الاخوه الافاضل الحمد لله فقد انتهينا من شرح الدرس الاول وهو عباره عن ثلاثة دروس تمهيديه وهى اولا--تصميم الفاتوره ثانيا--انشاء شيت به الاكواد المساعده ثالثا--انشاء شيت لتجميع بيانات الفواتير المسجله --------------------------------------------------- الان نبدأ فى شرح الدرس الثانى ونود ان نشير الى ان محتوى الدرس الثانى يشمل الاتى الان وبعد ان انتهينا من انشاء الفاتوره وانشاء الشيتات التى سوف نتعامل معها نبدأ بوضع الاكود الخاصه بالفاتوره وبالنظر الى الفاتوره سنجد اننا نحتاج فى البدايه نحتاج الى مجموعه من الاكواد الاول---كود يقوم بعمل تسلسل لرقم الفاتوره الثانى ---كود يقوم بعمل تسلسل لبيانات الفاتوره الثالث---كود يقوم باحضار بيانات العميل عند كتابة الكود الخاص بالعميل الرابع---كود يقوم باحضار بيانات الصنف عند كتابة الكود الخاص بالصنف الخامس---كود يقوم بترحيل بيانات الفاتوره الى شيت invoice date السادس---كود يقوم باحضار بيانات الفاتوره عند كتابة رقم الفاتوره السادس---كود يقوم بالتعديل على الفاتوره المسجله من قبل السابع---كود يقوم بحزف فاتوره مسجله من قبل الثامن---كود يقوم بطباعه فاتوره مسجله من قبل تقبلوا تحياتى
×
×
  • اضف...

Important Information