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

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

  1. محمد هشام.

    محمد هشام.

    الخبراء


    • نقاط

      11

    • Posts

      1,588


  2. عبدالله بشير عبدالله
  3. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      3

    • Posts

      12,445


  4. الرحال 123

    الرحال 123

    عضو جديد 01


    • نقاط

      2

    • Posts

      7


Popular Content

Showing content with the highest reputation on 19 ديس, 2024 in all areas

  1. وعليكم السلام ورحمة الله تعالى وبركاته بعد إذن الأستاد @عبدالله بشير عبدالله بما ان الكود الخاص به يعتمد على التنسيق إليك حل آخر باظهار رسالة تنبيه عند تجاوز الحد الاقصى للتكرارات بشرط التاريخ في عمود b [نفس الشهر ] واسم المهنة عمود d والحالة في عمود F طريقة الإدخال الكود_ المهنة _الحالة Private Sub Worksheet_Change(ByVal Target As Range) Dim lastRow As Long, Max As Integer, kay As Variant, xdate As Variant Max = 5 Application.EnableEvents = False lastRow = Cells(Rows.Count, 4).End(xlUp).Row If Not Intersect(Target, Me.Columns("B")) Is Nothing Then For Each cell In Target If cell.Value <> "" And IsEmpty(cell.Offset(0, 1).Value) Then cell.Offset(0, 1).Value = Date Else cell.Offset(0, 1).Value = "" End If Next cell End If If Not Intersect(Target, Me.Range("C5:F" & lastRow)) Is Nothing Then For Each cell In Target If cell.Column = 6 And cell.Value = "إجازة" Then kay = cell.Offset(0, -2).Value xdate = cell.Offset(0, -3).Value If IsEmpty(kay) Or IsEmpty(xdate) Then MsgBox "يجب إدخال كود الموظف", vbExclamation, "إنتبـــــاه" cell.ClearContents GoTo SupAPP End If If WorksheetFunction.CountIfs(Range("D5:D" & _ lastRow), kay, Range("F5:F" & lastRow), "إجازة", Range("C5:C" & lastRow), xdate) > 1 Then cell.ClearContents MsgBox " تم الوصول للحد الأقصى للإجازات هدا الشهر لسائقين :" & _ " " & kay, vbExclamation, "إنتبـــــاه" GoTo SupAPP End If If WorksheetFunction.CountIfs(Range("D5:D" & _ lastRow), kay, Range("F5:F" & lastRow), "إجازة", Range("C5:C" & lastRow), ">=" & WorksheetFunction.EoMonth(xdate, -1) + 1, _ Range("C5:C" & lastRow), "<=" & WorksheetFunction.EoMonth(xdate, 0)) > Max Then cell.ClearContents MsgBox "وصلت للحد الأقصى لهذا الشهر في إجازات السائق: " & kay, vbExclamation, "إنتبـــــاه" End If End If SupAPP: Next cell End If Application.EnableEvents = True End Sub اجاز V1.xlsb
    3 points
  2. وعليكم السلام ورحمة الله تعالى وبركاته كما سبق الدكر من الأستاد @عبدالله بشير عبدالله طلبك غير واضح إظافة أن أرقام الأعمدة على الملف تتواجد في الصف 3 ليس 2 مجرد تخمين ربما تقصد جلب بيانات العمود بشرط إدخال قيمة رؤوس الأعمدة (رقم العمود) جرب هدا Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim OnRng As Variant, tmp As Variant, lastRow As Long, a As Long, Clé As String Dim WS As Worksheet: Set WS = Sheets("Sheet1") If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, WS.Range("AQ3:BO3")) Is Nothing Then lastRow = WS.Columns("A:Z").Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row OnRng = WS.Range("A4:Z" & lastRow).Value tmp = WS.Range("A3:Z3").Value Clé = Target.Value Application.ScreenUpdating = False If IsEmpty(Target.Value) Then WS.Range(WS.Cells(4, Target.Column), WS.Cells(lastRow, Target.Column)).ClearContents Else For a = 1 To UBound(tmp, 2) If tmp(1, a) = Clé Then With WS.Range(WS.Cells(4, Target.Column), WS.Cells(lastRow, Target.Column)) .ClearContents .Value = Application.Index(OnRng, 0, a) End With Exit For End If Next a End If If a > UBound(tmp, 2) Then Target.ClearContents: MsgBox "لم يتم العثور على " & _ Target.Value & " في قاعدة البيانات", vbExclamation, "إنتبـــاه" End If Application.ScreenUpdating = True End Sub استخراج الاعمدة.xlsm
    3 points
  3. تفضل ... Me.Caption =DLookUp("[school]";"Tbl_basic") في حدث عند تحميل النموذج
    2 points
  4. 2 points
  5. وعليكم السلام ورحمة الله وبركانه الكود Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Me.Range("B:B")) Is Nothing Then Dim c As Range For Each c In Target If c.Value <> "" And IsEmpty(c.Offset(0, 1).Value) Then c.Offset(0, 1).Value = Date End If Next c End If If Not Intersect(Target, Me.Range("D:D")) Is Nothing Then Dim dCell As Range For Each dCell In Target If dCell.Offset(0, 2).Value = "إجازة" Then If Application.WorksheetFunction.CountIfs(Me.Range("D:D"), dCell.Value, Me.Range("F:F"), "إجازة", _ Me.Range("E:E"), ">=" & DateSerial(Year(dCell.Offset(0, -1).Value), Month(dCell.Offset(0, -1).Value), 1), _ Me.Range("E:E"), "<=" & WorksheetFunction.EoMonth(dCell.Offset(0, -1).Value, 0)) > 5 Then dCell.Interior.Color = RGB(255, 0, 0) Else dCell.Interior.ColorIndex = -4142 End If Else dCell.Interior.ColorIndex = -4142 End If Next dCell End If Application.EnableEvents = True End Sub الملف اجاز.xlsb
    2 points
  6. وعليكم السلام ورحمة الله وبركاته يمكن ينفع جرب النموذج في قاعدة موجودة عندك حتى ترى المعيار يتحرك حجم القاعدة.accdb
    2 points
  7. الف شكر على الامثله وهذه مشاركة مني وان شاء الله راح ابحث عن اضافت لتحويل الارقام الى عداد متحرك حجم قاعدة البيانات الحالية.accdb
    1 point
  8. السلام عليكم استاذنا الفاضل @محمد هشام. اولا اعتزر للتاخر فى الرد لظروف شخصية لا اجد من كلمات الشكر تفى حقك الف الف شكر لحضرتك الكود رائع و ينفذ المطلوب زادك الله من علمه و فضله و رفع قدرك
    1 point
  9. هل هذه هي الرسالة الظاهرة لديك ؟؟ اذا كانت الاجابة نعم !!! فانت تحتاج الى تغيير اسم المشروع لديك .... لفعل ذلك انظر الصورة التالية ...... غير اسم Database باي اسم اخر .... فقط
    1 point
  10. أكسس برنامج مكتبي! والمستخدمون أعطوه هالة أكبر من حجمه بسبب سهولته.. لكنه لا يصلح للنشر التجاري المحوكم أبدا! ولو أعطى محبو أكسس بعض وقتهم لتعلم التطبيقات التي تخدم قواعد البيانات مثل Visual Studio Dotnet أو Delphi لوجدواها غنية بالأدوات التي لا يحتاج المطور معها إلى أدوات مساعدة إلا في حدود ضيقة جدا! وعلى العكس أنا أشجعك على خطوتك الجريئة في تعلم الدلفي إذا كنت تسعى للنشر التجاري! لكن إذا كنت ممن يستخدم أكسس في النشر المكتبي فهو خيار جيد.. ** أكسس للنشر المكتبي: استخدام تطبيق أكسس لتصميم قواعد بيانات مفتوحة المصدر ولا تخضع لحقوق النشر!
    1 point
  11. شكرا لك ابو مروان هجرب الحلول الموجوده وان شاء الله المشكله تتحل
    1 point
  12. تم الحل ولاكن بكود مختلف اخر Sub UpdateStock() Dim ws As Worksheet Dim lastRow As Long, foundRow As Long Dim item As String, fromStore As String, selectedDate As Date Dim quantity As Long Dim foundMatch As Boolean Set ws = ThisWorkbook.Sheets("Sheet1") item = ComboBox4.Value fromStore = ComboBox2.Value selectedDate = CDate(TextBox15.Value) quantity = CLng(TextBox8.Value) If quantity <= 0 Then MsgBox "الكمية المحولة يجب أن تكون أكبر من الصفر", vbExclamation Exit Sub End If foundMatch = False ' Flag to indicate if a match is found With ws.Range("A2:G" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row) Set foundCell = .Find(What:=item, LookIn:=xlValues, LookAt:=xlWhole, _ SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) If Not foundCell Is Nothing Then firstAddress = foundCell.Address Do If ws.Cells(foundCell.Row, 3).Value = fromStore And _ ws.Cells(foundCell.Row, 7).Value = selectedDate Then ws.Cells(foundCell.Row, 6).Value = ws.Cells(foundCell.Row, 6).Value + quantity foundMatch = True Exit Do End If Set foundCell = .FindNext(After:=foundCell) Loop While Not foundCell Is Nothing And foundCell.Address <> firstAddress End If ' Add new row only if no exact match was found If Not foundMatch Then lastRow = ws.UsedRange.Rows.Count + 1 With ws.Rows(lastRow) .Cells(1).Value = item .Cells(2).Value = ComboBox3.Value .Cells(3).Value = fromStore .Cells(4).Value = TextBox7.Value .Cells(5).Value = TextBox1.Value .Cells(6).Value = TextBox8.Value .Cells(7).Value = TextBox15 End With MsgBox "تم إضافة صف جديد بنجاح", vbInformation ElseIf foundMatch Then MsgBox "تم تحديث الكمية في الصف الموجود", vbInformation End If End With End Sub Private Sub CommandButton4_Click() Call UpdateStock End Sub
    1 point
  13. تفضل استاذنا @الحلبي حسب مافهمت . المرفق والشرح . ووافني بالرد . New folder-1.rar
    1 point
  14. استاذى الفاضل طلبك غير واضح فحاول توضح اكتر او دعم الطلب بصور توضيحية
    1 point
  15. تفضل وجدت لك مثال من عمل اخونا شيفان .. مع بعض تصرف db1.rar
    1 point
  16. وعليكم السلام ورحمة الله تعالى وبركاته بعد إدن الأستاد @عبدالله بشير عبدالله إليك حلول أخرى =IF(A1>3000, A1*IF(B1<=500, 1.5, 2.5), IF(B1<500, 6000, "")) =IFERROR(IFS( AND(A1>3000, B1<=500), A1*1.5, AND(A1>3000, B1>500), A1*2.5, AND(A1<=3000, B1<500), 6000, TRUE, "" ), "") او Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("A:B")) Is Nothing Then Dim data As Variant, tmp() As Variant, lastRow As Long, i As Long Dim a As Double: a = 3000: b = 500: c = 6000 lastRow = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row data = Me.Range("A1:B" & lastRow).Value ReDim tmp(1 To UBound(data, 1), 1 To 1) For i = 1 To UBound(data, 1) If IsEmpty(data(i, 1)) Or IsEmpty(data(i, 2)) Then tmp(i, 1) = "" ElseIf IsNumeric(data(i, 1)) And IsNumeric(data(i, 2)) Then If data(i, 1) > a Then tmp(i, 1) = IIf(data(i, 2) <= b, data(i, 1) * 1.5, data(i, 1) * 2.5) ElseIf data(i, 2) < b Then tmp(i, 1) = c Else tmp(i, 1) = "" End If Else tmp(i, 1) = "" End If Next i Me.Range("C1:C" & lastRow).Value = tmp End If End Sub test2025.xlsb
    1 point
  17. وعليكم السلام ورحمة الله وبركانه العمود c كود Sub CalculateValues() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim colA As Double Dim colB As Double Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 1 To lastRow colA = ws.Cells(i, "A").Value colB = ws.Cells(i, "B").Value If colB <= 500 And colA > 3000 Then ws.Cells(i, "C").Value = colA * 1.5 ElseIf colB > 500 And colA > 3000 Then ws.Cells(i, "C").Value = colA * 2.5 ElseIf colB < 500 And colA < 3000 Then ws.Cells(i, "C").Value = 6000 Else ws.Cells(i, "C").Value = "" End If Next i End Sub العمود d معادلة =IF(B1<500; IF(A1>3000; A1*1.5; 6000); IF(A1>3000; A1*2.5; "")) test2025.xlsb
    1 point
  18. السلام عليكم ورحمة الله وبركانه تم وضع خيار نعم في العمود e لتحديد المرسل اليهم زر لتحديد الكل قي العمود e زر لمسح الكل قي العمود eا اظافة للكود لنجاوز اي رقم لا يملك واتس او لايتمكن من الارسال اليه ليس لدي واتس لاقوم بالتجربة واتساب رسائل المستأجرين-نسخة.xlsm
    1 point
  19. أهلا بك @gavan أراك تمردت على أكسس وأنشققت عنه وتحزبت إلى دولفي!.. أود إحاطتك علما أن لك زملاء سبقوك إلى دلفي من أبرزهم الأستاذ @صالح حمادي يمكنك مراسلته على الخاص فلربما يظهر على أيديكما قسم جديد! اسمه منتدي الدلفي!😁
    1 point
  20. نعم اخي @hanykassem نظرا للمثال المرفق هناك بعض الإحتمالات الواردة في حالة كان هناك تكرار لنفس القيم كما هو موضح في الصورة أدناه Private Sub Worksheet_Change(ByVal Target As Range) Dim WS As Worksheet: Set WS = Sheets("Sheet1") Dim i As Long, ling As Long, lastRow As Long, tmp As String, kayB As String, kayC As String, _ j As Variant, a As Object, r As Object Set a = CreateObject("Scripting.Dictionary"): Set r = CreateObject("Scripting.Dictionary") If Not Intersect(Target, WS.Range("A4:C" & WS.Rows.Count)) Is Nothing Then Application.ScreenUpdating = False With WS .Range("I3:K" & .Rows.Count).ClearContents lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ling = 3 For i = 4 To lastRow tmp = .Cells(i, 1).value kayB = .Cells(i, 2).value kayC = .Cells(i, 3).value If tmp <> "" Then If kayB <> "" Then a(tmp) = IIf(a.Exists(tmp), a(tmp) & " , " & kayB, kayB) If kayC <> "" Then r(tmp) = IIf(r.Exists(tmp), r(tmp) & " , " & kayC, kayC) End If Next i For Each j In a.Keys .Cells(ling, 9).value = j .Cells(ling, 10).value = a(j) .Cells(ling, 11).value = r(j) ling = ling + 1 Next j .Columns("j:K").AutoFit End With Application.ScreenUpdating = True End If End Sub لحدف التكرارات قم بتعديل الصف التالي If tmp <> "" Then If kayB <> "" Then a(tmp) = IIf(a.Exists(tmp), a(tmp) & " , " & kayB, kayB) If kayC <> "" Then r(tmp) = IIf(r.Exists(tmp), r(tmp) & " , " & kayC, kayC) End If إلى If tmp <> "" Then If kayB <> "" Then If Not a.Exists(tmp) Then a.Add tmp, _ kayB Else If InStr(1, a(tmp), kayB) = 0 Then a(tmp) = a(tmp) & " , " & kayB If kayC <> "" Then If Not r.Exists(tmp) Then r.Add tmp, _ kayC Else If InStr(1, r(tmp), kayC) = 0 Then r(tmp) = r(tmp) & " , " & kayC End If TEST CODE 2.xlsb
    1 point
  21. ابحث في حقل google الذي يظهر في منتصف اعلى الصفحة ..
    1 point
  22. وعليكم السلام ورحمة الله تعالى وبركاته يمكنك استخدام الكود التالي من المصنف الرئيسي وتحديث ملفات الإدارة دفعة واحدة بدون فتحها او تغيير تنسيقها يكفي وضعها في نفس مسار المصنف بحيث يتم تحديث البيانات عند التحقق من عدم وجود الرقم التأميني مسبقا على ملف الإدارة الهدف وتحديث عمود (م) وإظافة تاريخ التحديث في عمود ( تاريخ دخول القسم) Option Explicit Sub Departments_update() Dim WB As Workbook, destWB As Workbook, srcWS As Worksheet, destWS As Worksheet, _ iRow As Long, Rng As Range, dstRng As Long, lastRow As Long, Cnt As String, _ tmp As String, n As String, WSname As String, ShArr As Variant, j As Boolean, _ Updated As Boolean, nameFile As String, cell As Range, result As Boolean ShArr = Array("المستحقين", "احياء", "التفتيش", "اخرى") Cnt = "=SUBTOTAL(103,INDIRECT(ADDRESS(ROW(),COLUMN()+1)&"" :""&ADDRESS(ROW($E$7),COLUMN()+1)))" Updated = False result = False Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual Application.EnableEvents = False: Application.DisplayAlerts = False Set WB = ThisWorkbook For Each srcWS In WB.Worksheets If Not IsError(Application.Match(srcWS.Name, ShArr, 0)) Then WSname = srcWS.Name nameFile = WB.Path & "\" & WSname & ".xls" If Dir(nameFile) <> "" Then result = True Set destWB = Workbooks.Open(nameFile) Set destWS = destWB.Worksheets(WSname) If Not destWS Is Nothing Then For iRow = 7 To srcWS.Cells(srcWS.Rows.Count, "R").End(xlUp).Row n = srcWS.Cells(iRow, "R").Value If InStr(1, n, WSname, vbTextCompare) > 0 And n <> "" Then tmp = srcWS.Cells(iRow, "E").Value j = False lastRow = destWS.Cells(destWS.Rows.Count, "E").End(xlUp).Row For Each cell In destWS.Range("E7:E" & lastRow) If cell.Value = tmp Then j = True Exit For End If Next cell If Not j Then Set Rng = srcWS.Range(srcWS.Cells(iRow, 3), srcWS.Cells(iRow, 27)) dstRng = destWS.Cells(destWS.Rows.Count, "E").End(xlUp).Row + 1 If dstRng < 7 Then dstRng = 7 destWS.Cells(dstRng, "C").Resize(, 25).Value = Rng.Value destWS.Cells(dstRng, "D").Value = Date destWS.Cells(dstRng, "B").Formula = Cnt Updated = True End If End If Next iRow destWB.Close SaveChanges:=True Else destWB.Close SaveChanges:=False End If Set destWB = Nothing Set destWS = Nothing End If End If Next srcWS If result Then MsgBox IIf(Updated, "تم تحديث البيانات بنجاح", "جميع البيانات محدثة مسبقا"), vbInformation, "تعليمات" Else MsgBox "لم يتم العثور على أي ملفات خاصة بالإدارات", vbExclamation, "تنبيه" End If Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True: Application.DisplayAlerts = True Set WB = Nothing: Set srcWS = Nothing: Set Rng = Nothing: Set cell = Nothing End Sub ملفات الإدارة.rar ترحيل الصفوف مع عدم التكرار.rar
    1 point
  23. وعليكم السلام ورحمة الله وبركاته 🙂 عملت شيء مشابه لهذا سابقا .. فقط يمكن تعديله ليتوافق مع الحاجة 🙂 ‏‏Meter -Moosak _ Final.accdb
    1 point
  24. كمشاركة في هذه النقطة . هذا ملف قديم من أحد المواضيع وتم تعديله بشيء بسيط حسب حاجة صاحب المشروع سابقاً ( وهو برنامج أرشفة كتب إلكتروني لمؤسسة ) .. بالبداية قم بتثبيت البرنامجين 1st و 2nd ثم في النموذج PDF .. اختر من القائمة نوع الملف الذي تريده ( Jpg , Pdf ) ثم رقم الكتاب والتاريخ ( تستطيع تغييرها حسب حاجتك ) ثم زر سحب PDF أما فيما يتعلق بزر إدراج PDF ، فهو لاختيار ملف PDF من الكمبيوتر الخاص بك . تمت تجربته سابقاً على ماسح ضوئي فيدر .. ولكن تحسباً لإختلاف نوع الماسح الضوئي أو الويندوز أو ظروف بيئة العمل ، قم بتجربته وإخبارنا بالنتيجة . ♻ التحميل من جوجل درايف
    1 point
  25. تقصد انك تعمل مجلد بجانب قاعدة بيانات الجداول .. ويتم حفظ الملفات في المجلد .. مهما تغير مكان هذه القاعدة بمعنى اوضح .. قاعدة الجداول على الجهاز السيرفر .. وتريد حفظ الملفات من اي واجهة فرعية على السيرفر؟ اذا صح .. نعم يمكن
    1 point
  26. السلام عليكم هل ممكن تقسيم قاعدة البيانات ويتم الحاق الفولدر بقاعدة البيانات
    1 point
  27. العفو أخي @ahmed sewelam يسعدنا أننا إستطعنا مساعدتك ' تحويل القيمة المدخلة الى تاريخ MinDate و MaxDate MinDate = CDate(TextBox1.Value) MaxDate = CDate(TextBox2.Value) ' جلب البيانات من النطاق A3:I a = WS.Range("A3:I" & WS.Cells(Rows.Count, 1).End(xlUp).Row).Value ' قواميس لتخزين البيانات المجمعة ' dc لتخزين صافي المبيعات، dnc لتخزين صافي المردودات، dnc1 لتخزين المندوب Set dc = CreateObject("Scripting.Dictionary") Set dnc = CreateObject("Scripting.Dictionary") Set dnc1 = CreateObject("Scripting.Dictionary") For i = 1 To UBound(a, 1) 'MinDate و MaxDate إذا كان التاريخ ' (العمود B) a(i, 2)' 'يقع بين If a(i, 2) >= MinDate And a(i, 2) <= MaxDate Then tmp = Trim(a(i, 7)) ' العمود G: "المندوب" ' إذا لم يكن المندوب موجودا مسبقا في القاموس نقوم بإضافته وتخزين القيم المبدئية If Not dc.Exists(tmp) Then dnc1(tmp) = a(i, 6) ' العمود F: "تخزين اسم المندوب" dc(tmp) = a(i, 8) ' العمود H: "تخزين صافي المبيعات" dnc(tmp) = a(i, 9) ' العمود I: "تخزين صافي المردودات" Else ' إذا كان المندوب موجودا إضافة القيم إلى القيم المخزنة dc(tmp) = dc(tmp) + a(i, 8) ' تجميع عدد المبيعات dnc(tmp) = dnc(tmp) + a(i, 9) ' تجميع المردودات End If End If Next i 'إذا كانت القواميس تحتوي على بيانات (dc.Count > 0) ' مطابقة للفترة الزمنية المحددة If dc.Count > 0 Then Application.ScreenUpdating = False 'مسح أي محتوى سابق من النطاق C12:F في ورقة "Report" With dest.Range("C12:F" & dest.Rows.Count) .ClearContents .ClearFormats End With ' تعيين حجم المصفوفة arr بناءا على عدد العناصر في القاموس dc n = 1 ReDim arr(1 To dc.Count, 1 To 4) ' تعبئة المصفوفة For Each key In dc.Keys arr(n, 1) = dnc1(key) ' العمود الأول في arr: "كود" arr(n, 2) = key ' العمود الثاني : "المندوب" arr(n, 3) = dc(key) ' العمود الثالث : "إجمالي المبيعات" arr(n, 4) = dnc(key) ' العمود الرابع : "إجمالي المردودات" n = n + 1 Next key ' نسخ محتويات المصفوفة "Report"(C12) بداية من الخلية dest.Range("C12").Resize(dc.Count, 4).Value = arr ' تحديد الصف الأخير المستخدم بعد إدراج البيانات lastRow = dest.Cells(dest.Rows.Count, "E").End(xlUp).Row ' إضافة "الإجمالي" في العمود D أسفل البيانات dest.Cells(lastRow + 1, "D").Value = "الإجمالي" 'وضع الإجمالي أسفل التقرير ' للأعمدة E و F (صافي المبيعات وصافي المردودات)' For Each col In Array("E", "F") dest.Cells(lastRow + 1, col).Value = Application.WorksheetFunction.Sum(dest.Range(col & "12:" & col & lastRow)) Next col ' يتم وضع تاريخ البداية والنهاية في الخلايا E9 و F9 dest.Range("E9").Value = MinDate dest.Range("F9").Value = MaxDate ' نطاق البيانات في التقرير Set Rng = dest.Range("C12:F" & lastRow) ' إضافة حدود حول كل صف في التقرير يحتوي على بيانات For Each C In Rng.Rows If Application.WorksheetFunction.CountA(C) > 0 Then C.Borders.LineStyle = xlContinuous End If Next C
    1 point
  28. وعليكم السلام ورحمة الله تعالى وبركاته Option Explicit Private Sub CommandButton1_Click() Dim MinDate As Date, MaxDate As Date Dim WS As Worksheet, dest As Worksheet Dim a As Variant, tmp As String Dim dc As Object, dnc As Object, dnc1 As Object Dim arr() As Variant, n As Long, lastRow As Long, i As Long Dim Rng As Range, C As Range, col As Variant, key As Variant Set WS = Sheets("DATA"): Set dest = Sheets("Report") If Not IsDate(TextBox1.Value) Or Not IsDate(TextBox2.Value) Then MsgBox "المرجوا التحقق من التواريخ", vbExclamation Exit Sub End If MinDate = CDate(TextBox1.Value) MaxDate = CDate(TextBox2.Value) a = WS.Range("A3:I" & WS.Cells(Rows.Count, 1).End(xlUp).Row).Value Set dc = CreateObject("Scripting.Dictionary") Set dnc = CreateObject("Scripting.Dictionary") Set dnc1 = CreateObject("Scripting.Dictionary") For i = 1 To UBound(a, 1) If a(i, 2) >= MinDate And a(i, 2) <= MaxDate Then tmp = Trim(a(i, 7)) If Not dc.Exists(tmp) Then dnc1(tmp) = a(i, 6): dc(tmp) = a(i, 8): dnc(tmp) = a(i, 9) Else dc(tmp) = dc(tmp) + a(i, 8): dnc(tmp) = dnc(tmp) + a(i, 9) End If End If Next i If dc.Count > 0 Then Application.ScreenUpdating = False With dest.Range("C12:F" & dest.Rows.Count) .ClearContents: .ClearFormats End With n = 1 ReDim arr(1 To dc.Count, 1 To 4) For Each key In dc.Keys arr(n, 1) = dnc1(key): arr(n, 2) = key: arr(n, 3) = dc(key): arr(n, 4) = dnc(key) n = n + 1 Next key dest.Range("C12").Resize(dc.Count, 4).Value = arr lastRow = dest.Cells(dest.Rows.Count, "E").End(xlUp).Row dest.Cells(lastRow + 1, "D").Value = "الإجمالي" For Each col In Array("E", "F") dest.Cells(lastRow + 1, col).Value = Application.WorksheetFunction.Sum(dest.Range(col & "12:" & col & lastRow)) Next col dest.Range("E9").Value = MinDate: dest.Range("F9").Value = MaxDate Set Rng = dest.Range("C12:F" & lastRow) For Each C In Rng.Rows If Application.WorksheetFunction.CountA(C) > 0 Then C.Borders.LineStyle = xlContinuous End If Next C Else MsgBox "لا توجد بيانات تطابق التواريخ المحددة" End If Application.ScreenUpdating = True End Sub TEST v1.xlsm
    1 point
  29. السلام عليكم حسب فهمى لطلبك انك تكتب في الخلية A1 يبقى الكود ثانية ثم ينتقل الى الخلايا التي بعدها في نفس العمود والفارق الزمني ثانيةواحدة بين نقلة واخري الكود ينتقل الى اخر خلية فيها بيانات ثم يتوقف يمكن تعديل الزمن في الكود الى اي مدة Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Me.Range("A1")) Is Nothing Then If Target.Value <> "" Then Application.OnTime Now + TimeValue("00:00:01"), "MoveToNextCellContinuously" End If End If End Sub Sub MoveToNextCellContinuously() Static NextCell As Range On Error Resume Next If NextCell Is Nothing Then Set NextCell = Worksheets("Sheet1").Range("A2") Else Set NextCell = NextCell.Offset(1, 0) End If If NextCell.Row <= Worksheets("Sheet1").Rows.Count And NextCell.Value <> "" Then NextCell.Select Application.OnTime Now + TimeValue("00:00:01"), "MoveToNextCellContinuously" End If End Sub الملف 011.xlsm
    1 point
  30. السلام عليكم ورحمة الله وبركاته الملف به 1048576 مليون معادلة صفيف في صفحة الموظفين به 1048576 مليون معادلة صفيف في صفحة المعلمبن 8 تم حذف المعادلات ويمكنك اعادة كتابنها حسب حاجنك لم توضح ما هو الذي تريد البحث عنه وفي اي شبتات واين توضع نتيجة البحث على كل حال محاولة حسب تخمينى يوجد زر في شيت الرئيسية باسم بحث مدرسة ديوان الطالب مفصلة 26-10-2024.xlsb
    1 point
  31. شرح معادله INDIRECT وكذا شرح داله offest للمبدع ياسر خليل ملفات مرفقة شرح المعادله INDIRECT.rar 8.5 كيلو 10 عدد مرات التحميل شرح داله اوفيست للاستاذ ياسر خليل. rar 11.58 كيلو 9 عدد مرات التحميل Index Function.rar 31.48 كيلو 9 عدد مرات التحميل شهادة السحيب الجميلة.rar 20.38كيلو 7 عدد مرات التحميل
    1 point
  32. السلام عليكم معذرة , فعندما تكون النتيجة صف واحد تنشيء هذه المشكلة . حسنا جرب هذا التعديل تحياتي ملف بحث بفورم ممتاز++SORT.rar
    1 point
×
×
  • اضف...

Important Information