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

أ / محمد صالح

أوفيسنا
  • Posts

    4,359
  • تاريخ الانضمام

  • Days Won

    185

كل منشورات العضو أ / محمد صالح

  1. الصواب في الفرز على الصف 11 ولكن المشكلة الحقيقية في تنفيذ الفرز في ملفك هو دمج الخلايا في العناوين فأصبحت الخلايا b11 , c11, d11, j11, k11 فارغة مما يجعل عملية الفرز غير دقيقة ولذا أضفت كود فك الدمج لهذه الخلايا قبل كود الفرز Sub insertformula3() Application.ScreenUpdating = 0 Dim strfile As String, col As String, col1 As String, objBook As Workbook, lr As Long, c As Integer strfile = Dir(ThisWorkbook.Path & "\*.xlsx", vbNormal) While strfile <> "" Set objBook = Workbooks.Open(ThisWorkbook.Path & "\" & strfile) c = objBook.Sheets("data").Range("b10").CurrentRegion.Columns.Count col = IIf(c = 10, "j", "l") col1 = IIf(c = 10, "k", "m") lr = objBook.Sheets("data").Range(col & Rows.Count).End(xlUp).Row objBook.Sheets("data").Range(col1 & "12").Formula = "=IF(Or(" & col & "12<5," & col & "12=""ن.م.ر""),""يكرر"",""ينتقل"")" objBook.Sheets("data").Range(col1 & "12").AutoFill Destination:=objBook.Sheets("data").Range(col1 & "12:" & col1 & lr) If objBook.Sheets("data").AutoFilterMode Then Selection.AutoFilter objBook.Sheets("data").Range("b10:b11").UnMerge objBook.Sheets("data").Range("b11").Value = "رقم التلميذ" objBook.Sheets("data").Range("b10").ClearContents objBook.Sheets("data").Range("c10:c11").UnMerge objBook.Sheets("data").Range("c11").Value = "الاسم والنسب" objBook.Sheets("data").Range("c10").ClearContents objBook.Sheets("data").Range("d10:d11").UnMerge objBook.Sheets("data").Range("d11").Value = "النوع" objBook.Sheets("data").Range("d10").ClearContents objBook.Sheets("data").Range(col & "10:" & col & "11").UnMerge objBook.Sheets("data").Range(col & "11").Value = "المعدل العام" objBook.Sheets("data").Range(col & "10").ClearContents objBook.Sheets("data").Range(col1 & "10:" & col1 & "11").UnMerge objBook.Sheets("data").Range(col1 & "11").Value = "قرار المجلس" objBook.Sheets("data").Range(col1 & "10").ClearContents objBook.Sheets("data").Rows("11:11").AutoFilter objBook.Sheets("Data").AutoFilter.Sort.SortFields.Clear objBook.Sheets("Data").AutoFilter.Sort.SortFields.Add2 Key:=Range(IIf(c = 10, "j11", "l11")), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With objBook.Sheets("Data").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With objBook.Sheets("data").Range("b12").Select objBook.Close 1 strfile = Dir() Wend Application.ScreenUpdating = 1 MsgBox "هشام:تمت عملية إضافة القرار" End Sub عيدكم مبارك
  2. جرب الصف 11 في تعريف rg لأن المعدل العام خلية مدمجة وتأكد من كتابتها في الخلية بهذه الصورة فربما يكون بعدها مسافة زائدة
  3. جميل جدا إن تقوم بتسجيل ماكرو لما تريده وتحاول دمجه في الكود الاصلي واقترح عليك حتى يتم التنفيذ على الملف المفتوح إن تضيف objBook.Sheets("data") قبل كلمة range او كلمة autofilter او كلمة rows عيدكم مبارك
  4. تستعمل هذه الدوال مثل cells و offset و rows وغيرها الكثير في التحكم في الوصول لخلايا معينة حسب احتياجك وللعلم اي ثوابت يمكن استبدالها بقيم مثل sheets("mas") يمكن استبدالها ب sheets(1) إذا كان ترتيب شيت ماس هو الأول وهكذا
  5. شكرا لكلماتك الطيبة لكن هذه أصول برمجية تعلمناها جعل التاريخ حقل منفصل حتى يسهل تغييره لأنك بعد هذه الفترة إذا أردت تعديل تاريخ النهاية تحتاج تغيير الخلية c1 فقط أما إذا كتبت التاريخ في المعادلة فستحتاج تغيير جميع الخلايا التي فيها المعادلة ورغم ذلك يمكنك استعمال الدالة date كما يلي =IF(A2<=DATE(2021,6,30),"انتهت صلاحية المنتج","المنتج صالح للتداول") عيدكم مبارك
  6. نعم اتضح عدم تجاوز الأشهر المسددة مدة العقد جرب كتابة هذه المعادلة في الأشهر المسددة =IF(DATEDIF(M14,NOW(),"m")+1>L14,L14,DATEDIF(M14,NOW(),"m")+1) ومعناها إذا كان ناتج المعادلة أكبر من عدد شهور العقد فتكون قيمة الخلية عدد شهور العقد فقط ولا يزيد بالتوفيق
  7. يمكنك كتابة 30/6/2021 في الخلية C1 مثلا ثم كتابة هذه المعادلة بالشروط التي ذكرتها في الخلية B2 =IF(A2<=$C$1,"انتهت صلاحية المنتج","المنتج صالح للتداول") ثم سحب المعادلة لأسفل بالتوفيق
  8. أقصد أن المعادلة الأولى تقوم بحساب الفرق بين تاريخ العقد وتاريخ اليوم بالشهور (لا أدري ما سبب إضافة 1) والمعادلة الثانية تقوم بطرح عدد شهور العقد - عدد الشهور المسددة ويفترض أن تعطي نتائج صحيحة فما الخطأ الذي يظهر معك؟ أو ما الذي تريد تغييره؟
  9. أعتقد المعادلتين صحيحتين جرب تغيير تاريخ الجهاز إلى شهر انتهاء العقد ثم افتح الملف ماذا تجد؟
  10. فعلا رقم 3 بديل Xlup .End(Direction) xlToLeft = 1 xlToRight = 2 xlUp = 3 xlDown = 4 أما عن رقم 2 فهو بديل من استعمال cells مرة أخرى ولكن على اعتبار أن آخر خلية في الصف هي 1,1 بمعنى جرب هذا الكود Worksheets(WS.Name).Cells(Rows.Count, 1).End(3).cells(2,1) ستجده يعطي نفس النتيجة وهي الانتقال للصف التالي 2 باعتبار الصف الحالي 1 والعمود الحالي 1 بالتوفيق
  11. شكرا لحضرتك على هذه المعلومة القيمة وأعتقد أن هذا يتعلق بلغة واجهة العرض في الأوفيس حيث الرقم 1033 يدل على اللغة الانجليزية والرقم 1025 يدل على اللغة العربية
  12. ربما تفيدك هذه النتائج https://www.officena.net/ib/search/?q=يوزرفورم بحث&updated_after=any&sortby=relevancy&search_and_or=and
  13. للتخص من الحروف المنفصلة يمكنك نسخ النص كله ثم لصقه كنص بسيط غير منسق (keep text only) رمز A
  14. جميعا بإذن الله تقبل الله طاعتكم وأجاب دعوتكم
  15. بعد لصق الكود في موديول جديد يمكن مسح جميع المكتوب في الشيت أولا في الخلية مثلا B3 نكتب 100 (كود الموظف) ثم نضغط ctrl+enter ليبقى في نفس الخلية بعد قبول الكتابة (بكدا حددنا الخلية المكتوب فيها كود الموظف نبدأ في تنفيذ الماكرو) ثم نضغط على alt+f8 لعرض الماكرو ونختار masFillDays ونضغط run (أو يمكنك ربط الكود بزر أو شكل ويتم تنفيذ الماكرو بعد الضغط على الزر مباشرة) سيتم عمل مسلسل من 1 إلى 31 وتكرار كتابة كود الموظف 31 مرة تم تعديل الكود السابق ليتم كتابة تاريخ اليوم من 1 في الشهر المكتوب في الخلية d1 إلى نهاية الشهر في عمود التاريخ أليس هذا هو المطلوب ؟؟
  16. حسب فهمي للمطلوب يمكنك استعمال هذا الكود Private Sub CommandButton5_Click() If ActiveSheet.Name <> "data" Then Dim wslr As Integer, counter As Integer, ws As Worksheet Set ws = ThisWorkbook.Worksheets("data") wslr = ws.Cells(Rows.Count, 1).End(xlUp).Row For counter = 1 To wslr If ws.Cells(counter, 2) = TextBox1.Value Then ws.Cells(counter, 2).EntireRow.Delete counter = counter - 1 End If Next MsgBox "تم حذف الاسم" End If End Sub
  17. وأنا أيضا أفتقد مثل هذه الكوكبة يا ريت لو حد يعرف خبر عنها يطمنا
  18. يمكنك استعمال هذا الإجراء التنفيذ بعد تحديد الخلية المكتوب فيها كود الموظف Sub masFillDays() month_days = Day(DateSerial(Year([d1]), Month([d1]) + 1, 1) - 1) For n = 1 To month_days ActiveCell.Offset(n - 1, -1).Value = n ActiveCell.Offset(n - 1, 0).Value = ActiveCell.Value ActiveCell.Offset(n - 1, 6).Value = DateSerial(Year([d1]), Month([d1]), n) Next n MsgBox "done" End Sub ولا تنس تغيير امتداد الملف لصيغة تدعم الماكرة مثل xlsb بالتوفيق
  19. هذه بعض نتائج البحث في المنتدى https://www.officena.net/ib/search/?q=سداد القروض&updated_after=any&sortby=relevancy&search_and_or=and بالتوفيق
  20. تفضل أخي الكريم ضع هذه المعادلة في الخليةF5 واسحب يمينا =SUM(OFFSET($C$2,(COLUMN()-6)*3,0,3)) مع مراعاة إبعاد المجموع من آخر صف حيث يتم جمعه مع آخر خلية
  21. شكرا لكلماتك الطيبة وإذا كان ولابد ظهور رسالة يمكنك وضع المعادلة التالية في عمود الملاحظات في حالة وجود الكمية المتبقية في العمود F =IF(F2<0,"لا يمكن بيع هذه الكمية. لأن الكمية المتبقية بالسالب.","") ثم سحبها لأسفل
×
×
  • اضف...

Important Information