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

AbuuAhmed

الخبراء
  • Posts

    1,024
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    16

كل منشورات العضو AbuuAhmed

  1. Function Between(inDate As Date, SP As Date, EP As Date) As Boolean Between = inDate >= SP And inDate <= EP End Function Public Function DatePeriod(ByVal StartDate As Date, ByVal EndDate As Date, _ Optional ByRef Per1 As Integer, _ Optional ByRef Per2 As Integer, _ Optional ByRef Per3 As Integer) As String Const SP1 = #1/1/1990#: Const EP1 = #9/6/2016# Const SP2 = EP1 + 1: Const EP2 = #9/30/2020# Const SP3 = EP2 + 1: Const EP3 = #1/1/2050# '------------------ If EndDate < StartDate Then GoTo Result If Not (Between(StartDate, SP1, EP3) Or _ Between(EndDate, SP1, EP3) Or _ Between(SP1, StartDate, EndDate) Or _ Between(EP3, StartDate, EndDate)) Then GoTo Result If StartDate < SP1 Then StartDate = SP1 If EndDate > EP3 Then EndDate = EP3 '------------------ If Between(StartDate, SP1, EP1) Then Per1 = DateDiff("w", StartDate, IIf(EP1 > EndDate, EndDate, EP1)) If EP1 < EndDate Then StartDate = SP2 Else GoTo Result End If If Between(StartDate, SP2, EP2) Then Per2 = DateDiff("m", StartDate, IIf(EP2 > EndDate, EndDate, EP2)) If EP2 < EndDate Then StartDate = SP3 Else GoTo Result End If Per3 = DateDiff("m", StartDate, IIf(EP3 > EndDate, EndDate, EP3)) Result: DatePeriod = Per1 & "," & Per2 & "," & Per3 End Function Sub DatePeriodTest() Dim Per1 As Integer, Per2 As Integer, Per3 As Integer Debug.Print " " & DatePeriod(DateSerial(1989, 9, 1), DateSerial(2050, 1, 1), Per1, Per2, Per3) Debug.Print Per1, Per2, Per3 End Sub إن شاء الله فهمت طلبك بشكل صحيح.
  2. محاولة منى إذا فهمي لطلبك صحيح:
  3. وهذه أيضا من عندي: If L Like "[0-9]" Then أو If L Like "[0123456789]" Then
  4. أكثر ما أكرهه في البرمجة هو تكديس الأكواد للوصول إلى أقصر كود. من الحالات التي مرت علي أذكر منها حالتين: الأولى صاحبها يستخدم الفاصلة بين الأسطر ":" ولا يستخدم أسطر فارغة بين الدوال ليخرج ويعلن أن كوده هو الأفضل لأنه الأقصر!! والأخرى صاحبها يستخدم نتائج بعد تحضيرها منفصلة خارج الكود الأصل ، ثم يستخدمها كثوابت ويستخدم أسطر بيانات تصل طول السطر فيها إلى ما يقارب الألف حرف ليعلن أن كوده هو الأقصر والأسرع. ملاحظة أخرى عملية السرعة ليست مطلوبة في كل الأوقات ، نحتاجها أكثر في العمل الذي به حسابات كثيرة ومتكررة وهذا نادر جدا ، أما لو كانت عملية تحويلات لملف بيانات قديمة ولمرة واحدة مثلا فلا داعي للإنشغال بالسرعة والإختصار فالكود سوف يستخدم مرة أو مرتين ثم يهمل/يترك/يرمى لانتهاء الحاجة له. حركتوا مشاعري المدفونة.
  5. هذه الدالة FRACTION.ANNEE غير موجودة عندي ربما أضيف حديثا في النسخ الحديثة.
  6. لم تطلب اليوم ، طلبت فقط السنة والشهر تم إضافة اليوم Book13_03.rar
  7. طلبك مو واضج ضع تواريخ مختلفة وضع الحالة يدويا بدون معادلة حتى نستطيع مقارنتها بما سنعمله. لاحظت أن ناتج الأعمدة A+B-C غالبا ناتجها بالسالب!
  8. موضوع علمي شيق ومفيد ومسلي. موفقين جميعا.
  9. أعتذر للطيب الأخ العزيز @ابوخليل ربما اختياري لكلمة "تحدي" غير مناسبة ، ماذا لو جعلناها "منافسة علمية" أنا لا زلت عند رأيي لعمل التجربة ولتكن مادة علمية مجربة ومرجعا لكل من ينوي القيام بعمل مثل هذا البرنامج. لا أطلب المشاركة العملية ولا النظرية إن رغبتم في ذلك وسأتابعكم من بعيد ، علما أنا صاحب "تجارب" وليست تجربة واحدة ، ولكني الآن غير متفرغ. إذا فيه مثال على طريقتكم في المنتدى دلوني عليها.
  10. شكل الموضوع تحول إلى تحدي. أرى أن التجارب هي الفيصل ، فليتم عمل مثالين والمقارنة بينهما واختيار فريقين للقيام بتنفيذ المثالين. مع ملاحظة توحيد المسميات واستبعاد الحقول الثانوية لتسهيل المقارنات. في رأيي أن المقتدر في كتابة الكود عادة يلجأ للإختصار والتقليل من زحام الكائنات في قاعدة البيانات. وهناك ملاحظة يجب أخذها في الاعتبار وهي أن بعض الأوامر والأدوات لا تعمل في نسخ mde/accde فيجب مع كل تعديل اختبار نسختين من المثال. مجرد اقتراح.
  11. ما عرضه الأخ @عبد الله قدور أراه مثاليًا ، وكما أوضحت سابقا يمكن عمل دالة لإرجاع قيمة المستوى لتفادي أخطاء الإدخالات.
  12. بنظري هي الأصح أما الآخريات قد تتسبب في مشاكل عند حذف أحد الأكواد. لاحظت أكثركم عند استخدام دالة Nz يهمل قيمة False ، ما أدري متعمدين أو سقطت منكم سهوا.
  13. لا أرى أي فائدة لعمل عدة جداول ، العملية سهلة ليش نصعبها ونعقدها؟! ، جدول واحد ويمكن عن طريق الاستعلام ترتيب الحسابات حسب ربطها الصحيح ويمكن عمل دالة لاستخراج مستوى الحساب إذا كان مطلوب مع أني لا أرى فيه فائدة. يفضل استخدام الأكواد الرقمية وليكن كتابتها بشكل يسمح لها بالترتيب الصحيح. والرأي لكم.
  14. أقرأ في الردود وما قدرت أفهم حلت المشكلة وإلا لا. أعتقد الحل موجود في هذه المشاركة بس لأني جديد ما أحد التفت لي 🙂 مثال : 1 تاريخ التعيين : 6 / 5 / 2022 تاريخ إنهاء الخدمة : 1 / 6 / 2022 شهر 5 فيه 31 يوم 31 - 5 = 26 يوم Day(DateSerial(2022, 5 + 1, 0)) - 6 + 1 مثال : 2 تاريخ التعيين 6 / 4 / 2022 تاريخ إنهاء الخدمة : 1 / 5 / 2022 شهر 4 فيه 30 يوم 30 - 5 = 25 Day(DateSerial(2022, 4 + 1, 0)) - 6 + 1 مثال : 3 تاريخ التعيين 6 / 2 / 2022 تاريخ إنهاء الخدمة 1 / 3 / 2022 شهر 2 في سنة 2022 فيه 28 يوم 28 - 5 = 23 يوم Day(DateSerial(2022, 2 + 1, 0)) - 6 + 1 مثال : 4 تاريخ التعيين 6 / 2 / 2020 تاريخ إنهاء الخدمة : 1 / 3 / 2020 شهر 2 في سنة 2020 فيه 29 يوم إذن 29 - 5 = 24 يوم Day(DateSerial(2020, 2 + 1, 0)) - 6 + 1
  15. جرب وخبرنا احترت في جمع اليورو ، يوروات أو يورهات. تفقيط باليوزرفورم.xlsm
  16. أتمى يكون هو المطلوب لأن سؤالك غير واضح جديد_01.xlsx
  17. الإكسل ليس تخصصي ولكن عاشق له ، جرب حلي: New Microsoft Excel Worksheet_01.xlsx
  18. جرب الملف بعد التعديل وقد قمت بتغيير شفرة التفقيط قضية الاساسي 2022 اخر حاجة بدون تقريب - للنت_02.rar
  19. لم تفتح معي قاعدة البيانات للحصول على مدة الشهر يمكن استخدام هذه المعادلة: mmDays = Day(DateSerial(yy, mm + 1, 0))
  20. هذه المشكلة تتكرر في التعيين وفي المغادرة/الفصل وفي بداية الإجازة وفي المباشرة بعد العودة من الإجازة. وهناك اقتراحين لتفادي هذه المشكلة. إما بإستخراج متوسط الراتب اليومي بقسمة راتب الشهر على مدته دون التعديل في الأيام. أو باستخراج متوسط الراتب اليومي بضرب الراتب في 12 ثم قسمته على 365 للسنة البسيطة أو 366 للسنة الكبيسة وبدون التعديل في الأيام، وهو الأفضل. موفقين
  21. جرب هذا المثال نقر مزدوج لفتح الرزنامة تحويل التاريخ ميلادي لأم القرى والعكس_02.rar
  22. اسمح لي أخي @محمد مرسي السيد الحل في الملف غير صحيح محاسبيا وإن طبقته راح تظلم فيه الموظفين. حساب الأيام والمبالغ غير صحيحة. إذا لا تستطيع أن تقيم الحلول المقدمة فاستعن بمحاسب. ملاحظة صغيرة: أيام الخمس سنوات مدتها 1826 يوم وليس 1825.
×
×
  • اضف...

Important Information