اذهب الي المحتوي
أوفيسنا

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

قام بنشر

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

هل ان أسال سيادتكم عن شرح كيف أقوم بترحيل ناق او صف عن طريق الكود ....

حيث اننى مبتدأفى vba واريد ان افهم هذا الموضوع ...

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

Posting.rar

  • Like 1
قام بنشر

اخي محمد

تفضل المرفق

فيه زرين

الاول للترحيل بدون مسح البيانات المرحلة

الثاني للترحيل مع مسح المبيانات المرحلة

وللتنبيه

فعند خلو اول خلية (A2) من البيانات ستظهر رسالة تنبيهية بعدم وجود بيانات لترحيلها

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

ابواحمد

  • Like 4
قام بنشر

يا استاذ عبدالله

كدة كثير علينا وكثير كمان

ايه الفن ده كله

كوود رائع فعلا

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

استاذ احمد اخجلتمونا فهذا بعض بعض بعض ما عندكم

بارك الله فيك على هذا التشجيع والدعم

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

الله الموفق

شكراً لك اخي إيهاب

ابواحمد

قام بنشر

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

الله الموفق

اخي الاستاذ " ابو احمد " عبد الله المجرب

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

وفقك الله

ابو الحارث

قام بنشر

السلام عليكم

سلمت الانامل استاذ احمد ابو عبدالله

ولاكن استاذي الفاضل انا لم افهم كيفية صياغة اكواد الترحيل

مثلا انا لدي ملف حضور موظفين بالوقت في ورقة

واريد ترحيل البيانات الى ورقة اخرى وهيا عبارة عن جدول

حساب الوقت ومكون من 30 يوم مثلا حضور صباحي وحضور مساء

فترة الصباح تترحل لصف الموظف الاول وفترة المساء تترحل لصف الثالث

بمعنى الترحيل كالاتي

1 - ترحيل فترتين (فترة صباحية - فترة مسائية)

2 - ترحيل حسب تاريخ اليوم

يعني مثل هذا العمل يحتاج الى الغوص عميقا في اكواد الترحيل

وانا مبتدئ جدا في مجال الاكواد

وعلى العموم انا اذا طرحت الملف في المنتدى الكل بيفيدنا ماشاء الله عليهم نوابغ الله يزيدهم

ومانريده فهم الية الكود

بمعنى سطر الكود الاول والسطر الذي يليه شرح السطر السابق

ارجو ان يكون كتابة الاكواد بهذا الشكل كي يستفيد الجميع

استاذي الفاضل ابو عبدالله

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

بمعنى المهم جدا هو الفكره المختصره كيف ستكون ارجو من الجميع التفاعل

والعذر والسموحة على الاطاله

ومنكم نستفيد

ترحيل حضور يومية موظف.rar

  • Like 3
قام بنشر

ومانريده فهم الية الكود

بمعنى سطر الكود الاول والسطر الذي يليه شرح السطر السابق

ارجو ان يكون كتابة الاكواد بهذا الشكل كي يستفيد الجميع

اخي بو نصار هل تريد شرح للكود الموجود في الملف المرفق سطر سطر ؟؟

انا على اتم الاستعداد لذلك.

استاذي الفاضل ابو عبدالله

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

بمعنى المهم جدا هو الفكره المختصره كيف ستكون ارجو من الجميع التفاعل

والعذر والسموحة على الاطاله

ومنكم نستفيد

ملفك المرفق مليان أكواد ومتشبع :wink2:

ما هو المطلوب وماهي شروط الترحيل؟

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

والله الموفق

ابواحمد

قام بنشر

اخي محمد

تفضل المرفق

فيه زرين

الاول للترحيل بدون مسح البيانات المرحلة

الثاني للترحيل مع مسح المبيانات المرحلة

وللتنبيه

فعند خلو اول خلية (A2) من البيانات ستظهر رسالة تنبيهية بعدم وجود بيانات لترحيلها

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

ابواحمد

أخى أبو أحمد ..

جزاك الله عنى خير الجزاء وافادكم الله ... لكن أخى اود أن افهم هذه الاكواد

وما هودورها فى عملية الترحيل .

LR = ws.Range("a" & Rows.Count).End(xlUp).Row

LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row

ws.Range("a2:b" & LR).Copy ws2.Range("a" & LR2 + 1)

وجزاك الله عنى خير الجزاء...

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

أعلم اخى ان اتثاقل عليك ولكنى .. اود ان أفهم واكون مثلكم فى VBA ...

أخوكم MOH250

ترحيل مشروط.rar

  • Like 1
قام بنشر

هذا هو الكود


Sub OFFICNA()

Dim LR As Long, LR2 As Long, ws As Worksheet, ws2 As Worksheet

Set ws = Sheets("Sheet1")

Set ws2 = Sheets("Sheet2")

LR = ws.Range("a" & Rows.Count).End(xlUp).Row

LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row

If ws.Range("a2").Value = "" Then

MsgBox ("لا توجد بيانات لترحيلها")

Else

ws.Range("a2:b" & LR).Copy ws2.Range("a" & LR2 + 1)

ws2.Select

End If

End Sub

هذا الجزء لتعريف أوراق العمل وتعريفها برمز إختصار اخترت ان يكون ws و ws2

Set ws = Sheets("Sheet1")

Set ws2 = Sheets("Sheet2")

هذا لتحديد أخر صف فيه بيانات في ورقة العمل المعرفة اختصاراً ws والتي هي Sheet1

LR = ws.Range("a" & Rows.Count).End(xlUp).Row

هذا لتحديد أخر صف فيه بيانات في ورقة العمل المعرفة اختصاراً ws2 والتي هي Sheet2

LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row

هذا شرط عدم الترحيل اذا كانت الخلية A2 فاضية وتظهر رسالة تنبيه بعدم التنبيه

If ws.Range("a2").Value = "" Then

MsgBox ("لا توجد بيانات لترحيلها")

في حال عدم تحقق شرط خلو الخلية A2 من البيانات يتم تنفيذ هذا الجزء وهو الخاص بعملية نسخ المدى A2: B مرتبطة بأخر صف فيه بيانات LR ويتم لصقها في ورقة البيانات المسمية WS2 في المدى A وأول صف فارغ في الورقة المرحل اليها ws2

ws.Range("a2:b" & LR).Copy ws2.Range("a" & LR2 + 1)

هذا الجزء لاختيار ورقة العمل ws2 بعد الانتهاء من الترحيل

ws2.Select

ان شاء الله اكون وفقت في الشرح

أما بالنسبة لطلبك فهو غير واضح؟؟

  • Thanks 2
قام بنشر

السلام عليكم

شرح جميل اخي عبدالله

وكود رائع

= = = =

اخي السائل

بما انك تريد تتعلم الترحيل

ارفق لك الحل بكود على اول طريقة بدأت اتعلم فيها الترحيل

و الشرح موجود داخل الكود

مع ملاحظة

Cells(1, 2)

تعني الخلية التي تقع في تقاطع الصف الأول و العمود الثاني

آمل ان يسهل عليك فهم الترحيل

AZترحيل مشروط.rar

قام بنشر

هذا هو الكود


Sub OFFICNA()

Dim LR As Long, LR2 As Long, ws As Worksheet, ws2 As Worksheet

Set ws = Sheets("Sheet1")

Set ws2 = Sheets("Sheet2")

LR = ws.Range("a" & Rows.Count).End(xlUp).Row

LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row

If ws.Range("a2").Value = "" Then

MsgBox ("لا توجد بيانات لترحيلها")

Else

ws.Range("a2:b" & LR).Copy ws2.Range("a" & LR2 + 1)

ws2.Select

End If

End Sub

هذا الجزء لتعريف أوراق العمل وتعريفها برمز إختصار اخترت ان يكون ws و ws2

Set ws = Sheets("Sheet1")

Set ws2 = Sheets("Sheet2")

هذا لتحديد أخر صف فيه بيانات في ورقة العمل المعرفة اختصاراً ws والتي هي Sheet1

LR = ws.Range("a" & Rows.Count).End(xlUp).Row

هذا لتحديد أخر صف فيه بيانات في ورقة العمل المعرفة اختصاراً ws2 والتي هي Sheet2

LR2 = ws2.Range("a" & Rows.Count).End(xlUp).Row

هذا شرط عدم الترحيل اذا كانت الخلية A2 فاضية وتظهر رسالة تنبيه بعدم التنبيه

If ws.Range("a2").Value = "" Then

MsgBox ("لا توجد بيانات لترحيلها")

في حال عدم تحقق شرط خلو الخلية A2 من البيانات يتم تنفيذ هذا الجزء وهو الخاص بعملية نسخ المدى A2: B مرتبطة بأخر صف فيه بيانات LR ويتم لصقها في ورقة البيانات المسمية WS2 في المدى A وأول صف فارغ في الورقة المرحل اليها ws2

ws.Range("a2:b" & LR).Copy ws2.Range("a" & LR2 + 1)

هذا الجزء لاختيار ورقة العمل ws2 بعد الانتهاء من الترحيل

ws2.Select

ان شاء الله اكون وفقت في الشرح

أما بالنسبة لطلبك فهو غير واضح؟؟

أخى أشكر لك شرحك الرائع أرجو ان استفاد من خبرتكم ..

أما بالنسبة للمطلوب فهو كالاتى : -

1 - عندما يكون فى العمود b مبلغ يتم ترحيل الصف كاملا الى شييت 2

وشكرا لك مرة اخرى ..

  • Like 1
قام بنشر

السلام عليكم

شرح جميل اخي عبدالله

وكود رائع

= = = =

اخي السائل

بما انك تريد تتعلم الترحيل

ارفق لك الحل بكود على اول طريقة بدأت اتعلم فيها الترحيل

و الشرح موجود داخل الكود

مع ملاحظة

Cells(1, 2)

تعني الخلية التي تقع في تقاطع الصف الأول و العمود الثاني

آمل ان يسهل عليك فهم الترحيل

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

فهل من كتب اتعلم منها ... ؟

قام بنشر

السلام عليكم

شرح جميل اخي عبدالله

وكود رائع

= = = =

اخي السائل

بما انك تريد تتعلم الترحيل

ارفق لك الحل بكود على اول طريقة بدأت اتعلم فيها الترحيل

و الشرح موجود داخل الكود

مع ملاحظة

Cells(1, 2)

تعني الخلية التي تقع في تقاطع الصف الأول و العمود الثاني

آمل ان يسهل عليك فهم الترحيل

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

فهل من كتب اتعلم منها ... ؟

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

فهل من كتب اتعلم منها ... ؟

قام بنشر

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

أخي الكريم كتب الفيجوال بيزك بالعربية كثير - ولكن - لم اجد كتب متخصصة في الإكسل للفيجول

و أنا شخصيا لم اتعلم الفيجول للإكسل من كتب

ولكن تعلمته من هذا المنتدى الرائع الذي لاانكر فضلة وفضل الأساتذة الذين تعلمت منهم هنا

لذلك انصحك

البحث في المنتدى عن شروحات لبعض الأوامر

واخص بالذكر

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

ومشاركة بعنوان اكواد اعجبتني

ويوجد غيرها الكثير

ومن مميزات الفيجول انك تجد للحل الواحد عدة طرق تؤدي نفس الغرض مثل طلبك هذا الذي تم حله بطريقتين و يوجد غيرها

مع التحية

  • Thanks 1
قام بنشر

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

أخي الكريم كتب الفيجوال بيزك بالعربية كثير - ولكن - لم اجد كتب متخصصة في الإكسل للفيجول

و أنا شخصيا لم اتعلم الفيجول للإكسل من كتب

ولكن تعلمته من هذا المنتدى الرائع الذي لاانكر فضلة وفضل الأساتذة الذين تعلمت منهم هنا

لذلك انصحك

البحث في المنتدى عن شروحات لبعض الأوامر

واخص بالذكر

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

ومشاركة بعنوان اكواد اعجبتني

ويوجد غيرها الكثير

ومن مميزات الفيجول انك تجد للحل الواحد عدة طرق تؤدي نفس الغرض مثل طلبك هذا الذي تم حله بطريقتين و يوجد غيرها

مع التحية

اشكرك يا أخى على هذه النصيحة الغالية ... وارجو من الله العون على هذا ...

  • 10 months later...
قام بنشر

الأخ المحترم

أحمد بك حجازى

تحية لك

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

وهو يقوم بترحيل الأعمدة من 1 إلى 40

من السطر رقم 11 إلى السطر رقم 3000

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

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

معيار الترحيل فى العمود الأول

لابد من وجود شيتات مسماه بنفس الأسماء الموجودة فى الخلايا الموجودة فى العمود الأول (معايير الترحيل) ليتم ترحيل كل سطر إلى الشيت المناسب له

ولو أرفقت ملف تكون مساعدتك أسهل


Sub Khboor_Tarheel()

'=============================================

' الية الكود بعد الترحيل يقوم بمسح البيانات التي تم ترحيلها

On Error Resume Next

Application.ScreenUpdating = False

For a = 11 To [a3000].End(xlUp).Row

    If Cells(a, 1) <> "" Then

	    MySheets = Cells(a, 1)

	    With Sheets(MySheets).[a3000].End(xlUp)

	    .Offset(1, 0) = Cells(a, 1)

		 .Offset(1, 1) = Cells(a, 2)

		  .Offset(1, 2) = Cells(a, 3)

		   .Offset(1, 3) = Cells(a, 4)

		    .Offset(1, 4) = Cells(a, 5)

			 .Offset(1, 5) = Cells(a, 6)

			  .Offset(1, 6) = Cells(a, 7)

			   .Offset(1, 7) = Cells(a, 8)

			    .Offset(1, 8) = Cells(a, 9)

				 .Offset(1, 9) = Cells(a, 10)

				  .Offset(1, 10) = Cells(a, 11)

				   .Offset(1, 11) = Cells(a, 12)

				    .Offset(1, 12) = Cells(a, 13)

					 .Offset(1, 13) = Cells(a, 14)

					  .Offset(1, 14) = Cells(a, 15)

					   .Offset(1, 15) = Cells(a, 16)

					    .Offset(1, 16) = Cells(a, 17)

						 .Offset(1, 17) = Cells(a, 18)

						  .Offset(1, 18) = Cells(a, 19)

						   .Offset(1, 19) = Cells(a, 20)

						    .Offset(1, 20) = Cells(a, 21)

							 .Offset(1, 21) = Cells(a, 22)

							  .Offset(1, 22) = Cells(a, 23)

							   .Offset(1, 23) = Cells(a, 24)

							    .Offset(1, 24) = Cells(a, 25)

								 .Offset(1, 25) = Cells(a, 26)

								  .Offset(1, 26) = Cells(a, 27)

								   .Offset(1, 27) = Cells(a, 28)

								    .Offset(1, 28) = Cells(a, 29)

									 .Offset(1, 29) = Cells(a, 30)

									  .Offset(1, 30) = Cells(a, 31)

									   .Offset(1, 31) = Cells(a, 32)

									    .Offset(1, 32) = Cells(a, 33)

										 .Offset(1, 33) = Cells(a, 34)

										  .Offset(1, 34) = Cells(a, 35)

										   .Offset(1, 35) = Cells(a, 36)

										    .Offset(1, 36) = Cells(a, 37)

											 .Offset(1, 37) = Cells(a, 38)

											  .Offset(1, 38) = Cells(a, 39)

											   .Offset(1, 39) = Cells(a, 40)

	    End With

    End If

' If Sheets("ورقة1").Cells(a, "a") > "" Then Cells(a, 3).Resize(1, 4).Value = "" ' اذا اردت مسح البيانات بعد الترحيل حفز هذا السطر

Next a

Application.ScreenUpdating = True

MsgBox "!تم الترحيل   بنجاح", vbInformation + vbMsgBoxRight, "تم الترحيل"

Range("a1").Select

On Error Resume Next

On Error GoTo 0

End Sub


قام بنشر

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

قام بنشر

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

يمكن عمل ذلك بإضافة بسيطة

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

كود المسح كالتالى


Sub مسح()

'

' مسح ماكرو

' الماكرو مسجل ‎10/11/2011 بواسطة ‎يوسف عطا يوسف

'

'

    Rows("11:2010").Select

    Range("U2010").Activate

    Selection.ClearContents

    Range("A11").Select

End Sub

ويتم وضع زر مسح فى كل شيت يتم فيه الترحيل فتقوم بضغط هذا الزر فى الصفحات التى سترحل إليها البيانات قبل الضغط عل زر الترحيل فى الصفحة التى بها البيانات الأصلية

الكود يقوم بمسح البيانات الموجودة فى جميع الصفوف من الصف 11 إلى الصف 2010 ثم تنشيط الخلية A11

بإمكانك تغيير الصفوف كما تريد حسب الملف الخاص بك

وبالطبع يمكن دمج الكودين ليتم ذلك بنفس زر الترحيل ولكن هذا يحتاج إلى خبرة أكثر مما عندى

  • 2 years later...
قام بنشر

الاخوة الاعزاء اشكركم جميعا انا لدي سؤال وهو عندما ارحل كمية من البيانات وبعد ان رحلت حسيت اني اخطات بفاتورة واريد استدعاها كيف استطيع استدعاها وبعد ان استعدها تاكدت اني اخطات كيف يتم تعديلها ( اي مسح الصف المرحل الذي هو خطاء واستبدالة بالصحيح )

  • 1 year later...
  • 2 months later...
قام بنشر

Classeur1.rarالسلام عليكم ورحمة االه تعالى وبركاته اخوتي الكرام انا جديد في المنتدى اريد منكم ان تساعدوني في ترحيل بيانات تلاميذ المدرسة الى عدة شيتات  حسب المستوي الدراسي مع حذف العمود الخاص بالسن

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

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

Important Information