JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

-->
الصفحة الرئيسية

ترحيل المسحوبات اليومية للعملاء في Excel باستخدام VBA بشرط اسم العميل : دليل شامل مع كود جاهز 🚀

 

 أتمتة ترحيل المسحوبات اليومية في Excel باستخدام VBA: دليل شامل مع كود جاهز

 


لماذا تحتاج إلى أتمتة ترحيل المسحوبات؟

 

في عالم الأعمال والمحاسبة، يُعد تتبع مسحوبات العملاء اليومية من المهام الروتينية التي تستغرق وقتًا طويلاً عند تنفيذها يدويًا. باستخدام كود VBA بسيط، يمكنك أتمتة عملية ترحيل البيانات من شيت يومي رئيسي إلى شيتات فردية لكل عميل بناءً على تاريخ اليوم. هذا الحل المبتكر يوفر:

 

  توفير 90% من الوقت المستهلك في النسخ اليدوي

  تقليل الأخطاء البشرية إلى الصفر

  تنظيم بيانات العملاء تلقائيًا

  إمكانية التتبع التاريخي للمسحوبات

 

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

 

vba Sub TransferTodayWithdrawals()

    ' الكود الأمثل لترحيل مسحوبات العملاء اليومية في Excel

    Dim wsMain As Worksheet, wsCustomer As Worksheet

    Dim lastRow As Long, i As Long, targetRow As Long

    Dim customerName As String, today As Date

   

    ' تعيين تاريخ اليوم للترحيل

    today = Date ' الكود يتعامل مع التاريخ تلقائيًا

   

    ' تعيين الشيت الرئيسي (شيت المسحوبات اليومية)

    Set wsMain = ThisWorkbook.Sheets("الشيت اليومي") ' يمكن تغيير الاسم

   

    ' أتمتة البحث عن آخر صف بالبيانات

    lastRow = wsMain.Cells(wsMain.Rows.Count, 1).End(xlUp).Row

   

    ' حلقة ذكية لفلترة بيانات اليوم

    For i = 2 To lastRow ' تخطي الصف الأول (العناوين)

        If CDate(wsMain.Cells(i, 2).Value) = today Then ' العمود B للتاريخ

            customerName = wsMain.Cells(i, 1).Value ' العمود A لأسماء العملاء

           

            ' دالة التحقق من وجود شيت العميل

            If WorksheetExists(customerName) Then

                Set wsCustomer = ThisWorkbook.Sheets(customerName)

               

                ' تحديد أول صف فارغ بذكاء

                targetRow = wsCustomer.Cells(wsCustomer.Rows.Count, 1).End(xlUp).Row + 1

               

                ' نسخ البيانات بطريقة احترافية

                wsMain.Rows(i).Copy Destination:=wsCustomer.Rows(targetRow)

            Else

                MsgBox "تنبيه: لا يوجد شيت للعميل " & customerName, vbExclamation

            End If

        End If

    Next i

   

    MsgBox "تم ترحيل " & lastRow - 1 & " حركة مسحوبات بنجاح!", vbInformation

End Sub

 

' دالة مساعدة للتحقق من وجود الشيت

Function WorksheetExists(sheetName As String) As Boolean

    On Error Resume Next

    WorksheetExists = (ThisWorkbook.Sheets(sheetName).Name <> "")

    On Error GoTo 0

End Function

 

 

 الفوائد الرئيسية لهذا الكود

 

 1. ترحيل تلقائي للمسحوبات اليومية

  •     ينقل البيانات من سجل المسحوبات اليومي إلى ملفات العملاء الفردية تلقائيًا
  •     يتعامل مع تنسيقات التواريخ المختلفة بشكل ذكي

 

 2. تنظيم بيانات العملاء

  •     ينشئ نظامًا محكمًا لأرشفة مسحوبات كل عميل
  •     يمكن دمجه مع أنظمة المحاسبة الأخرى

 

 3. توفير الوقت والجهد

  •     يقلل الوقت المستغرق من ساعات إلى ثوانٍ
  •     يحل مشكلة التكرار اليدوي في إدخال البيانات

 

 كيفية تنفيذ الكود خطوة بخطوة

1. فتح محرر VBA:

  •     اضغط `Alt + F11` لفتح بيئة التطوير
  •     انقر `Insert` > `Module` لإضافة وحدة جديدة

 

2. إعداد ملف Excel:

    تأكد من أن:

  •       العمود A يحتوي على أسماء العملاء
  •       العمود B يحتوي على تاريخ المسحوبات
  •       الصف الأول يحتوي على عناوين الأعمدة

 

3. تخصيص الكود:

  •     غير `Sheets("الشيت اليومي")` ليتطابق مع اسم شيتك الرئيسي
  •     اضبط أرقام الأعمدة حسب هيكل بياناتك

 

4. تشغيل الكود:

    اضغط `F5` أو انتقل إلى `Macros` واختر `TransferTodayWithdrawals`


 نصائح احترافية لتحسين الكود

 

1. إضافة تسجيل الأخطاء:

On Error GoTo ErrorHandler

' كود التنفيذ

Exit Sub

ErrorHandler:

MsgBox "حدث خطأ: " & Err.Description, vbCritical

 

2. توسيع نطاق التاريخ:

   

   ' لترحيل بيانات فترة محددة

' لترحيل بيانات فترة محددة

If CDate(wsMain.Cells(i, 2).Value) >= #1/1/2023# And _

   CDate(wsMain.Cells(i, 2).Value) <= #12/31/2023#  then

  

3. إضافة تنسيق تلقائي:

  wsCustomer.Rows(targetRow).Font.Bold = True

wsCustomer.Cells(targetRow, 2).NumberFormat = "#,##0.00"

 

 الأسئلة الشائعة (FAQ)

  هل يعمل الكود مع جميع إصدارات Excel؟

 نعم، الكود متوافق مع Excel 2010 إلى 365 ويعمل على أنظمة Windows وMac

 

  كيف أتعامل مع التواريخ المختلفة؟

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

 

 If Format(wsMain.Cells(i, 2).Value, "dd/mm/yyyy") = Format(today, "dd/mm/yyyy") Then

 

  ماذا لو أردت إضافة المزيد من التفاصيل؟

 يمكنك توسيع الكود ليشمل أعمدة إضافية:

wsCustomer.Cells(targetRow, 3).Value = wsMain.Cells(i, 3).Value ' المبلغ

wsCustomer.Cells(targetRow, 4).Value = wsMain.Cells(i, 4).Value ' البيان

 

 

لماذا يعتبر هذا الكود ضروريًا؟

هذا الحل البرمجي يُعد ثورة في إدارة مسحوبات العملاء حيث يجمع بين:

  •  البساطة: كود واضح وسهل التعديل
  •  القوة: يعمل مع آلاف الصفور بسلاسة
  •  المرونة: قابل للتكيف مع مختلف هياكل البيانات

 

الكلمات المفتاحية الإضافية:

 برمجة Excel للمحاسبة

 أتمتة كشوف الحسابات

 حلول VBA جاهزة

 إدارة مسحوبات العملاء

 Excel للشركات الصغيرة

 

جرب الكود اليوم واختبر الفرق في إدارة بيانات عملائك! 🚀

لتحميل ملف العمل  من هنا

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