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

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

قام بنشر
  في 13‏/11‏/2016 at 07:11, جلال الجمال_ابو أدهم said:

الزباري

أبو حنــــين

جزاكم الله خيرا 
موضوع شيق و اثنين محترمين
تحياتى

 

Expand  

يسعدنا تواجدك معنا يا أبو أدهم..

بس شفت عرض أبوحنين (اشتر واحدة وباقي الكمية مجاناً).. يا بلاش.

تحياتي للجميع

  • Like 1
قام بنشر
  في 13‏/11‏/2016 at 10:14, الزباري said:

يسعدنا تواجدك معنا يا أبو أدهم..

بس شفت عرض أبوحنين (اشتر واحدة وباقي الكمية مجاناً).. يا بلاش.

تحياتي للجميع

Expand  

أبو حنــــين

حبيبنا يرد انا مش هقول حاجه
جزاكم الله خيرا 
تحياتى

 

قام بنشر

السلام عليكم جميعا

 

  في 13‏/11‏/2016 at 10:14, الزباري said:

بس شفت عرض أبوحنين (اشتر واحدة وباقي الكمية مجاناً).. يا بلاش.

Expand  

عرض مغري و محدود من تاريخ 2100/01/01   الى    2199/12/31   :Rules: و الكمية محدودة   و الرجاء من الزبائن عدم التدافع و احترام الطابور  :wallbash: . الكل حياخد نصيبو . :clapping:

******************************************

تم استدارك الخطأ و استرجاع الاموال الضائعة من المصيبة الى فاتت

مع بحث و تعديل فاتورة

ارجو التجربة لاستدراك الاخطاء

 

5-فاتورة.rar

  • Like 1
قام بنشر

يعني انك عامل عرض للأجيال القادمة.. تجربة رائعة جداً.. أهنيك عليها.

الكود الذي تعاملتَ به كالتالي:

Last = Cells(Rows.Count, 1).End(xlUp).Row + 1
iNane = Target.Offset(, 1).Value
For R = 9 To Last
If CStr(Cells(R, 2).Value) = iNane Then
Cells(R, 2).Offset(, 1).Value = Cells(R, 2).Offset(, 1).Value + Val(Qn)
Cells(R, 2).Offset(, 3).Value = Cells(R, 2).Offset(, 1).Value * Cells(R, 2).Offset(, 2).Value
Cells(Last, 5).Value = WorksheetFunction.Sum(Range("E9:E" & Last - 1))
Exit Sub
End If
Next

معادلات سليمة ومجموع سليم وكله تمام التمام

 

أما أنا فقد استخدمت الكود التالي:

Range("a8").Select
Do Until ActiveCell.Value = ""
If ActiveCell.Offset(0, 1).Value = Target.Offset(0, 1).Value Then
ActiveCell.Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value + qty
ActiveCell.Offset(0, 4).Value = ActiveCell.Offset(0, 2).Value * ActiveCell.Offset(0, 3).Value
Cells(r, 5) = Cells(r, 5) + qty * ActiveCell.Offset(0, 3).Value
Exit Sub
End If
ActiveCell.Offset(1, 0).Select
Loop

المرفق:

فاتورة ديناميكية3.rarFetching info...

المهمة التالية:بعد إذن أستاذي أبوحنين.. إذا أمكن عمل الترحيل بزر منفصل وعدم دمجها في الفاتورة جديدة.. وذلك بسبب التطرق إلى بعض الكودات اللي عاوز أتحداك بيها ولإعطاء الفاتورة نوع من الديناميكية المرنة.. 

001.png

قام بنشر

مرحبا 

هذا كود حاص بالترحيل

Sub tarhil()

If Cells(9, 1).Value = "" Then Exit Sub
With Application
	.ScreenUpdating = False
	Range(Cells(9, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 5)).Copy _
	Sheet2.Range("F" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1)
	R1 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
	R2 = Sheet2.Cells(Rows.Count, 6).End(xlUp).Row
	Range("A5:E5").Copy Sheet2.Range("A" & R1 & ":E" & R2)
	.CutCopyMode = False: .ScreenUpdating = True
End With

End Sub

 

  • Like 1
قام بنشر

اخى الزبارى

اخى ابو حنين

ماشاء الله عليكو

اكواد ف غايه الروعه والجمال

.............

اخى الزبارى

ليش يا اخى ما اعتمدت على كود الصنف فى احضار بياناته

تسهيلا على المستخدم

يعنى اكتب مثلا a001 يكتب هو برتقال ويكتب السعر 100

اعتقد كده هيكون اسرع فى توفير الجدهد والوقت

تقبلو تحياتى

قام بنشر (معدل)

أخي ابراهيم أبوليله..

حرصنا في هذا المثال بأن تكون هناك أفكار غير مألوفة للكود، وإلا ما قلته متداول بكثرة في هذا المنتدى،فالتعامل مع المرجع خاص بالقوائم الكبيرة مع استخدام جهاز الاسكنر، والقائمة التي لدينا صغيرة، ومن الصعوبة بمكان تذكر هذه المراجع في حال أن لديك أكثر من 100 صنف، تابعنا إلى النهاية حتى نقوم بتكبير القائمة ومن ثم سنلبي طلبك في الموضوع، حتى تتضح الرؤية ، فمش مهم تكون محترف vba ولكن مهم يكون عندك معلومات عن vba

تحياتي

تم تعديل بواسطه الزباري
قام بنشر
  في 13‏/11‏/2016 at 23:59, أبو حنــــين said:

مرحبا 

هذا كود حاص بالترحيل

Sub tarhil()

If Cells(9, 1).Value = "" Then Exit Sub
With Application
	.ScreenUpdating = False
	Range(Cells(9, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 5)).Copy _
	Sheet2.Range("F" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1)
	R1 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
	R2 = Sheet2.Cells(Rows.Count, 6).End(xlUp).Row
	Range("A5:E5").Copy Sheet2.Range("A" & R1 & ":E" & R2)
	.CutCopyMode = False: .ScreenUpdating = True
End With

End Sub

 

Expand  

بصراحة انت تحفة.. ربنا يديم نعمه عليك.

أنا استخدمت الكود التالي لترحيل محتوى الفاتورة فقط:

Dim i As Integer
i = 1
Do
i = i + 1
Loop Until Sheets("sheet2").Cells(i, 1).Value = ""

Sheets("sheet1").Range("a9").Select
Do Until ActiveCell.Value = ""
Sheets("sheet1").Range(ActiveCell, ActiveCell.End(xlToRight)).Copy Sheets("sheet2").Cells(i, 1)
ActiveCell.Offset(1, 0).Select
i = i + 1
Loop

 

قام بنشر (معدل)

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

تم تعديل بواسطه A7med.7amdi
قام بنشر

وقبل أن أنتقل إلى المهمة التالية أطلب من سيادتكم بأن نقسم الترحيل إلى شيتين (ورقتين):

الأول كالتالي:

011.png

والثاني كالتالي:

022.png

والهدف من ذلك هو منع تكرار البيانات مما يساهم في تقليل حجم الملف ، بالإضافة إلى سهولة التعامل معه في عمل التقارير ، وحتى لا يؤدي إلى تداخل البيانات في حال وجود أخطاء غير متوقعة.

قام بنشر
  في 14‏/11‏/2016 at 18:24, A7med.7amdi said:

ياريت الرد علي طلبي لو امكن ذلك

Expand  

لترحيل القيم فقط

Sub tarhil()

If Cells(9, 1).Value = "" Then Exit Sub
With Application
.ScreenUpdating = False
Range(Cells(9, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 5)).Copy
Sheet2.Range("F" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
R1 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
R2 = Sheet2.Cells(Rows.Count, 6).End(xlUp).Row
Range("A5:E5").Copy
Sheet2.Range("A" & R1 & ":E" & R2).PasteSpecial xlPasteValues
.CutCopyMode = False: .ScreenUpdating = True
End With

End Sub

حيث استعملنا PasteSpecial xlPasteValues

  • Like 1
قام بنشر
  في 14‏/11‏/2016 at 17:50, الزباري said:

وقبل أن أنتقل إلى المهمة التالية أطلب من سيادتكم بأن نقسم الترحيل إلى شيتين (ورقتين):

الأول كالتالي:

011.png

والثاني كالتالي:

022.png

والهدف من ذلك هو منع تكرار البيانات مما يساهم في تقليل حجم الملف ، بالإضافة إلى سهولة التعامل معه في عمل التقارير ، وحتى لا يؤدي إلى تداخل البيانات في حال وجود أخطاء غير متوقعة.

Expand  

الكود يصبح بهذا الشكل

Sub tarhil()

If Cells(9, 1).Value = "" Then Exit Sub
With Application
.ScreenUpdating = False
Range(Cells(9, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 5)).Copy _
Sheet2.Range("A" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1)
'___________________________

Range("A5:E5").Copy Sheet3.Range("A" & Sheet3.Cells(Rows.Count, 1).End(xlUp).Row + 1)

Sheet3.Range("F" & Sheet3.Cells(Rows.Count, 5).End(xlUp).Row).Value = _
Range("E" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Value
.CutCopyMode = False: .ScreenUpdating = True
End With

End Sub

 

قام بنشر
  في 14‏/11‏/2016 at 18:45, أبو حنــــين said:

لترحيل القيم فقط

Sub tarhil()

If Cells(9, 1).Value = "" Then Exit Sub
With Application
.ScreenUpdating = False
Range(Cells(9, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 5)).Copy
Sheet2.Range("F" & Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1).PasteSpecial xlPasteValues
R1 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row + 1
R2 = Sheet2.Cells(Rows.Count, 6).End(xlUp).Row
Range("A5:E5").Copy
Sheet2.Range("A" & R1 & ":E" & R2).PasteSpecial xlPasteValues
.CutCopyMode = False: .ScreenUpdating = True
End With

End Sub

حيث استعملنا PasteSpecial xlPasteValues

Expand  

جزاك الله خير اخى الكريم ونفعنا الله بعلمك

قام بنشر

ما نستغنى عنك يا أبوحنين

المهمة التالية:الآن حان وقت وضع بعض القيود.. عاوزين نضع القيود التالية:

1- يمنع إصدار فاتورة جديدة مالم يتم ترحيل الفاتورة.

2- يمنع إضافة صنف إلى الفاتورة بعد ترحيلها.

3- يمنع تكرار  الفاتورة.

 

 

وتقبلوا تحياتي.

  • Like 1
قام بنشر

ما شاء الله ولا حول ولا قوة الا بالله

مشكورين على الجهوذ والدروس القيمة

أسال الله ان يحفظكما  بحفظه وان يجازيكما خيرا وان يزدكما علما

معكما الى النهاية

  • Like 1
قام بنشر

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

اعذرونا على التأخير الشديد بسبب انشغالنا الشديد في الفترة الماضية.

ولقد افتقدنا صديق البرمجة الأخ أبوحنين عسى أن يكون بصحة وعافية وفضل من الله.

من خلال بحثي في وضع شروط لقاعدة بيانات كبيرة، وجدت أن أنسب الطرق وأسهلها هو التعامل مع خواص الزر دون التطرق إلى قاعدة البيانات، مما يجنبك التعامل مع كودات معقدة للتطابق مع الخلايا، فمثلا عند ترحيل أي فاتورة يتم تجميد الزر أو إعطائه لون آخر، فبدلاً من البحث عما إذا تم ترحيل الفاتورة أم لا يتم دراسة حالة الزر كمعيار للترحيل.

في مثالنا هذا تم التعامل مع الخلية G1 كمرجع ، فعند الترحيل يتم إعطائها القيمة True وبذلك نضمن عدم تكرار الترحيل وكذلك إيقاف إضافة أصناف جديدة للفاتورة، وعند الضغط على زر فاتورة جديدة تتغير قيمة G1 إلى False ، ولا يمكن عمل فاتورة جديدة طالما أن الفاتورة فارغة.

قام بنشر

تبقى لنا مهمتين وننهي الدرس بإذن الله تعالى.. تابعونا

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.

×
×
  • اضف...

Important Information