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

طلب مساعدة في الاكواد


aboghazi

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

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

بعد شكري وتقديري لكل اساتذة المنتدى والقائمين عليه
اود تكرمكم بعمل اكواد للبرنامج المرفق حيث الاسئلة  في صفحة المطلوب
    البرنامج1.rar

وجزاكم الله خير

البرنامج1.rar

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

اخي ابوعيد الكود لا يعمل
إذا قمت بمسح خانة التاريخ في صفحة اس اف وادخلت البيانات في التقرير اليومي وحاولت تنفيذ الكود

ولكن عندما  اكتب في خانة التاريخ في صفحة اس اف المعادلة  () today =   وانفذ يعمل ويقوم بالترحيل

*  ووجدت انه ينفذ الكود ولكنني اريد أن يكون اذا رحلت البيانات المطلوبه الى  الصفحة اس اف  مباشرةً يضيف التاريخ وياليت يكون هذا الكود مستقل 

لانني لو كان التاريخ خطأ ( احياناً يجث بسبب رؤيةالهلال كما تعلم ) استطيع ان اعدلهادخل التاريخ >

ولو تكرمت تشرح الاكود فمنكم نتعلم وتعم الفائدة لجميع الاخوةالاعضاء.

 

واكرر تقديري وشكري لك

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

 

اكرر تقديري وشكري لك

اخي ابوعيد  جزاك الله خير 

الكود رائع كتواجدك .

ولكن اذا تكرمت ممكن تشرح الكود لاني ارى انه يستحق ذلك جعله الله في ميزان حسناتك

وايضا لو اردت تغيير الخلايا المرحلة جميعها او بعضاً منها الى الصفحة اس اف فلن اعرف كيف اعمل ذلك بدون فهمي لعمل الكود 

وسامحني تعبتك معاي

وفقك الله 

تم تعديل بواسطه aboghazi
رابط هذا التعليق
شارك

السلام عليكم

أخي أبوغازي تفضل الشرح

الكود يتكون من جزئين

الجزء الأول يتم تنفيذه آليا عند فتح المصنف ووظيفته هي كتابة التاريخ في ثلاثة خلايا وهي C3 ,  D3 ,  F3 الموجود في شيت التقرير اليومي

وهو كالآتي :

Sub Auto_open()

يعنى اجعل هذا الكود ينفذ آليا عند فتح المصنف

Sheets(2).[d3] = Date

اذهب للشيت رقم 2 ( التقرير اليومي ) وضع التاريخ في الخلية D3

 

Sheets(2).[f3] = "الموافق " & Format(Date, "yyyy/m/d")

اذهب للشيت رقم 2 وضع في الخلية  F3 كلمة (موافق) وبجانبها التاريخ ولكن بالصيغة المبينة

Sheets(2).[c3] = Format(Date, "ddd")

اذهب للشيت رقم 2 وضع التاريخ في الخلية C3  ولكن بالكتابة وليس بالرقم ( يعني سبت , أحد وهكذا )

 

End Sub

انهاء الكود

الجزء الثاني : يتم فيه ترحيل البيانات من التقرير اليومي إلى شيت اس اف

وهو كالآتي :

Sub sf()

هذا الإجراء قمت أنا بتسميته بـ sf وبإمكانك أن تسميه بما شئت

Dim t As Integer, w As Integer, t1 As Integer, t2 As Integer, lr1 As Integer, u As Integer

الإعلان عن المتغيرات في هذا الكود

lr1 = Application.WorksheetFunction.Count(Sheets(3).Range("B6:B35"))

تطلب من الإكسل أن يحسب لك عدد الخلايا التي تحتوى على أرقام في النطاق B6:B35 الموجود في الشيت رقم 3 (اس اف)

For u = 6 To lr1 + 6

عمل حلقة تكرارية تبدا من اول سطر في النطاق B6:B35 إلى آخر سطر فيه

If Sheets(3).Range("B" & u).Text = Sheets(2).Range("D3").Text Then

ابحث في النصوص الموجودة في الشيت رقم 3 في النطاق B6:B35 فعندما يوجد نص مطابق للنص الموجود في الشيت رقم 2 والخلية D3 اعرض هذه الرسالة : لا يمكن الترحيل

 

MsgBox لا يمكن الترحيل""

وهذا يعنى أنه إذا وجد البرنامج التاريخ قد تم إدراجه سابقا فعند الضغط على زر (اس اف) سيقارن الكود هل التاريخ موجود مسبقا أم لا

إذا كان موجود يعنى أنه قد تم الترحيل مسبقا فستظهر رسالة : لا يمكن الترحيل

وبمعنى آخر أن الترحيل يتم مرة واحدة فقط

Exit Sub

ثم انهي العمل (هذا إذا كان التاريخ موجودا من السابق)

End If

Next

أما إذا لم يكن التاريخ موجودا فسيكمل الكود عمله كما في الأسفل

 

Sheets(3).Range("B" & 6 + lr1) = Sheets(2).Range("D3").Value

اذهب إلى أول خلية فارغة في النطاق B6:B35 الموجود في الشيت رقم 3 (الخاص بأول شركة) وضع فيه التاريخ الموجود في الشيت رقم 2 في الخلية D3

Sheets(3).Range("B" & 43 + lr1) = Sheets(2).Range("D3").Value

كرر نفس العمل السابق في النطاق الموجود في الشركة الثانية

Sheets(3).Range("B" & 80 + lr1) = Sheets(2).Range("D3").Value

كرر نفس العمل السابق في النطاق الموجود في الشركة الثالثة

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

نأتي الآن إلى نقل القيم من شيت التقرير اليومي (رقم2) إلى شيت اس اف (رقم 3)

أولا : الشركة الأولى

For t = 6 To 35

عمل حلقة تكرارية تبدأ من السطر رقم 6 إلى السطر رقم 35 وهو الخاص بالشركة الأولى في شيت اس اف

If Sheets(3).Range("B" & t) = Sheets(2).Range("D3").Value Then

إذا وجدت تاريخ في العمود B  الخاص بالشركة الأولى يساوي التاريخ الموجود في الشيت 2 الخلية D3 قم بما يأتي

Sheets(3).Range("C" & t) = Sheets(2).[B6].Value

انقل القيمة الموجودة في الخلية B6  والشيت 2 إلى العمود C  في الخلية المناسبة لها

(وهذا يعني انه سينقل الرقم 1)

Sheets(3).Range("E" & t).Resize(1, 2) = Sheets(2).[D10].Resize(1, 2).Value

انقل القيمتين في الخليتين D10  و E10  إلى المكان الخاص بهما في العمودين E , F

(وهذا يعني انه سينقل الرقمين 2 و 3)

Sheets(3).Range("G" & t) = Sheets(2).[B11].Value

انقل القيمة الموجودة في الخلية B11  والشيت 2 إلى العمود G  في الخلية المناسبة لها

(وهذا يعني انه سينقل الرقم 4)

Sheets(3).Range("H" & t) = Sheets(2).[B13].Value

انقل القيمة الموجودة في الخلية B13  والشيت 2 إلى العمود H  في الخلية المناسبة لها

(وهذا يعني انه سينقل الرقم 5)

 

End If

Next

ثانيا : الشركة الثانية : بنفس العمل السابق

For t1 = 43 To 72

عمل حلقة تكرارية تبدأ من السطر رقم 43 إلى السطر رقم 72 وهو الخاص بالشركة الثانية في شيت اس اف

If Sheets(3).Range("B" & t1) = Sheets(2).Range("D3").Value Then

Sheets(3).Range("C" & t1) = Sheets(2).[B23].Value

Sheets(3).Range("E" & t1).Resize(1, 2) = Sheets(2).[D27].Resize(1, 2).Value

Sheets(3).Range("G" & t1) = Sheets(2).[B28].Value

Sheets(3).Range("H" & t1) = Sheets(2).[B30].Value

End If

Next

ثالثا : الشركة الثالثة : بنفس العمل السابق

For t2 = 80 To 109

عمل حلقة تكرارية تبدأ من السطر رقم 80 إلى السطر رقم 109 وهو الخاص بالشركة الثالثة في شيت اس اف

If Sheets(3).Range("B" & t2) = Sheets(2).Range("D3").Value Then

Sheets(3).Range("C" & t2) = Sheets(2).[B40].Value

Sheets(3).Range("E" & t2).Resize(1, 2) = Sheets(2).[D44].Resize(1, 2).Value

Sheets(3).Range("G" & t2) = Sheets(2).[B45].Value

Sheets(3).Range("H" & t2) = Sheets(2).[B47].Value

End If

Next

MsgBox "تم الترحيل بنجاح"

بعد الانتهاء من الترحيل اعرض هذه الرسالة : تم الترحيل بنجاح

End Sub

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

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

الله يجزاك خير اخي ابو عيد ويجعل ايامك كلها عيد

ولو تكرمت ممكن توضح المتغيرات وما هي وظيفتها في الكود وخاصة lr1 , u 

  Dim t As Integer, w As Integer, t1 As Integer, t2 As Integer, lr1 As Integer, u As Integer

وكذلك  

 Resize

ولا يسعني الا الدعاء لك
وفقك الله 

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

السلام عليكم

أما الأحرف U  LR1  W  t   وغيرها فهي حروف أختارها أنا كما أريد ولكن لابد من إعدائها قيمة وهي تسمى (المتغيرات)

وللمزيد من الشرح ادخل على الرابط الآتي

http://www.officena.net/ib/topic/56941-افتح-الباب-وادخل-لعالم-البرمجة-متخافوش-يا-أحباب-من-اللي-ورا-الباب/?do=findComment&comment=361289

أما تخصوص RESIZE  ادخل على الرابط الآتي

http://www.officena.net/ib/topic/56933-الخاصية-resize-في-لغة-البرمجة/?do=findComment&comment=361221

تحياتي

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

تمت الاستفادة من الرابط الذي ارسلته الله يجزاك خير

 

واذا ممكن تتكرم وتلقي نظره على الملف المرفق وتساعدني فيه

وسامحني على كثرة الاسئلة 

 

سوال للاستاذة الفضلاء.rar

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

السلام عليكم

السؤال الأول مفهوم وتم حله

السؤال الثاني لم يفهم ماذا تقصد بمربع1 . مربع2 

هل الخلية المكتوب فيها رقم 1 أو 2

لاحظ المرفق 

غير الأرقام في الجدول ولاحظ تغيرها في أسفل الجدول

سوال للاستاذة الفضلاء1.rar

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

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

جزاك الله خير اخي ابوعيد على تفاعلك وتحملك كثرة اسئلتي وه1 ان دل فا اينما يدل على كرم اخلقك ونبلك.

تمت ملاحظة الفرق في السؤال الاول وتم المطلوب فجزاك الله خير.

بالنسبة للسؤال الثاني اقصد انني لو اردت ادخال بيانات عن طريق نفس فورم الادخال   وهي بيانات مختلفة عن ماتم ادخاله مسبقاً في المربعات التي رسمتها مسبقاً

هل استطيع  حاولت ولم استطع عملها لاني محكوم بهذا الجدول . 

ولو كانت هناك طريق اخرى تجدونها افضل  فياليت تدلوني عليها

اما السؤال الثالث  pdf تحويل الصفحة الى PDF للمعاينة ثم استطيع الطباعة

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

السلام عليكم

السؤال الثاني لا زال غير واضح

الفورم يحتوي على كثير من textbox ولكل واحدة منها رقم

حدد القيم التي تريد إظهارها في الشيت , اكتب مثلا

أريد أن يظهر محتوى textbox 1 و  textbox 2 في الخلية F18     (لأن هذه الخلية فيها قيمتين)

وأن يظهر محتوى textbox 4 و  textbox 5  و textbox 8  في الخلية F19  (لأن بها ثلاث قيم)

 

أما حل السؤال الثالث print   view  تجده في المرفق

 

سوال للاستاذة الفضلاء2.rar

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

هلا باخي كريم الاخلاق ابوعيد

نعم اخي قمت بتجربته 

والذي فهمته وتعلمته من ما سطرت يداك وفقك الله 

الخلية 18يساوي المدخل في  يساوي المدخل في B6          و    البيع في ساعة الافتتاح  = المدخل في  B7

وبنفس الطريقة الخلية F19 .

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

و F19 بواقع ثلاثة من المدخلات الطلبات المستعجلة و الطلبات المنتظرة والبيع المتوقع غداُ

وجميع المدخلات في  F18,19  مختلفة وليس لها علاقة بالارقام المدخلة سابقا في الخلاياB6:D19 .

ارجو ان اكون قد وفقت في التوضيح.

عظيم الشكر والتقدير للإهتمامك ومساعدتك وجزاك الله خير 

 

فيه نقطة ثانية يا استاذي الفاضل خطرت في بالي اتمنى مساعدتي في انجازها وهي

طبعاً البيانات تدخل لعدد 3 شركات وهذا يعني انني احتاج الى 3 فورم ادخال فهل استطيع ان اجعل فورم الادخال واحد فقط ومنه اختار الشركة التي اريد ان ادخل بياناتها ومن ثم الفورم مباشرة يبدأ في التعامل مع ادخالات الشركة المحددة .

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

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