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

مطلوب مساعدة -فاتورة بيع ترحل الى يومية مبيعات


الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

مطلوب مساعدة - فاتورة بيع ترحل الى يومية مبيعات

واعطاء الفاتورة التالية رقم مسلسل تلقائى

 

واشكركم فاتورة ويومية مبيعات.rar

 

رابط هذا التعليق
شارك

السلام عليكم

تفضل أخي الملف وبه ماطلبت

الأخ الحبيب والأستاذ الكبير والعالم الذي أتعلم منه دائما

لا يسعني إلا أن أنحني أمامك تقديرا لك

عمل رائع كعادتك دائما مبدع يا باشمهندس

رابط هذا التعليق
شارك

اخى واستاذنا طارق

بالفعل كما قال اخى ياسر

دائما ما نتعلم منك

ودائما ما تبهرنا باعملك

لما فيها دائما من جديد

بارك الله فيك

رابط هذا التعليق
شارك

السلام عليكم

تفضل أخي الملف وبه ماطلبت

اخى واستاذنا طارق

ممكن لو سمحت شرح الكود ان امكن

وبالاخص

 n = LR - 17
 nr + n - 1

تقبل تحياتى

رابط هذا التعليق
شارك

السلام عليكم

ممكن لو سمحت شرح الكود ان امكن
وبالاخص
 n = LR - 17
 nr + n - 1

 

 

أخي العزيز

السطر التالي من الكود يتم تنفيذه أثناء تنشيط الورقة الأولي "فاتورة بيع"

    Dt = [J12]: BillN = [F14]: Tr_C = [J14]: Clnt = [J15]: n = LR - 17
وهو عبارة عن 5 أوامر مجتمعة يكافيء التالي
   Dt = [J12]
 BillN = [F14]
 Tr_C = [J14]
 Clnt = [J15]
 n = LR - 17

وكل جزء يأخذ قيمة من الورقة ويسجلها لنقلها فيما بعد للورقتين التاليتين
أما الجزء n = LR - 17 بالتحديد فهو يعتمد علي أن أول بيانات مكتوبة بالورقة ستكون بالصف 18 
فإذا لم يكتب بالفاتورة غير صنف واحد فيكون آخر صف LR = 18 وستأخذ  القيمة n = 18 - 17 =1 وهكذا

فالمتغير n يعبر عن عدد الأسطر في الفاتورة

=======================


الشق الثاني
nr + n - 1

وهذا يحدث في الورقتين الأخريتين بعد أن تكون نسخت البيانات وسجلتها كما سبق

ولفهم هذه الجزئية لترجع قليلا في الكود ستجد الأوامر كالتالي

nr = [F9999].End(xlUp).Row + 1

أي أن nr سيأخذ قيمة رقم الصف الجديد الجاهز للبيانات في تلك الورقات new row

وعند الخلية التي بهذا السطر الجديد وتكون بالعمود F يتم لصق قيم لماسبق نسخه

        Cells(nr, "F").PasteSpecial Paste:=xlPasteValues
 
ثم بفرض أن عدد أسطر الفاتورة التي يتم نقلها 3
إذن الصيغة التالي
        Range("E" & nr & ":E" & nr + n - 1) = Clnt
تضع قيمة العميل Clnt في الأسطر الثلاثة بالعمود E والتي تبدأ من الصف الجديد الجاهز للبيانات 
مثلا إذا آخر الصف الجديد الجاهز للبيانات =20 وعدد أسطر الفاتورة التي يتم نقلها = 3
إذن        Range("E" & nr & ":E" & nr + n - 1) = Clnt
تعني         Range("E" & 20 & ":E" & 20 + 3 - 1) = Clnt
أي    Range("E20:E22") = Clnt
رابط هذا التعليق
شارك

اخى طارق

السلام عليكم ورحمة الله وبركاته

بالفعل والله كما قلنا سابقا

دائما مانتعلم منكم كل ماهو جديد

بارك الله فيك اخى الحبيب

تقبل تحياتى

رابط هذا التعليق
شارك

  • 2 months later...

الاستاذ الفاضل طارق محمود
 
اعذرنى أن كنت تأخرت فى المشاركة والتفاعل لأنى مبتدأ فى تحرير الاكواد
ويرجع الفضل للاخ الفاضل الصـقر  فى تشجيعى وتبسيط الامر لى
لكنى الان حاولت دراسة وفهم - الكود اللى حضرتك كتبته  لكن الجزئية دى ممكن حضرتك توضحها لى

 

      For Each cl In Range("B" & nr & ":B" & nr + n - 1)
            cl.Value = cl.Offset(-1, 0).Value + 1

 

تقبل تحياتى

رابط هذا التعليق
شارك

ويرجع الفضل للاخ الفاضل الصـقر  فى تشجيعى وتبسيط الامر لى
لكنى الان حاولت دراسة وفهم - الكود اللى حضرتك كتبته  لكن الجزئية دى ممكن حضرتك توضحها لى
 
      For Each cl In Range("B" & nr & ":B" & nr + n - 1)
            cl.Value = cl.Offset(-1, 0).Value + 1
 

 

 

السلام عليكم

أخي الكريم

أهلا بك ومرحبا دائما

والشكر موصول لأخونا الغالي / الصـقر  ، جزاه الله خيرا وجعل جهده في ميزان حسناته

================

أخي الكريم
مرة أخري لفهم هذه الجزئية ترجع قليلا في الكود ستجد الأوامر كالتالي
nr = [F9999].End(xlUp).Row + 1
أي أن nr سيأخذ قيمة رقم الصف الجديد الجاهز للبيانات في تلك الورقات new row
وأيضا كما سبق ، الجزء n = LR - 17 يعتمد علي أن أول بيانات مكتوبة بالورقة ستكون بالصف 18 
علي أساس أن LR = Last Row
 
ولفهم الجزء الذي تسأل عنه ، نفرض أن آخر سطر به بيانات منقولة في تلك الورقة مثلا السطر رقم 25
أي أن nr سيأخذ قيمة رقم 25+1 = 26 مثلا
و n مثلا =7
إذن
For Each cl In Range("B" & nr & ":B" & nr + n - 1)
تكون
For Each cl In Range("B" & 26 & ":B" & 26 + 7 - 1)
أي
For Each cl In Range("B26:B32)
تكون معناها أن إفعل التالي لكل عنصر من عناصر من خلايا النطاق B26:B32     (العنصر هنا هو cl أي الخلية )
والتالي المقصود هو
cl.Value قيمة الخلية = cl.Offset(-1, 0).Value قيمة الخلية التي تسبقها في العمود وفي نفس صفها + 1
كل خلية تجعل قيمتها تساوي قيمة الخلية التي تعلوها في نفس العمود وتزيد عليها 1

طبعا أنت تعرف ان الدالة Offset تحرك المؤشر من الخلية cl إلي تلك التي تبعد عنها بمقدار صف واحد للأعلي -1 وفي نفس العمود 0 

يعني في مثالنا هذا 

B26 سوف تساوي B25+1

و B27 سوف تساوي B26+1

و B28 سوف تساوي B27+1

وهكذا حتي B32

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information