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

كيف أقوم بترحيل البيانات في نفس الورقة؟؟


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

السلام عليكم وعيدكم مبارك.

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

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

_______.zip

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

شكرا جزيلا أخي علي السحيب. الله يجعل عملك في ميزان حسناتك. تأخرت في الرد لفحص الحل ومحاولة معرفة كيفية عمله من أجل الاستفادة منه عندما أنقله إلى الملف الأصلي. لكنني مع الأسف الشديد ( فشلت ). وسعة صدرك تغريني بمزيد من الأسئلة التي أرجو أن لا أثقل عليك بها:

1ـ كتابتي للأكواد ليست على جانب من الإتقان وأستعيض عن الكتابة دائما بعمل تسجيل ماكرو يقوم بتسجيل الخطوات التي أعملها ثم أربط الزر بالماكرو بعد تسجيله وليس كتابته يدويا. فهل أستطيع أن أقوم بعمل الكود الذي تكرمت بإيجاده في الملف عن طريق التسجيل؟

2ـ لاحظت أنك حذفت أرقام تواريخ اليوم من العمود الأول وأضفت خانة سفلية تقوم فيها بإدخال الرقم 1 والكود يضيف رقما إلى كل خلية جديدة أو يضيف رقما بعد كل نقرة على زر الترحيل. والذي أتمناه أن يبقى العمود الأول مثلما هو بدون تغيير أي يكون مملوءا بأرقام أيام الشهر من 1 إلى30 دون أن يتدخل مستخدم البرنامج في تغييره وبدون أن يتدخل الكود في تغييره. فهل يمكن هذا أم أن البرمجة تستدعي بالضرورة ما قمت به؟

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

4ـ لاحظت أنك قمت بحذف الصف الأول من ورقة العمل تماما وفي برنامجي الأصلي فإن الخلايا ليست في بداية الورقة تماما وإنما في مكان آخر من الورقة وأتمنى من البرمجة أن تراعي ذلك بحيث أتمكن من التعديل على البرمجة بما يتناسب مع موقع الخلايا في أي مكان تكون فيه تلك الخلايا دون تقييدها بقمة الورقة اليمنى .

5ـ كما أشرت لو أبقينا على العمود الأول محتويا على أرقام الشهر من 1 إلى 30 وربطنا هذه الأرقام بالأرقام الموجود في الخلية L64 فإن تطابقت الخليتان فيتم الترحيل وإلا فلا . وذلك لتلافي تكرار النقر على زر ترحيل لأنني بهذه الطريقة أستطيع أن أنقر على زر ترحيل في اليوم الواحد 30 مرة فيستجيب لي بدون أي تحفظ مكررا بيانات ذلك اليوم عند كل نقرة على زر ترحيل.

6ـ أخيرا. هل تتكرم بشرح لي معنى ذلك الكود الذي كتبته لأتمكن من فهمه لكي يسهل علي نقله إلى ملفي الأصلي.؟

أشكرك على تقبل ملاحظاتي وبانتظار إجابتك الكريمة التي لا شك ستسهم كثيرا في حل مشكلة طالما كنت أتمنى أن أجد لها حلا. ولن أنساك من الدعاء إن شاء الله. والسلام.

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

1ـ كتابتي للأكواد ليست على جانب من الإتقان وأستعيض عن الكتابة دائما بعمل تسجيل ماكرو يقوم بتسجيل الخطوات التي أعملها ثم أربط الزر بالماكرو بعد تسجيله وليس كتابته يدويا. فهل أستطيع أن أقوم بعمل الكود الذي تكرمت بإيجاده في الملف عن طريق التسجيل؟

لا يمكنك عمل ذلك عن طريق تسجيل الماكرو.

2ـ لاحظت أنك حذفت أرقام تواريخ اليوم من العمود الأول وأضفت خانة سفلية تقوم فيها بإدخال الرقم 1 والكود يضيف رقما إلى كل خلية جديدة أو يضيف رقما بعد كل نقرة على زر الترحيل. والذي أتمناه أن يبقى العمود الأول مثلما هو بدون تغيير أي يكون مملوءا بأرقام أيام الشهر من 1 إلى30 دون أن يتدخل مستخدم البرنامج في تغييره وبدون أن يتدخل الكود في تغييره. فهل يمكن هذا أم أن البرمجة تستدعي بالضرورة ما قمت به؟

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

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

لقد قمت بتعديل الكود ليقوم بهذه المهمة.

4ـ لاحظت أنك قمت بحذف الصف الأول من ورقة العمل تماما وفي برنامجي الأصلي فإن الخلايا ليست في بداية الورقة تماما وإنما في مكان آخر من الورقة وأتمنى من البرمجة أن تراعي ذلك بحيث أتمكن من التعديل على البرمجة بما يتناسب مع موقع الخلايا في أي مكان تكون فيه تلك الخلايا دون تقييدها بقمة الورقة اليمنى .

يجب أن يبدأ الترحيل من الصف الثاني .. و لايمكننا تغيير ذلك.

5ـ كما أشرت لو أبقينا على العمود الأول محتويا على أرقام الشهر من 1 إلى 30 وربطنا هذه الأرقام بالأرقام الموجود في الخلية L64 فإن تطابقت الخليتان فيتم الترحيل وإلا فلا . وذلك لتلافي تكرار النقر على زر ترحيل لأنني بهذه الطريقة أستطيع أن أنقر على زر ترحيل في اليوم الواحد 30 مرة فيستجيب لي بدون أي تحفظ مكررا بيانات ذلك اليوم عند كل نقرة على زر ترحيل.

لقد قمت بالتعديل على الكود .. ليفي بهذا الغرض .. وإذا أبقينا العمود الأول غير فارغ .. فإن الترحيل لن يعمل بشكل صحيح.

6ـ أخيرا. هل تتكرم بشرح لي معنى ذلك الكود الذي كتبته لأتمكن من فهمه لكي يسهل علي نقله إلى ملفي الأصلي.؟

بكل سرور

With Columns(1).Rows(31).End(xlUp)
في هذا الجزء من الكود .. الرقم 1 يمثل رقم العمود الذي يبدأ منه الترحيل .. والرقم 31 يمثل آخر صف نريد تعبئة البيانات به.
 .Offset(1, 0) = [A36]

وفي هذا الجزء .. الرقم 1 .. يمثل رقم الصف الذي نبدأ منه الترحيل -1 ..

والرقم 0 .. يمثل رقم العمود الذي نبدأ منه الترحيل -1

و [A36] .. يمثل رقم الخلية التي نريد نقل بياناتها .. لكي يصبحوا مكان الخلية التي قمنا بتحديد موقعها عن طريق الرقمين 0 و1.

هذا كل شيء.

__________________________.rar

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

أولا جزاك الله خيرا ونفع بعلمك وأثابك. عمل رائع جدا ولا تكفي معه هذه :fff: ولا هذه (y) ولا هذه :d

ثانيا.

End(xlUp)

هل المقصود منها أن يقوم البرنامج بعمل التصاعد في تعبئة الخلايا يوميا. أم ماذا؟

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

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

المقصود بها هو أن يتم ترحيل البيانات في الصف الموجود تحت الصفوف العلوية الممتلئة مباشرة.

أعتقد أن الطريقة التي ذكرتها هي أفضل وأسرع وأئمن طريقة لنقل الوحدات النمطية من ملف إلى آخر.

أسم الملف ليس له أي علاقة بالكود .. فسمه ما شئت.

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

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

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

استاذ علي شكرا علي مجهوداتكم الرائع

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

استاذي ,,, ممكن لو تكرمت , ما هو الكود المسؤال عن تحديد اول خلية فارغة في العمود A لانني نسخت الكود ووضعت في ملف جديد ونجح في عملية الترحيل بشكل رائع ,,

حاولت درست الكود وعجزت عن فهمة ,

هناك امر يجعل الكود يبدا الكتابة او الترحيل من عند اول خلية فارغة , ماهو

والف شكرا لكم ,,,

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

الاستاذ علي

بارك الله فيك وفي علمك . وارجو الا اكون قد اثقلت عليك والله ان هدفي هو التعليم وانا والله احاول ان اجرب كثيرا قبل طرح السؤال او المداخلة ,,

ولقد جربت الامر الموجود في الرد رقم 4 ولكن لم ينجح الامر واعتقد انة مرتبط بالدالة With والتي تعني علي حد تفسير ( عندما يكون ) ,

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

للتوضيح لنفرض انني الان موجود في العمود M وبالتحديد في الخلية M16 واخر خلية فارغة في هذا العمود هي M8 فكيف اجعل التركيز ينتقل الي الخلية M9 باعتبارها اول خلية فارغة في هذا العمود , ونفس الامر اذا كنت في عمود اخري ,

اي انني لا اريد ان يرتبط الامر بعمود محدد بل باي عمود في التركيز او مؤشر الفارة ,,

واثناء بحثي في المنتدي وجدت الامر التالي واستطعت جعلة ينقل التركيز الي اول خلية فارغة ولكن للاسف كان محدد فقط للعمود A ولم انجح في جعلة مطلقا لاي عمود ,

Cells(Range("A1").CurrentRegion.Rows.Count + 1, 1).Select

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

فجزاك عند الله عظيم ان شاء الله ويكفيك دعاء الاخوان هنا , وايضا ( من فرج من مسلم كربة من كرب الدنيا فرج الله عنة كرب من كرب الاخرة ) او كما قال الرسول صلي الله علية وسلم ,,,

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

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

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

Important Information