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

نجوم المشاركات

  1. محمد هشام.

    محمد هشام.

    الخبراء


    • نقاط

      7

    • Posts

      1,653


  2. ابو عارف

    ابو عارف

    الخبراء


    • نقاط

      4

    • Posts

      565


  3. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      3

    • Posts

      12,591


  4. أبوعيد

    أبوعيد

    الخبراء


    • نقاط

      2

    • Posts

      1,596


Popular Content

Showing content with the highest reputation on 24 فبر, 2025 in all areas

  1. السلام عليكم ورحمة الله وبركاته جزاكم الله كل خير لكل من يقوم علي هذا الموقع ودائما نتابعه للاستفادة من استاذتنا جعله الله في ميزان حسناتهم - لديا قاعدة بيانات المشكلة اني عند ادخال منتج معين لفاتورة شراء وليكن مثلا مروحة سقف تورنيدو يكون سعرها 1100 جنيه ، بعد فترة يزيد سعرها الي 1200 جنيه فاضطر الي ادخال صنف جديد واكتب مروحة سقف تورنيدو 2 علشان هذا الصنف له سعراء شراء مختلف عن ماقبله مع انه نفس الصنف ... اريد حل حتي يتوحد اسمه الصنف ويتعدد اسعار الشراء : وان لا يفقد قيمة كل منهم سعر الشراء الذي دخل بيه علي قاعد البيانات حتي استطيع بعد ذلك تحديد او معرفة الربح . بمعني عندما اقوم ببيع مروحة تورنيدو يظهر ليا سعرين وهما 1100 و 1200 مع الكمية واختار بينهم وجزاكم الله كل خير -مرفق قاعدة البيانات مخزن.rar
    2 points
  2. السلام عليكم و رحمة الله و بركاته في مثال الأخير لاستاذ/ أبو خليل جربت حجز فترة تنتهي قبل إنتهاء حجز زبون من بعده مثلا حسن 1 قام بحجز من ساعة 2 مساءً حتى 4 مساءً ثم جاء حسن 2 يريد حجز من ساعة 1 و لمدة 4 ساعات و عند ضغط على الزر حجز يعرض رسالة خطاء و بعد الغاء رسالة ثم ضغط على زر حجز مرة اخرى، يقبل الحجز كما في صورة
    2 points
  3. نعم أخي فقط قم بتعديل السطور التالية With tbl .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter .Rows.Alignment = wdAlignRowCenter .Borders.Enable = True Dim ColArr As Variant: ColArr = Array(80, 80, 200, 80, 80) For i = 0 To UBound(ColArr) .Columns(i + 1).PreferredWidth = ColArr(i) Next i End With تم تعديل الكود على الملف المرفق مع إظافة إمكانية حفظ الملف بصيغة PDF عند الحاجة ملف تصدير V4.xlsm
    2 points
  4. تم عمل استعلام موظف Sub بحث_في_السجل() Dim wsSijel As Worksheet, wsBataka As Worksheet Dim startDate As Date, endDate As Date Dim employeeName As String, movementType As String Dim i As Long, j As Long Dim lastRowSijel As Long, lastRowBataka As Long 'تعيين أوراق العمل Set wsSijel = ThisWorkbook.Sheets("السجل") 'تغيير اسم الورقة حسب الحاجة Set wsBataka = ThisWorkbook.Sheets("بطاقة الموظف") 'تغيير اسم الورقة حسب الحاجة 'قراءة قيم البحث من بطاقة الموظف startDate = wsBataka.Range("A2").Value endDate = wsBataka.Range("B2").Value employeeName = wsBataka.Range("C2").Value movementType = wsBataka.Range("D2").Value 'مسح البيانات القديمة في بطاقة الموظف lastRowBataka = wsBataka.Cells(wsBataka.Rows.Count, "A").End(xlUp).Row If lastRowBataka >= 6 Then wsBataka.Range("A6:F" & lastRowBataka).ClearContents End If 'إيجاد آخر صف في شيت السجل lastRowSijel = wsSijel.Cells(wsSijel.Rows.Count, "A").End(xlUp).Row 'البحث في السجل وعرض البيانات في بطاقة الموظف j = 6 'بداية كتابة البيانات في بطاقة الموظف من الصف 6 For i = 2 To lastRowSijel 'بداية البحث من الصف 2 (تخطي العناوين) If wsSijel.Cells(i, 2).Value = employeeName And _ wsSijel.Cells(i, 4).Value = movementType And _ wsSijel.Cells(i, 5).Value >= startDate And _ wsSijel.Cells(i, 5).Value <= endDate Then 'كتابة البيانات في بطاقة الموظف wsBataka.Cells(j, 1).Value = wsSijel.Cells(i, 1).Value 'العمود الأول wsBataka.Cells(j, 2).Value = wsSijel.Cells(i, 2).Value 'اسم الموظف wsBataka.Cells(j, 3).Value = wsSijel.Cells(i, 5).Value 'العمود الثالث wsBataka.Cells(j, 4).Value = wsSijel.Cells(i, 6).Value 'نوع الحركة wsBataka.Cells(j, 5).Value = wsSijel.Cells(i, 7).Value 'التاريخ wsBataka.Cells(j, 6).Value = wsSijel.Cells(i, 8).Value 'العمود السادس wsBataka.Cells(j, 6).NumberFormat = "[h]:mm;@" 'تنسيق الخلية مباشرة في الكود j = j + 1 'زيادة الصف لكتابة البيانات في الصف التالي End If Next i MsgBox "تم البحث وعرض البيانات بنجاح." 'Call حساب_مجموع_الساعات Call جمع_الساعات_والدقائق End Sub Sub جمع_الساعات_والدقائق() Dim wsBataka As Worksheet Dim نطاق_الجمع As Range Dim مجموع_الوقت As Double Set wsBataka = ThisWorkbook.Sheets("بطاقة الموظف") 'تغيير اسم الورقة حسب الحاجة ' تحديد نطاق الجمع (F6 إلى آخر خلية في العمود F) Set نطاق_الجمع = Range("F6", Cells(Rows.Count, "F").End(xlUp)) ' جمع القيم في النطاق مجموع_الوقت = WorksheetFunction.Sum(نطاق_الجمع) ' وضع النتيجة في الخلية E4 Range("E4").Value = مجموع_الوقت ' تنسيق الخلية E4 Range("E4").NumberFormat = "[h]:mm" ' أو "h:mm" حسب الحاجة End Sub الخروج والعودة - كود.xlsm
    1 point
  5. هل هذا هو المطلوب Sub حساب_فرق_الساعات1() Dim wsData As Worksheet, wsSummary As Worksheet Dim lastRowData As Long, lastRowSummary As Long Dim i As Long, j As Long Dim employeeName As String, movementType As String, movementDate As Date Dim exitTime As Date, returnTime As Date, timeDifference As Double Dim totalHours As Double, days As Long, remainingHours As Long Dim summaryDict As Object 'استخدام Dictionary لتجميع الساعات حسب الموظف والشهر 'تعيين ورقتي العمل Set wsData = ThisWorkbook.Sheets("السجل") 'تغيير اسم الورقة حسب الحاجة Set wsSummary = ThisWorkbook.Sheets("احتساب عدد الساعات") 'تغيير اسم الورقة حسب الحاجة 'إيجاد آخر صف في ورقة البيانات lastRowData = wsData.Cells(wsData.Rows.Count, "B").End(xlUp).Row 'إضافة عناوين الأعمدة في ورقة الملخص wsSummary.Cells(1, "A").Value = "اسم الموظف" wsSummary.Cells(1, "C").Value = "نوع الحركة (زمنية)" wsSummary.Cells(1, "D").Value = "إجمالي عدد الساعات" wsSummary.Cells(1, "F").Value = "عدد الأيام والساعات المتبقية" 'إنشاء Dictionary لتجميع الساعات Set summaryDict = CreateObject("Scripting.Dictionary") 'حساب الفرق بين وقت الخروج ووقت العودة For i = 2 To lastRowData employeeName = wsData.Cells(i, "B").Value movementType = wsData.Cells(i, "D").Value movementDate = wsData.Cells(i, "E").Value exitTime = wsData.Cells(i, "F").Value returnTime = wsData.Cells(i, "G").Value 'تأكد من وجود وقت خروج ووقت عودة If IsDate(exitTime) And IsDate(returnTime) Then timeDifference = returnTime - exitTime wsData.Cells(i, "H").Value = timeDifference wsData.Cells(i, "H").NumberFormat = "[h]:mm;@" 'تنسيق الخلية مباشرة في الكود 'تجميع الساعات إذا كانت الحركة "زمنية" If movementType = "زمنية" Then Dim key As String key = employeeName ' استخدام اسم الموظف فقط كمفتاح If summaryDict.Exists(key) Then summaryDict(key) = summaryDict(key) + timeDifference Else summaryDict(key) = timeDifference End If End If End If Next i 'كتابة ملخص الساعات في ورقة الملخص j = 2 Dim key1 As Variant For Each key1 In summaryDict.Keys employeeName = key1 ' استخدام المفتاح مباشرةً كاسم الموظف totalHours = summaryDict(key1) 'كتابة البيانات في ورقة الملخص wsSummary.Cells(j, "A").Value = employeeName wsSummary.Cells(j, "C").Value = "زمنية" wsSummary.Cells(j, "D").Value = totalHours wsSummary.Cells(j, "D").NumberFormat = "[h]:mm;@" 'تنسيق الخلية مباشرة في الكود 'تحويل الساعات إلى أيام وساعات days = Int(totalHours * 24 / 24) remainingHours = (totalHours * 24) Mod 24 wsSummary.Cells(j, "F").Value = days & " يوم " & remainingHours & " ساعة" j = j + 1 Next key1 MsgBox "تم حساب الفرق بين وقت الخروج ووقت العودة وتلخيص الساعات بنجاح." End Sub الخروج والعودة - كود.xlsm
    1 point
  6. العفو أخي @mahmoud nasr alhasany يسعدني أنني إستطعت مساعدتك 😑
    1 point
  7. الاستاذ محمد هشام قسما بالله انا احبك في الله عرفتك من خلال اعمالك في هذا المنتدي العامر ينتابني الفرح عندما اري تدخلك في جل اي مشاركة ماشاء الله عليك
    1 point
  8. الف شكر استاذ عارف على المتابعة والتجربة نحن نتعامل مع حجز وقتين (دخول / خروج ) وما بينهما من اوقات .. وهذا يستلزم خطوات للضبط خاصة تمت معالجة ملاحظة الاستاذ عارف .. مع اضافة بعض اللمسات يتبع .. الإلغاء والتحديث مواعيد دخول وخروج2.rar
    1 point
  9. السلام عليكم احتاج كود عند الضغط على رقم الكتاب في الاسفل يتم إظهاره في الاعلى كما في الصورة leb.accdb
    1 point
  10. زادك الله علما وعافية وهو المطلوب والشكر موصول للأسناد عبد اللطيف
    1 point
  11. ياسادة رغم أني لم أدخل أبداً في مهاترات ومجادلات :- صاحب الموضوع مبرمج محترف . هل هو يتعامل مع الموضوع لتسويق البرنامج أم كمبرمج . 1- للتسويف ....... أنا أعطيته الحل التعامل مع رقم الحفلة بجدول خاص ويدخل الازمنة كما يبغي بدون مشاكل والطريقة مجربه واشتغلت معاه تمام . 2- كمبرمج ...... كل الحلول متاحة وبأكثر من طريقة لكن لازم يأخذ بالاعتبار شئ مهم جداً بعدما سويت البرنامج بأي طريقة واشتغل معاك على اعدادات جهازك ، من اعدادات اقليمية ولغة الجهاز وتنسيق التاريخ والوقت ................ لم يعمل عند الكل لاختلاف الاعدادات ولغة الجهاز عند المقارنات بالاكواد .... فقط جبيت أنوه وشكراً ولا داعي للرد على مشاركتي هذه .
    1 point
  12. مهتــــــــــــــــــــــم ومتـــــــــــــــــابــــــــــــــــع
    1 point
  13. أخي اليك التعديل كما طلبت leb.accdb
    1 point
  14. طيب تمام .. هذا شأنك وعملك .. اعانك الله على لم اطرافه دعنا إذا نُحكِم أصل الموضوع .. الذي هو الحجز واحتمالاته لدينا نقطتان او ثلاث 1- الإلغاء فقط .. 2- الغاء مع احلال بديل 3- تغيير الفترة اظهار الوقت ( الهدف) في الفورم مقدور عليه ما يهمنا هو البيانات في جدول الحجز عند هذه التعديلات .. والمسألة شائكة .. لأن التعديل من الجدول مباشرة لن يؤثر على قائمة الساعات المتاحة في الفورم حيث يجب التعديل ان يكون بالتزامن بين جدول الحجز وجدول tblTime ارجع للنقاط الثلاث : 1- الإلغاء فقط .. ( جدول المواعيد لا يجرى عليه تغيير وانما يلزم تمييزه بحقل نعم/لا يبين انه ملغى .. ويتم حذف الوقت والتاريخ من جدول tblTime فقط . ) 2- الغاء مع احلال بديل ( جدول المواعيد لا يجرى عليه تغيير وانما يلزم تمييزه بحقل نعم/لا يبين انه ملغى .. ويتم حذف الوقت والتاريخ من جدول tblTime .. ويسجل للبديل سجل جديد) 3- تغيير الفترة ( يتم تحديث الوقت والتاريخ في الجدولين معا) الفقرة 1 والفقرة 2 يترتب عليها شؤون مالية .. فيمكن نضع حقلا جديدا للمبلغ الذي يتم ارجاعه . اقصد ان الإلغاء فقط او الالغاء مع احلال بديل .. يجب ان يبقى السجل كما هو في جدول المواعيد هذا شرح مسبق لما سوف اقوم بمحاولة تنفيذه ..
    1 point
  15. بص يا عم مصطفى للتغلب على هذه المعضلة لا تقم بتحديد سعر الشراء ولا سعر البيع في الاصناف بل ضع السعر في فواتير الشراء والبيع واجعله رقم يدوي بحيث تحصل على الكمية من الاصناف اما السعر فانك لست مقيد وكل فاتورة تستطيع اضافة سعر خاص بنفس الصنف انا استخدم هذه الطريقة في برنامج المحاسبة الذي صممته
    1 point
  16. بارك الله فيك وفي علمك ونفع بك ممتاز عمل رائع هذا هو المطلوب... تحياتي لك
    1 point
  17. ارفق للمهتمين نموذج للنسخ الاحتياطي :- 1- بجوار قاعدة البيانات أ - نسخة احتياطية بالتاريخ بفلدر ب- نسخة احتياطية مضغوطة بالتاريخ بفلدر ج - نسخة احتياطية مضغوطة بباسوورد بالتاريخ بفلدر 2- بمسار تختاره أ - نسخة احتياطية ب- نسخة احتياطية مضغوطة ج - نسخة احتياطية مضغوطة بباسوورد فاصيل المكتبات المستخدمة في الكود: FileDialog: جزء من مكتبة Microsoft Office xx.0 Object Library. يسمح بفتح مربع حوار لتحديد الملفات أو المجلدات. CreateObject: جزء من مكتبة OLE Automation. يستخدم لإنشاء كائنات خارجية، مثل تطبيق Access. DBEngine.CreateDatabase: جزء من مكتبة Microsoft Access xx.0 Object Library. يستخدم لإنشاء قاعدة بيانات Access. إذا كانت المكتبات غير مفعلة: إذا لم تكن المكتبات المذكورة أعلاه مفعلة، يمكنك تفعيلها يدويًا عن طريق: فتح نافذة المراجع (Tools > References). البحث عن المكتبات المذكورة أعلاه. تفعيلها بوضع علامة صح (✔) بجانبها. اليكم المرفق . CopyDB.rar
    1 point
  18. الواقع يفرض فترة كافية بين كل حجزين متتاليين لانه لا يتوقع ابدا جاهزية القاعة في نهاية الحجز .. على الاقل يكون بينهما ساعة من اجل الاخلاء والتجهيز للحاجز الجديد
    1 point
  19. وعليكم السلام ورحمة الله نعالى وبركاته يمكنك الإعتماد على ورقة مخفية ضمن المصنف لترحيل البيانات المطلوبة إليها وحفظها مباشرة بصيغة Word Option Explicit Private Const DocName As String = "التوكيلات" Private Const FolderName As String = "ملفات Word" Sub ExportToWord() Dim CrWS As Worksheet, dest As Worksheet, a As Variant, b As Variant Dim lastRow As Long, i As Long, savePath As String, xPath As String Dim wdApp As Object, wdDoc As Object, tbl As Object, d As Object, OnRng As Range Application.ScreenUpdating = False Set CrWS = Sheets("صلاحيات رواكد"): Set dest = Sheets("WordCopy"): Set d = CreateObject("Scripting.Dictionary") dest.Visible = xlSheetVisible a = CrWS.Range("A1:H" & CrWS.Cells(Rows.Count, 1).End(xlUp).Row).Value dest.Range("A1:E" & dest.Rows.Count).ClearContents For i = LBound(a) To UBound(a): d(i) = Array(a(i, 1), a(i, 3), a(i, 4), a(i, 6), a(i, 8)): Next i b = Application.Transpose(Application.Transpose(d.items)): dest.Range("A1").Resize(UBound(b), UBound(b, 2)) = b lastRow = dest.Cells(dest.Rows.Count, 1).End(xlUp).Row Set OnRng = dest.Range("A1:E" & lastRow) With OnRng .HorizontalAlignment = xlCenter: .VerticalAlignment = xlCenter End With Set wdApp = CreateObject("Word.Application"): wdApp.Visible = True: Set wdDoc = wdApp.Documents.Add wdDoc.PageSetup.Orientation = 1: OnRng.Copy: wdDoc.Content.Paste: Set tbl = wdDoc.Tables(1) With tbl: .Range.ParagraphFormat.Alignment = 1: .Borders.Enable = True Dim ColArr As Variant: ColArr = Array(110, 110, 250, 110, 110) For i = 0 To UBound(ColArr): .Columns(i + 1).PreferredWidth = ColArr(i): Next i End With With tbl.Rows.Add .Cells(4).Range.Text = ": المجموع": .Cells(5).Range.Text = Application.Sum(dest.Range("E2:E" & lastRow)) With .Cells(4).Range: .Font.Color = RGB(255, 0, 0): .ParagraphFormat.Alignment = 1: End With .Cells(5).Range.Font.Color = RGB(255, 0, 0): .Cells(5).Range.Font.Bold = True .Cells(1).Merge tbl.Rows(tbl.Rows.Count).Cells(4) End With xPath = ThisWorkbook.Path & "\" & FolderName If Dir(xPath, vbDirectory) = "" Then MkDir xPath savePath = xPath & "\" & DocName & ".docx" On Error Resume Next wdDoc.SaveAs savePath If Err.Number <> 0 Then MsgBox "الملف مفتوح بالفعل حاول إغلاقه والمحاولة مرة أخرى ", vbCritical wdDoc.Close False: wdApp.Quit: Set wdDoc = Nothing: Set wdApp = Nothing Exit Sub End If On Error GoTo 0 wdDoc.Close False: wdApp.Quit: Set wdDoc = Nothing: Set wdApp = Nothing dest.Visible = xlSheetVeryHidden: Set dest = Nothing Application.ScreenUpdating = True MsgBox "تم تصدير البيانات بنجاح" End Sub ملف تصدير V2.xlsm
    1 point
  20. وعليكم السلام تم تعديل المعادلة في العمود F تعديل معادلة1.xlsm
    1 point
  21. وعليكم السلام ورحمة الله تعالى وبركاته لست متأكدا من طلبك لاكن حاول تجربة هدا Option Explicit Private Const n As Long = 25 Private Const rHeight As Double = 20 Private Const tmps As Integer = 4 Private Const Col As String = "B" Sub PrintWS() Dim lr As Long, i As Long Dim lastCol As Long, OnRng As Range Dim CrWS As Worksheet Dim ColNum As Long Set CrWS = Sheets("Data") Application.ScreenUpdating = False CrWS.ResetAllPageBreaks Application.ActiveWindow.View = xlPageBreakPreview ColNum = CrWS.Range(Col & "1").Column lr = CrWS.Range(Col & CrWS.Rows.count).End(xlUp).Row CrWS.Rows("5:" & lr).RowHeight = rHeight If lr > tmps + n Then For i = tmps + n + 1 To lr Step n CrWS.HPageBreaks.Add Before:=CrWS.Rows(i) Next i End If lastCol = CrWS.Cells(tmps, CrWS.Columns.count).End(xlToLeft).Column Set OnRng = CrWS.Range(CrWS.Cells(tmps, ColNum), CrWS.Cells(lr, lastCol)) CrWS.PageSetup.PrintArea = OnRng.Address CrWS.VPageBreaks.Add Before:=CrWS.Columns(lastCol + 1) CrWS.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1 With CrWS.PageSetup .Orientation = xlPortrait: .PaperSize = xlPaperA4 .FitToPagesWide = 1: .FitToPagesTall = False End With Application.ScreenUpdating = True End Sub Test V1.xlsb
    1 point
  22. وعليكم السلام ورحمة الله وبركاته تم حساب المطلوب بالمعادلات تفضل test002.xlsx
    1 point
  23. وعليكم السلام ورحمة الله تعالى وبركاته إدا كنت قد فهمت طلبك بشكل صحيح فربما هدا سيوفي بالغرض Option Explicit Dim WS As Worksheet Dim OnRng As Variant Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set WS = Sheets("Sheet1") If Not Intersect([A2:A11], Target) Is Nothing And Target.Count = 1 Then OnRng = WS.Range("C2:C" & WS.Cells(WS.Rows.Count, "C").End(xlUp).Row).value Me.ComboBox1.List = Application.Transpose(OnRng) Me.ComboBox1.Height = Target.Height + 3 Me.ComboBox1.Width = Target.Width Me.ComboBox1.Top = Target.Top Me.ComboBox1.Left = Target.Left Me.ComboBox1.value = Target.value Me.ComboBox1.Visible = True Me.ComboBox1.Activate Else Me.ComboBox1.Visible = False End If End Sub Private Sub ComboBox1_Change() If Me.ComboBox1.value <> "" Then Dim d1 As Object Set d1 = CreateObject("Scripting.Dictionary") Dim tmp As String tmp = UCase(Me.ComboBox1.value) & "*" Dim i As Long For i = 1 To UBound(OnRng, 1) If UCase(OnRng(i, 1)) Like tmp Then d1(OnRng(i, 1)) = "" Next i Me.ComboBox1.List = d1.Keys Me.ComboBox1.DropDown End If ActiveCell.value = Me.ComboBox1.value End Sub Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Me.ComboBox1.List = Application.Transpose(OnRng) Me.ComboBox1.Activate Me.ComboBox1.DropDown End Sub Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then ActiveCell.Offset(1).Select End If End Sub قائمة منسدلة مع البحث والاكمال التلقائي.xlsb
    1 point
  24. عندي انا يعمل 100% في شيت الاول لا تعمل اي شيء البرنامج يعمل تسطير من تلقاء نفسه مع بدء كتابة في صف جديد عملت لك فلاتر اذا حبيت تصدير بين تاريخين ، اكتب تاريخين " من الى" ثم اضغط على زر فلتر ما فهمت قصك بضبط ، حاليا كيو آركود موجو في عمود M و نص كيوآركود من عمود I في نفس صف، و يعمل كماهو على كل حال انت جرب المرفق و شوف نتيجة أنشطة 2025 (A).xlsb
    1 point
  25. تفضل جرب هدا التعديل Option Explicit Sub test() Dim wbDest As Workbook, wbData As Workbook Dim WS As Worksheet, CrWS As Worksheet Dim Irow&, nRow&, xPath$, xFile$, fname As Variant Dim i, j, k As Integer, ShArr As Variant, OnRng, tmps As Range Dim WSIndex As Integer SetApp False xPath = ThisWorkbook.Path fname = Array("رصيد التوكيلات1.xlsx", "رصيد التوكيلات_كفرالشيخ.xlsx", "رصيد التوكيلات_البحيرة.xlsx", _ "رصيد التوكيلات_طنطا.xlsx", "رصيد التوكيلات_المنصورة.xlsx", "رصيد التوكيلات_دكرنس.xlsx", _ "رصيد التوكيلات_دمياط.xlsx", "رصيد التوكيلات_المنوفية.xlsx", "رصيد التوكيلات_الشرقية.xlsx", _ "رصيد التوكيلات_الاسماعيلية.xlsx", "رصيد التوكيلات_بور سعيد.xlsx", "رصيد التوكيلات_السويس.xlsx", _ "رصيد التوكيلات_المقطم.xlsx", "رصيد التوكيلات_مؤسسة الزكاة.xlsx", "رصيد التوكيلات_الجيزة.xlsx", _ "رصيد التوكيلات_القليوبية.xlsx", "رصيد التوكيلات_الفيوم.xlsx", "رصيد التوكيلات_بنى سويف.xlsx", _ "رصيد التوكيلات_المنيا.xlsx", "رصيد التوكيلات_اسيوط.xlsx", "رصيد التوكيلات_سوهاج.xlsx", _ "رصيد التوكيلات_جرجا.xlsx", "رصيد التوكيلات_قنا.xlsx", "رصيد التوكيلات_نجع حمادى.xlsx", _ "رصيد التوكيلات_الغردقة.xlsx", "رصيد التوكيلات_الاقصر.xlsx", "رصيد التوكيلات_اسوان.xlsx", _ "رصيد التوكيلات_ادفو.xlsx") ShArr = Array("الاسكندرية", "كفرالشيخ", "البحيرة", "طنطا", "المنصورة", "دكرنس", _ "دمياط", "المنوفية", "الشرقية", "الاسماعيلية", "بور سعيد", "السويس", _ "المقطم", "مؤسسة الزكاة", "الجيزة", "القليوبية", "الفيوم", "بنى سويف", _ "المنيا", "اسيوط", "سوهاج", "جرجا", "قنا", "نجع حمادى", "الاقصر", "اسوان", "ادفو") Set wbData = ThisWorkbook On Error Resume Next Set wbDest = Workbooks.Open(xPath & "\" & fname(0), ReadOnly:=True) If wbDest Is Nothing Then MsgBox "تعذر العثور على الملف " & fname(0), vbCritical SetApp True Exit Sub End If On Error GoTo 0 For WSIndex = LBound(fname) To UBound(fname) xFile = xPath & "\" & fname(WSIndex) On Error Resume Next Set wbDest = Workbooks.Open(xFile, ReadOnly:=True) If wbDest Is Nothing Then MsgBox "تعذر العثور على الملف " & fname(WSIndex), vbCritical SetApp True Exit Sub End If On Error GoTo 0 For i = LBound(ShArr) To UBound(ShArr) On Error Resume Next Set CrWS = wbData.Sheets(ShArr(i)) On Error GoTo 0 If Not CrWS Is Nothing Then Set WS = Nothing On Error Resume Next Set WS = wbDest.Sheets(ShArr(i)) On Error GoTo 0 If Not WS Is Nothing Then Irow = WS.Cells(WS.Rows.Count, 2).End(xlUp).Row If Irow < 4 Then GoTo SkipSheet End If For j = 6 To 19 Set tmps = CrWS.Cells(3, j) For k = 6 To 19 Set OnRng = WS.Cells(3, k) If OnRng.Value = tmps.Value And Not IsEmpty(OnRng.Value) Then For nRow = 4 To 71 If Not IsEmpty(WS.Cells(nRow, k).Value) Then CrWS.Cells(nRow, j).Value = WS.Cells(nRow, k).Value End If Next nRow Exit For End If Next k Next j For nRow = 4 To 71 If Not IsEmpty(WS.Cells(nRow, 2).Value) Then CrWS.Cells(nRow, 2).Value = WS.Cells(nRow, 2).Value End If Next nRow End If End If SkipSheet: Next i SkipFile: wbDest.Close False Next WSIndex MsgBox "تم نقل البيانات من جميع الملفات بنجاح", vbInformation SetApp True End Sub Private Sub SetApp(ByVal enable As Boolean) On Error Resume Next Application.ScreenUpdating = enable Application.EnableEvents = enable Application.DisplayAlerts = enable Application.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual) End Sub نقل البيانات من مصنفات متعددة.rar
    1 point
  26. وعليكم السلام ورحمة الله وبركاته الكود عمله من A2 الى A1000 ويمكن التعديل من الكود جرب اكتب في اي خلية في العمود A عدا A1
    1 point
×
×
  • اضف...

Important Information