الصـقر قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 بسم الله الرحمن الرحيم الاخوة الزملاء فى هذا الصرح العظيم اقدم لكم الدرس الثانى من علمنى كيف اصطاد شرح مبسط عن كيفية عمل كود ترحيل من خلايا متفرقه بورقه عمل الى ورقة عمل اخرى بناء على طلب الاخ الكريم / بيف الدين حسام يريد معرفه كيفية عمل كود ترحيل من سند قبض الى شيت الخزينة كما هو موضح بالصور المطلوب ترحيل الخلايا المظلله باللون الاصفر بورقه عمل (توريد) الى ورقة عمل حركة الخزينة اولا : الضغط على ALT+F11 لفتح محرر الاكواد ثم من قائمة insert نختار مودويل جديد سيظهر لنا شاشة بيضه هنبداء بسم الله كتابة الكود Sub ترحيل() End Sub السطر الاول هو الاعلان عن بداية الكود sub يلية اسم الكود وهو ترحيل يلية () يعنى فتح قوس ثم غلقه فبمجرد كتابة السطر الاول سوف يتم ظهور السطر الثانى وهو End sub أنا عايز كل واحد يكتب الكود بنفسة مش ينسخ / من فضلك عايزك تكتب ثانيا : كتابة هذا السطر Sub ترحيل() Application.ScreenUpdating = False End Sub هذا السطر يعنى تثبيت الشاشه عند الترحيل ( يعنى عدم اهتزاز الشاشه اثناء تطبيق الكود ) ثالثا : ايه المطلوب هو ترحيل الخلايا المظلله باللون الاصفر بورقه عمل توريد الى ورقة عمل حركة الخزينة اذن الشيت اللى هتروح له البيانات هو شيت حركة الخزينة وهو اسمه حسب الملف المرفق وكما هو موضح بالصورة Sheet4 وليس حركة الخزينة ملحوظه/عند استخدم اسم شيت باى كود يفضل كتابة اسم الشيت الثابت كما هو بمحرر الاكواد لانه احتمال تغيير اسم الشيت من (حركة الخزينة) الى (قاعدة البيانات )مثلا فى هذه الحاله لا يعمل الكود نرجع للكود بتاعنا ونضيف الاتى Sub ترحيل() Application.ScreenUpdating = False With Sheet4 End With End Sub ما تم اضافته هو With Sheet4 كلمة With معناها الحرفى ( مع) أى مع الشيت Sheet4 لماذا استخدمنا Sheet4 وليس ( حركة الخزينة) لان لو كتبنا (حركة الخزينة With) وجيت حضرتك وغيرت اسم الشيت من حركة خزينة الى قاعدة البيانات مثلا لا يتغير اسم الشيت فى محرر الاكواد فهو هيظل ثابت باسم Sheet4 وفى هذه الحاله لا يعمل الكود لانه هيبجث عن شيت حركة الخزينة هيكون غير موجود لكن لو استخدمت With Sheet4 مهما تغير اسم الشيت هيشتغل الكود طيب اى شئ بفتحه فى الاكسيل لازم اقفله انا دلوقتى فتحت With Sheet4 اذن لا بد من قفل With بـــ End With رابعا : اضافه السطر التالى Sub ترحيل() Application.ScreenUpdating = False With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row End With End Sub الجديد هو هذا السطر Lr = .Cells(.Rows.Count, "D").End(xlUp).Row عملنا متغير اسمه LR ويمكنك تغيير الى ما تريد من الاحرف حسب مزاجك حضرتك طيب وعرفناه انه عبارة عن اخر خليه بها بيانات فى عمود D من شيت حركة الخزينة وهى هنا كما هو بالصورة عليه الخلية D4 مكتوب فيها " رصيد افتتاحى" واحد هيقولى مش فاهم هوضح له اكتر مثلا عايز اقول ان " الاستاذ الكبير العلامه ياسر خليل العبقرى" = r فبدل كل شوية ما اكتب الجمله دى " الاستاذ الكبير العلامه ياسر خليل العبقرى " وتاخد منى وقت استعيض عنها بى r فقط / على طول الكود هيفهم معناها خامسا : اضافه السطر التالى Sub ترحيل() Application.ScreenUpdating = False With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row .Cells(Lr + 1, "A") = [D8] End With End Sub ما هو الجديد الجديد هذا السطر [Cells(Lr + 1, "A") = [D8. ماذا يعنى الجزء الاول و هو.("Cells(Lr + 1, "A. (العمود, الصف)Cells. الصف هو Lr+1 يعنى Lr هى اخر صف فى العمود D من شيت حركة الخزينة فيه بيانات ( طيب انا عايز بقى السطر اللى بعده يبقى اقول Lr+1 طيب والعمود هو A وتم كتابته بين علمتى تنصيص "A" ( شيفت + حرف الطاء بالكيبور) طيب عمود A ده عايزين يروح له التاريخ اللى بسند القبض / والتاريخ اللى بسند القبض موجود بالخلية D8 صح اذن اقول [Cells(Lr + 1, "A") = [D8. وهكذا كما هو موضح بالكود يتم ترحيل كامل بيانات السند ثم نغلق With ب End With Sub ترحيل() Application.ScreenUpdating = False With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row .Cells(Lr + 1, "A") = [D8] .Cells(Lr + 1, "B") = [G7] .Cells(Lr + 1, "D") = [D10] .Cells(Lr + 1, "G") = [d11] .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" End With End Sub اضغط على زر الترحيل ستجد البيانات تم ترحيلها ارجوا من الله ان اكون وفقت فى هذا الشرح ويستفيد منه الجميع ان احسنت فمن الله وما توفيقى الا بالله وان اخطأت فمن نفسى والشيطان وارجوا من الاساتذه الافاضل مراجعه الشرح وتصحيح ما به من أخطأ ولى رجاء من ادارة المنتدى جعل التعديل على الشرح متاح لى حتى يتثنى لى اضافه بعض الاشياء الاخرى تخص نفس الموضوع انا استكفيت بهذا القدر حتى يكون سهل على الاعضاء اللى عايز يطبق وان شاء الله سوف نكمل ما بدأناه تقبلوا منى وافر الاحترام والتقدير خزينة.zip 7
محمد عبد المجيد ( أبو حمزة ) قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 (معدل) ما شاء الله عليك ، أستاذي الحبيب / حسام ، زادك الله حرصاً على المسارعة في الخيرات ونفع إخوانك ، شرح بسيط وسهل ورائع ، أسال الله التوفيق والسداد و إكمال هذا الموضوع الرائع . جزاكم الله الفردوس تم تعديل يناير 5, 2015 بواسطه محمد عبد المجيد ( أبو حمزة ) 2
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 استاذ / محمد عبدالمجيد يالا يا كبير فيد الاخوة كما استفد انت بقيت استاذ كبير المنتدى زاد عالم اسمه محمد عبدالمجيد يالا ورينى الهمه وعلى فكرة انا مش ناسى البرنامج فينه عايز اشتغل عليه واستفيد منه شكرا على مرورك العطر وتقبل تحياتى 1
سيف الدين حسام قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 أخى الكريم محمد عبد المجيد ( أبو حمزة ) فكرة رائعة - سلسلة دروس - سلسلة علمنى كيف اصطاد - الترحيل نرجوا من ادارة المنتدى تثبيت تلك الدورس - ليتفاعل عليها السادة الاعضاء ونتعلم كل ما يخص الترحيل 1
سيف الدين حسام قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 (معدل) استاذ / محمد عبدالمجيد يالا يا كبير فيد الاخوة كما استفد انت بقيت استاذ كبير المنتدى زاد عالم اسمه محمد عبدالمجيد يالا ورينى الهمه وعلى فكرة انا مش ناسى البرنامج فينه عايز اشتغل عليه واستفيد منه شكرا على مرورك العطر وتقبل تحياتى مرحب بأستاذنا الصقر الجريـح تم تعديل يناير 5, 2015 بواسطه يبف الدين حسام
سيف الدين حسام قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 ممكن توضيح للسطر .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]"
ياسر خليل أبو البراء قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 تسلم أخي حسام على هذه السلسلة الرئعة بارك الله فيك وجعل أعمالك في ميزان حسناتك يوم القيامة 1
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 ممكن توضيح للسطر .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" اخى الكريم دى معادله اصبر على رزقك متستعجلش ان شاء الله هنشرحها
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 استاذنا الكبير ياسر خليل مرورك العطر شرف للموضوع وارجوا لا تحرمنا من اى اضافه تقبل احترامى وتقديرى
محمد عبد المجيد ( أبو حمزة ) قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 استاذ / محمد عبدالمجيد يالا يا كبير فيد الاخوة كما استفد انت بقيت استاذ كبير المنتدى زاد عالم اسمه محمد عبدالمجيد يالا ورينى الهمه وعلى فكرة انا مش ناسى البرنامج فينه عايز اشتغل عليه واستفيد منه شكرا على مرورك العطر وتقبل تحياتى شكر الله لك أستاذي الحبيب ، الكلام ده كبير علي ، أسأل الله تعالى أن أكون خيرا مما تظنون جزاك الله خيرا ، إن شاء الله ترى البرنامج قريبا . 1
ياسر خليل أبو البراء قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" أصل المعادلة في ورقة العمل المسماة (حركة الخزينة) في الخلية E5 مثلاً هي بالشكل التالي : =E4+G5-F5 لتحويل هذه المعادلة إلى كود يتم الإشارة للصفوف والأعمدة ... R هو اختصار لكلمة Row بمعنى صف. C هو اختصار لكلمة Column بمعنى عمود. استخدمت أقواس التنصيص للإحاطة بالمعادلة التي تبدأ بعلامة يساوي. الخلية التي بها المعادلة هي كما قلنا مثلاً E5 ، وأول خلية في المعادلة E4 ، فالسؤال هو : ما هو موقع الخلية E4 من الخلية E5؟ الإجابة : موقع الخلية E4 في الصف السابق (ولذا ستجد -1 ) لأننا نرجع للخلف ، هذا بالنسبة للصف أما العمود فهو نفس العمود ، ولذلك لم يتم إضافة أية أرقام للعمود. بالتالي تصبح الخلية E4 في المعادلة مساوية لهذا الجزء في الكود : R[-1]C الخلية الثانية في المعادلة هي G5 ، ونسأل نفس السؤال ما هو موقع الخلية G5 من الخلية التي بها المعادل E5؟ نلاحظ رقم 5 أي أنهما في نفس الصف ، ولكن العمود مختلف .. العمود G يبعد عن العمود E بمقدار عمودين ، أي أنه إذا بدأنا العد من العمود F أي العمود الذي يلي العمود الحالي سنقول : العمود F ثم العمود G (إذاً قيمة الإزاحة هي 2) بالتالي تصبح الخلية G5 في المعادلة مساوية لهذا الجزء في الكود : RC[2] وأترك لك النظر في الخلية F5 في المعادلة.. أرجو أن تكون الفكرة قد وصلت.. 2
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 حبيبى واستاذى الكبير ياسر خليل انا سعيد جدا بمشاركتك . ايوة كدا متحرمناش منك انت فاكهة المنتدى الموضوع كدا بقى شكله حلو وله طعم بعد اضافاتك الاكثر من رائعه انتى مصبحتش عليا النهارده وبقالى كام يوم مسمعتش صوتك بس بعد الشرح الرائع ده انا مش زعلان تقبل تحياتى يا غالى 1
ياسر خليل أبو البراء قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 اعذرني أخي حسام شوية مشاغل ، وبيني وبينك أنا مشغول بالمكتبة شوية لحد ما المشروع يقف على رجليه.. وفي انتظار مساهمات منك يا كبير أرجو المساعدة في إتمام المشروع .. وبعدين القلوب مصبحة يا كبير تقبل صباحي 1
محمد الريفى قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 اخى فى الله اخى الحبيب حسام عيسى جزاكم الله خيرا على هذا الشرح الرائع والمبسط زادك الله علما وقدرا
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 استاذى الفاضل محمد الريفى مرورك اسعدنى جدا - و ارجو منك لا تحرمنا من اضافاتك بخصوص الترحيل تقبل منى وافر الاحترام والتقدير
سيف الدين حسام قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 وصلت الفكرة ببساطة لكن عن السريال هل ممكن توضح لنا كيف يتم تحديث رقم الايصال تلقائيا ( السريال )
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 استاذ يبف الدين ليه مستعجل على رزقك وحده وحده ان شاء الله تعرف كل شئ ولن نبخل عليك بما تعلمناه هل قمت اولا بتطبيق كود الترحيل وعمله واتقانه لو دا تم ان شاء الله انتظر منى شرح لكيفية عمل سريال للسند تلقائى تقبل تحياتى
سيف الدين حسام قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 استاذ يبف الدين ليه مستعجل على رزقك وحده وحده ان شاء الله تعرف كل شئ ولن نبخل عليك بما تعلمناه هل قمت اولا بتطبيق كود الترحيل وعمله واتقانه لو دا تم ان شاء الله انتظر منى شرح لكيفية عمل سريال للسند تلقائى تقبل تحياتى شكرا لك اخى الصقر الجريح لكن الاسم سيف الدين - مش عارف ليه فى المنتدى بتظهر يبف - مستخسرين فيا اللقب زى السجل المدنى - لأنه كنايتى لأنى تمنيت أن ارزق بولد وأسميه سيف الدين - لكنهم رفضوا الاسماء المركبة فى السجل المدنى فسميته محمد - وانا معك حتى النهاية حتى اشرب الاكواد كلها - مش الترحيل فقط تقبل تحياتى ولا تيأس منى
الصـقر قام بنشر يناير 5, 2015 الكاتب قام بنشر يناير 5, 2015 اخى الكريم يمكنك تعديل الاسم من الصفحه الشخصية الخاصه بك
الجموعي قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 أستاذي الفاضل / حسام بارك الله فيك على هذا الشرح الرائع زادك الله علما ونورا وجعله فى ميزان حسناتك تحياتي 2
ابراهيم الحداد قام بنشر يناير 5, 2015 قام بنشر يناير 5, 2015 بارك الله فيك . عندما تجتمع كل هذه الجواهر فى منتدى واحد فهذا يعنى اننا على الطريق الصحيح 2
سيف الدين حسام قام بنشر يناير 6, 2015 قام بنشر يناير 6, 2015 استاذى الصقر الجريح لقد قمت باعداد وتطبيق الكود الذى شرحته وفهمت معناه جزيا خيرا لكن كيف احدد له اختيار الترحيل اذا كان التوريد شيك وليس مبلغ نقدى كذلك تحديث رقم الايصال السريال كيف تم اعداده ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ أنا الان على الطريق الصحيح بفضل ( الله ) ثم هذا الصرح العلمى الهائل
الصـقر قام بنشر يناير 6, 2015 الكاتب قام بنشر يناير 6, 2015 الاخوة الكرام اقدم لكم بقية لدرس الترحيل كيفية وضع شروط تجبر المستخدم على ادخال بيانات مما لا شك فيه ان سند القبض اللى بصورة التالية لابد من ادخال جميع البيانات اللى بالسند وهى المظلله باللون الاصفر رقم الايصال بالخلية [G7] تاريخ السند بالخلية [D8] الجهه التى تم القبض منها بالخلية [D10] المبلغ المقبوض بالخلية [D11] ان شاء الله اليوم بنتعرف كيف يمكن اجبار المستخدم على ادخال البيانات قبل ترحيلها فلا يعقل مثلا ان يقوم المستخدم بعدم كتابه تاريخ للسند ويترك الخلية فارغه بدون تاريخ ثم يقوم بالترحيل لازم اجبره على ادخال التاريخ اولا: اجبار المستخدم على ادخال رقم الايصال بالخلية [G7] هنستخدم السطر التالى بالكود If [g7] = "" Then MsgBox "الرجاء ادخال رقم الايصال": Exit Sub هذا السطر يتم اضافتة بعد هذا السطرمن الكود Application.ScreenUpdating = False ليصبح هكذا Sub ترحيل() Application.ScreenUpdating = False If [g7] = "" Then MsgBox "الرجاء ادخال رقم الايصال": Exit Sub With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row .Cells(Lr + 1, "A") = [D8] .Cells(Lr + 1, "B") = [g7] .Cells(Lr + 1, "D") = [D10] .Cells(Lr + 1, "G") = [d11] .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" End With End Sub تعالى بقى نشرح معنى هذا السطر If [g7] = "" Then MsgBox "الرجاء ادخال رقم الايصال": Exit Sub هذا السطر من الكود معناه ببساطه كدا ان لو الخلية [g7] فارغه اكتب رساله تظهر للمستخدم تنبهه بان الخلية فارغه ويجب ادخالها و اخرج من الكود ومتكملش الشىئ الذى تريد تنفيذه then الشرط المطلوب التحقق من وجوده if استخدمنا هنا IF وذالك لعمل شرط قبل عملية الترحيل وهى كما نعرف جميعا ان iF معناها لو then معناها تنفيذ الشرط الذى نريده كما اتفقنا من قبل هو عدم ترك الخلية [g7] فارغه اللى بيسجل بها رقم الايصال الكود هيقوم باختبار الشرط التالى "" = [if [g7 "" العلامه هذا بالكود تعنى فارغ ( فلو [g7] تساوى فارغ نفذ كذا كذا ) نفذ دى فى الكود هى Then وسيكون لونها بالكود ازرق هينفذ ايه بقى انا عايزة يظهر رساله وهى " الرجاء ادخال رقم الايصال" ونلاحظ انها مكتوبه بين علمتى تنصيص ( تكتب من خلال شيفت + حرف ط بالكيبور) وهينفذ ايه تانى غير الرساله هينفذ خروج من الكود ميكملش يعنى ودى بتكون exit sub : وبعدها كتابتها ستجد ان لونها اصبح ازرق لمتابعه شرح عن كتابة الرسائل فى لغة البرمجه يرجى مراجعه الرابط التالى ستجد شرح باستفاضه http://www.officena.net/ib/index.php?showtopic=57199&hl= ) ثانيا : عايزين نجبر المستخدم على ادخال التاريخ If [d8] = "" Then MsgBox "الرجاء ادخال تاريخ لسند القبض": Exit Sub هو نفس السطر السابق بس بنختبر الخليه [d8] فيها تاريخ ام لا ثالثا : اجبار المستخدم على ادخال الجهه التى تم الاستلام منها If [d10] = "" Then MsgBox "الرجاء ادخال اسم الشخص الذى تم الاستلام منه": Exit Sub رابعا: اجبار المستخدم على ادخال المبلغ المقبوض If [d11] = "" Then MsgBox "الرجاء ادخال المبلغ المقبوض": Exit Sub وهيكون الكود فى شكله النهائى كالتالى Sub ترحيل() Application.ScreenUpdating = False If [g7] = "" Then MsgBox "الرجاء ادخال رقم الايصال": Exit Sub If [d8] = "" Then MsgBox "الرجاء ادخال تاريخ لسند القبض": Exit Sub If [d10] = "" Then MsgBox "الرجاء ادخال اسم الشخص الذى تم الاستلام منه": Exit Sub If [d11] = "" Then MsgBox "الرجاء ادخال المبلغ المقبوض": Exit Sub With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row .Cells(Lr + 1, "A") = [d8] .Cells(Lr + 1, "B") = [g7] .Cells(Lr + 1, "D") = [d10] .Cells(Lr + 1, "G") = [d11] .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" End With End Sub يعنى الكود قبل الترحيل هيعمل اربع اختبارات الاول هيمسك اول سطر بتاع رقم الايصال لو موجود ينتقل للسطر اللى بعده ولو مش موجود هبخرج من الكود ومش هيكمل وهكذا ما باقى الاسطر الين يتحقق من وجود بينات بالاربع خلايا ثم يقوم بعمليه الترحيل خامسا : هل يمكن عمليه الاختبار بسطر واحد بدلا من اربع اسطر نعم يمكن ذالك من خلال السطر التالى If [g7] = "" Or [d8] = "" Or [d10] = "" Or [d11] = "" Then MsgBox "الرجاء ادخال جميع بيانات السند": Exit Sub هنا تم استخدام داله OR وهى تعنى أو لو الخلية اللى بها رقم الايصال فارغه أو الخلية اللى بها التاريخ فارغه او الخلية اللى بها الجهه التى تم استلام المبلغ منها أو الخلية اللى بها المبلغ فارغه نفذ رساله ثم اخرج من الكود ومتكملش ويكون الكود بشكله النهائى كالتالى Sub ترحيل() Application.ScreenUpdating = False If [g7] = "" Or [d8] = "" Or [d10] = "" Or [d11] = "" Then MsgBox "الرجاء ادخال جميع بيانات السند": Exit Sub With Sheet4 Lr = .Cells(.Rows.Count, "D").End(xlUp).Row .Cells(Lr + 1, "A") = [d8] .Cells(Lr + 1, "B") = [g7] .Cells(Lr + 1, "D") = [d10] .Cells(Lr + 1, "G") = [d11] .Cells(Lr + 1, "E") = "=R[-1]C+RC[2]-RC[1]" End With End Sub وفى النهاية ارجوا ان اكون وفقت بالشرح واتمنى ان يستفيد منه الجميع تقبلوا منى وافر الاحترام والتقدير 7
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.