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

أ / محمد صالح

أوفيسنا
  • Posts

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

  • Days Won

    192

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

  1. ملفك المرفق تم إضافة كود فتح المصنف المذكور في مشاركتك الأولى وتم حفظ الملف بامتداد xlsb وتم إغلاق الملف وفتحه فظهرت الرسالة وتم إغلاق الملف حسب الكود
  2. حسب فهمي للمطلوب جرب هذه المعادلة في الخلية L26 =IFERROR(IF(AND(M26<>"",M26<I26),"سداد مبكر",IF(TODAY()=I26,"العقد انتهى اليوم",IF(TODAY()>I26,"العقـد منتهى",IF(TODAY()<H26,"لم يتم تداولة","العقـد سارى")))),"") تم تعديل الشرط الأول إلى ألا تكون الخلية فارغة وتكون أقل من تاريخ نهاية العقد
  3. يمكنك استعمال هذه الدالة المعرفة Function checknum(rng As Range) For n = 1 To 100 If Sqr(rng * n + rng.Offset(0, 1)) = rng.Offset(0, 2) Then checknum = rng.Offset(0, 2): Exit Function End If Next n checknum = 0 End Function ولاستدعاء الدالة نضع في الخلية F2 =checknum(A2) ولا تنس حفظ الملف بصيغة تدعم الماكرو مثل xlsb بالتوفيق
  4. الكود يعمل بصورة طبيعية جدا على ملف xlsb رجاء توضيح ما يحدث معك ورقم الخطأ وسطر الخطأ في الكود
  5. جرب هذه المعادلات خساب الاقدمية.xls
  6. في مثل هذه الحالات يمكنك تسجيـل ماكرو وتفعل ما تريد وستحصل على الكود وتعدله كما تشاء
  7. الصواب في الفرز على الصف 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 عيدكم مبارك
  8. جرب الصف 11 في تعريف rg لأن المعدل العام خلية مدمجة وتأكد من كتابتها في الخلية بهذه الصورة فربما يكون بعدها مسافة زائدة
  9. جميل جدا إن تقوم بتسجيل ماكرو لما تريده وتحاول دمجه في الكود الاصلي واقترح عليك حتى يتم التنفيذ على الملف المفتوح إن تضيف objBook.Sheets("data") قبل كلمة range او كلمة autofilter او كلمة rows عيدكم مبارك
  10. تستعمل هذه الدوال مثل cells و offset و rows وغيرها الكثير في التحكم في الوصول لخلايا معينة حسب احتياجك وللعلم اي ثوابت يمكن استبدالها بقيم مثل sheets("mas") يمكن استبدالها ب sheets(1) إذا كان ترتيب شيت ماس هو الأول وهكذا
  11. شكرا لكلماتك الطيبة لكن هذه أصول برمجية تعلمناها جعل التاريخ حقل منفصل حتى يسهل تغييره لأنك بعد هذه الفترة إذا أردت تعديل تاريخ النهاية تحتاج تغيير الخلية c1 فقط أما إذا كتبت التاريخ في المعادلة فستحتاج تغيير جميع الخلايا التي فيها المعادلة ورغم ذلك يمكنك استعمال الدالة date كما يلي =IF(A2<=DATE(2021,6,30),"انتهت صلاحية المنتج","المنتج صالح للتداول") عيدكم مبارك
  12. نعم اتضح عدم تجاوز الأشهر المسددة مدة العقد جرب كتابة هذه المعادلة في الأشهر المسددة =IF(DATEDIF(M14,NOW(),"m")+1>L14,L14,DATEDIF(M14,NOW(),"m")+1) ومعناها إذا كان ناتج المعادلة أكبر من عدد شهور العقد فتكون قيمة الخلية عدد شهور العقد فقط ولا يزيد بالتوفيق
  13. يمكنك كتابة 30/6/2021 في الخلية C1 مثلا ثم كتابة هذه المعادلة بالشروط التي ذكرتها في الخلية B2 =IF(A2<=$C$1,"انتهت صلاحية المنتج","المنتج صالح للتداول") ثم سحب المعادلة لأسفل بالتوفيق
  14. أقصد أن المعادلة الأولى تقوم بحساب الفرق بين تاريخ العقد وتاريخ اليوم بالشهور (لا أدري ما سبب إضافة 1) والمعادلة الثانية تقوم بطرح عدد شهور العقد - عدد الشهور المسددة ويفترض أن تعطي نتائج صحيحة فما الخطأ الذي يظهر معك؟ أو ما الذي تريد تغييره؟
  15. أعتقد المعادلتين صحيحتين جرب تغيير تاريخ الجهاز إلى شهر انتهاء العقد ثم افتح الملف ماذا تجد؟
  16. فعلا رقم 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 بالتوفيق
  17. شكرا لحضرتك على هذه المعلومة القيمة وأعتقد أن هذا يتعلق بلغة واجهة العرض في الأوفيس حيث الرقم 1033 يدل على اللغة الانجليزية والرقم 1025 يدل على اللغة العربية
  18. ربما تفيدك هذه النتائج https://www.officena.net/ib/search/?q=يوزرفورم بحث&updated_after=any&sortby=relevancy&search_and_or=and
  19. للتخص من الحروف المنفصلة يمكنك نسخ النص كله ثم لصقه كنص بسيط غير منسق (keep text only) رمز A
  20. جميعا بإذن الله تقبل الله طاعتكم وأجاب دعوتكم
  21. بعد لصق الكود في موديول جديد يمكن مسح جميع المكتوب في الشيت أولا في الخلية مثلا B3 نكتب 100 (كود الموظف) ثم نضغط ctrl+enter ليبقى في نفس الخلية بعد قبول الكتابة (بكدا حددنا الخلية المكتوب فيها كود الموظف نبدأ في تنفيذ الماكرو) ثم نضغط على alt+f8 لعرض الماكرو ونختار masFillDays ونضغط run (أو يمكنك ربط الكود بزر أو شكل ويتم تنفيذ الماكرو بعد الضغط على الزر مباشرة) سيتم عمل مسلسل من 1 إلى 31 وتكرار كتابة كود الموظف 31 مرة تم تعديل الكود السابق ليتم كتابة تاريخ اليوم من 1 في الشهر المكتوب في الخلية d1 إلى نهاية الشهر في عمود التاريخ أليس هذا هو المطلوب ؟؟
×
×
  • اضف...

Important Information