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

تسلسل التاريخ بطريقة غير نظامية على اساس كل شهر 30 يوم


الردود الموصى بها

تسلسل التاريخ بطريقة غير نظامية على أساس كل شهر 30 يوم

احتساب التاريخ على أساس أن كل شهر عدد أيامه 30 يوم

لدى برنامج من خلاله تصدر إجازات للموظفين

لكن عند احتساب أيام الخدمة للموظف واستخدام

التاريخ ومساعدته في احتساب الأيام ما بين التواريخ

يحسب الأشهر على أساس أن هذا الشهر 29 والشهر الآخر 30 وهكذا يعطيني نهايةالخدمات في تاريخ كذا ؟؟؟؟

وبهذه الطريقة قد ضاع من خدمات الموظف الكثير والتي من المفترض أن يكون له 3 أيام بالشهر و 36 يوم بالسنة

ومن اجل ضبط الموضوع بالشكل الذي يضمن حقوق الموظفين

يجب علينا أن نحسب العملية يدوية وهذا لا نرغب به ونريد العملية تكون آلية .

فبمجرد وضع عدد أيام الإجازة المطلوبة

ووضع تاريخ بداية احتساب الخدمات يعطيني البرنامج تاريخ النهاية للخدمات المحتسبة والمتغيرة

على أساس أيام الإجازة دون الاعتماد على أن هذا الشهر 29 يوم والشهر التالي 30 يوم ،،

حيث أن المطلوب احتسابها على أن كل شهر 30 يوم .

وهذا مثال صغير:

عدد أيام الإجازة : 19

وتم احتساب خدماته من تاريخ 01/01/1427هـ

إلى تاريخ 10/07/1427هـ

على أساس يستحق الموظف 36 يوم بالسنة أي 3 أيام بالشهر

المطلوب كما يلي:

عندما أضع60 يوم واضع بداية خدماته يعطيني نهاية الخدمة

وبمعنى ثاني ؟؟

عندما أضع بداية تاريخ واعمل له زائد 120 يوم يعطيني نهاية التاريخ؟

بهذا الشكل تماماً

من تاريخ01/01/1432هـ

عدد أيام الإجازة : 120 يوم

المفترض يعطيني نهاية التاريخ هذا 30/04/1432هـ

والتي تم احتسابها على أساس أن كل شهر 30 يوم

دون الاعتماد على أيام الشهر الافتراضية

البداية 1/1/1432هـ نهاية الشهر 30/1/1432هـ لكل الشهور؟..

وهناك مثال على الملف المرفق ..

تسلسل التاريخ بطريقة غير نظامية على اساس كل شهر 30 يوم.rar

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله وبركاته

أخي العماني

يجب علينا ان نتعلم اولا كيف ندخل التاريخ الهجري الى اكسل لكي يقرأه اكسل كـ تاريخ بصيغة رقمية

في المرفق شرح في ملف وورد من اعداد الأستاذ الفاضل

أكرم الغامدي

جزاه الله كل خير

اقرأه

وطبق محتوياته وتجربته

ثم حاول في ملفك حسب الطريقة المشروحة تجد الحل

واذا لم تجده

فكلنا هنا مستعدون لمساعدتك

تحياتي وتقديري

اكسل هجري.rar

رابط هذا التعليق
شارك

السلام عليكم و رحمة الله وبركاته

أخي العماني

يجب علينا ان نتعلم اولا كيف ندخل التاريخ الهجري الى اكسل لكي يقرأه اكسل كـ تاريخ بصيغة رقمية

في المرفق شرح في ملف وورد من اعداد الأستاذ الفاضل

أكرم الغامدي

جزاه الله كل خير

اقرأه

وطبق محتوياته وتجربته

ثم حاول في ملفك حسب الطريقة المشروحة تجد الحل

واذا لم تجده

فكلنا هنا مستعدون لمساعدتك

تحياتي وتقديري

>>>>>>>>>>>>>>>

أخي الغالي أحمد زمان

اشكر لك سرعة الرد ... وهذا ليس بقريب عليكم جميعاً

لدى برنامج يتعامل مع التاريخ الهجري وليس لدى مشاكل في ذلك

ومقصودي في طلبي هو كالمثال التالي:

شهر "5" جمادى الاولى لهاذا العام الهجري 1432هـ عدد ايامة 29 يوم

ولو اردت ان اخذ لي راحة لمدة 4 ايام تبدء من تاريخ 28/05/1432هـ

من المفترض نهايتها بطريقة صحيحة هو بتاريخ 02/06/1432هـ

لأنه تم احتسابها على ان شهر جمادى الاولى عدد ايامة 29 يوم لذلك كان نهايتها في 02/06/1432هـ

انما لو كان عدد ايامة

30 يوم كان يكون نهاية الراحة هو 01/06/1432هـ وهذا اللي اقصدة

لذلك احتاج لطريقة عندما اضع بداية للتاريخ وعدد ايام معينة يعطيني نهاية للتاريخ

ويحسب عدد ايام كل شهر على انها 30 يوم

لعلي اوضحت لك الفكرة والطريقة المطلوبة

01/05/1432هـ + 60 يوم = 30/06/1432هـ

01/07/1432هـ + 30 يوم = 30/07/1432هـ

01/08/1432هـ + 90 يوم = 30/10/1432هـ

01/11/1432هـ + 90 يوم = 30/01/1433هـ

عدد ايام كل شهر 30 يوم ؟؟؟؟؟؟

رابط هذا التعليق
شارك

مثال

الاستاذ الفاضل احمد يعقوب

تم تجربة النثال وكانت النتائج كما يلي

01/05/1432هـ + 60 يوم = 01/07/1432هـ والمطلوب 30/06/1432هـ

01/07/1432هـ + 30 يوم = 01/08/1432هـ والمطلوب 30/07/1432هـ

على ما اعتقد الاكسل يعتبر بعض الشهور العربية 29 يوم وبعضها 30 والدالة DAYS360 لا تنفع مع الشهور العربية

ابواحمد

رابط هذا التعليق
شارك

مثال

الاستاذ الفاضل احمد يعقوب

تم تجربة النثال وكانت النتائج كما يلي

01/05/1432هـ + 60 يوم = 01/07/1432هـ والمطلوب 30/06/1432هـ

01/07/1432هـ + 30 يوم = 01/08/1432هـ والمطلوب 30/07/1432هـ

على ما اعتقد الاكسل يعتبر بعض الشهور العربية 29 يوم وبعضها 30 والدالة DAYS360 لا تنفع مع الشهور العربية

ابواحمد

كعادتكم وكرمكم المعروف عنكم من سنين لم يتغير

ابدا فهذا ان دل فأنما يدل على عروقكم الطيبة

فأنتم سباقين للخير

والعطاء الله يجعل جميع اعمالكم ثقال في موازين حسناتكم

اشكرك أخي أحمد زمان

والشكر موصول لأخينا ولد المجرب ابوأحمد

وعداكم العيب .... فما قلته يا ابوأحمدهو صحيح والنتائج كما ذكرتها تماماً

لازلنا نبحث ونطلب مساعدتكم لحل هذه المشكلة

وفي انتظار ابداعكم

الله يوفقكم لما يحب ويرضى

رابط هذا التعليق
شارك

01/12/1432هـ

توضيح مثالي المذكر أدناه مربوط بالصورة المرفق بالملف المرفق.

يعد من رقم «1» وحتى رقم «0» فقط

بعدها يجبر الرقم الذي يليه بالتقدم خطوة واحدة ، الذي هو من الأساس «صفر»ليتغير إلى رقم «1» ويعود بالعد ليكرر العملية مرتين وحتى يصل الرقم المجاور له إلىالرقم «3» فقط؟ أي «30»!؟

وبعدها يجبر الرقم الذي يليهبالتقدم خطوة واحدة والذي يبدأ من رقم «1» وحتى الرقم «صفر».

بعدهايجبر الرقم الذي يليه بالتقدم خطوة واحدة ، الذي هو من الأساس «صفر» ليتغير إلى رقم «1» ليعود بالعد حتى يصل الرقم «12» أي «12 شهرا»!؟؟

أتوقع الآن وصلت الفكرة المقصودة التي أود توصيلها لكم .

أردت أرقام تتزايد على أساس رقم أدخلة بنفس العملية الميكانيكية التيبالصورة؟ لتحل بعمل التاريخ ..

تسلسل التاريخ بطريقة غير نظامية على اساس كل شهر 30 يوم.rar

رابط هذا التعليق
شارك

مثال

الاستاذ الفاضل احمد يعقوب

تم تجربة النثال وكانت النتائج كما يلي

01/05/1432هـ + 60 يوم = 01/07/1432هـ والمطلوب 30/06/1432هـ

01/07/1432هـ + 30 يوم = 01/08/1432هـ والمطلوب 30/07/1432هـ

على ما اعتقد الاكسل يعتبر بعض الشهور العربية 29 يوم وبعضها 30 والدالة DAYS360 لا تنفع مع الشهور العربية

ابواحمد

شكرا لك اخي ابو احمد

كلامك صحيح

و الشكر موصول الى اخي العماني

اذا في هذه الحالة الحل يكون باستخدام فكرة الرياضيات العادية

نأخذ المدة ونقسمها على 30 و الناتج نضيفة للشهور

ولكن

اذاكان في كسور في الناتج كيف تحسب

؟؟؟

رابط هذا التعليق
شارك

اشكر لكم حسن مساعدتكم

وردودكم ونفاعلكم الجميل

وسؤالنا لايزال مطروح ومعلق حتى يجد جوابا شافيا

من قبل فطاحلة وعباقر في مثل هذه المسائل

وربما نجد الحل لدي اخينا الغالي "خبور خير"

ولكم مني طيب الاوقات

رابط هذا التعليق
شارك

السلام عليكم

أخي العماني

تفضل المرفق

عسي أن يكون ماتريد

ادخل التاريخ في الخلايا C12:C15 بعد التضبيط الذي اقترحه اخونا الفاضل /أحمد زمان في المشاركة رقم 2

لملف الريجستري عندك كما فعلها اخونا الفاضل /أكرم الغامدي، إذا لم يكن مضبوطا

جزاهما الله كل خير

فهذا يجعل التاريخ يظهر بصورة هجرية ولكنه كرقم مازال معبرا عنه للإكسل بالنتيجة الإنجليزية (الغربية)

أي لاتنسي أن تضع قبله حرف a بالإنجليزية

تسلسل التاريخ بطريقة غير نظامية على اساس كل شهر 30 يوم2.rar

رابط هذا التعليق
شارك

أنا استخدمت ملاحظة أخي احمد زمان

وقد لاحظت ان الإجازة عندك دائما شهر او 2 أو 3

اذا في هذه الحالة الحل يكون باستخدام فكرة الرياضيات العادية

نأخذ المدة ونقسمها على 30 و الناتج نضيفة للشهور

ولكن

اذاكان في كسور في الناتج كيف تحسب

؟؟؟

فإذا كانت الإجازة بها كسور من الشهر فتحسب بطريقة أخري (مشابهه)

رابط هذا التعليق
شارك

مشكور مراقبنا الغالي طارق

زيارتك

لموضوعي شرف لي وليس بغريب على مشرفي أوفسنا الغالي

اطلعت على المرفق الله يعطيك العافية ... وأحب أفيدك جعل

والدينك للجنة

بالنسبة لموضوعي هذا ولتقريب الفكرة استخدمت فكرة ؟

من تاريخ وتضاف عليها عدد أيام لنحصل على نهاية

لكن ليس بترتيب التاريخ كما هو في التقاويم!؟

إنا احتاج لتاريخ عدد أيامه في كل شهر 30 يوم وغير

مربوط بشهر معين أو سنة معينة

المطلوب 30 يوم هي أيام كل شهر

واكرر لك شكري لزيارتك ومبادرتك الغالية

أخوك : عبدالله العماني ابومشاري

تم تعديل بواسطه A_ALOMANI
رابط هذا التعليق
شارك

السلام عليكم و رحمة الله وبركاته

أخي الكريم ابو مشاري

شاهد المرفق

اكتب في الخلية الصفراء المدة المطلوبة

اكتب في الخلايا الصفراء من تاريخ

يظهر الناتج اسفلهم

مع التحية

DATEE.rar

رابط هذا التعليق
شارك

السلام عليكم

لاثراءالموضوع قمنا بعمل هذه الدالة

للقيام بذلك


Option Explicit

'          بسم الله الرحمن الرحيم               "

'============================================"

'      دالة خاصة لاحتساب الشهر 30 يوم         "

'============================================"

'Mydate:         نص بالتاريخ الهجري           "

'============================================"

'Countday:          عدد الايام                "

'============================================"

'============================================"

Function kh_MyTextHijri(Mydate As String, Countday As Integer) As String

Dim kh_Calendar As Integer, m As Integer, d As Integer

Dim Td As Date

Dim sHi As String

kh_Calendar = Calendar

Calendar = vbCalHijri

If IsDate(Mydate) Then

    m = Int(Countday / 30)

    d = Countday - (m * 30)

    Td = CDate(Mydate)

    Td = DateSerial(Year(Td), Month(Td) + m, Day(Td) + d)

    sHi = Format(Td - 1, "yyyy-mm-dd")

    If d Or Day(sHi) = 30 Then

        kh_MyTextHijri = sHi

    Else

        kh_MyTextHijri = Left(sHi, 8) & "30"

    End If

End If

Calendar = kh_Calendar

End Function

شاهد المرفق 2003

دالة خاصة لتسلسل التاريخ بطريقة غير نظامية على اساس كل شهر 30 يوم.rar

رابط هذا التعليق
شارك

السلام عليكم

لاثراءالموضوع قمنا بعمل هذه الدالة

للقيام بذلك

وعليكم السلام ورحمة الله وبركاته

ايه الحلاوة دي

والله ما يجيبها الا رجالها بصرحة عمل مبهر ومتقن بارك الله فيك وسلمت يمينك يا ابا علي

ابواحمد

رابط هذا التعليق
شارك

السلام عليكم

لاثراءالموضوع قمنا بعمل هذه الدالة

للقيام بذلك


Option Explicit



Function kh_MyTextHijri(Mydate As String, Countday As Integer) As String



End Function

وعليكم السلام و رحمة الله وبركاته

ويبقى الخبير خبير

جزاك الله كل خير

رابط هذا التعليق
شارك

بفضل من الله تبارك وتعالى ثم بعد ان اكتشف خبيرنا المخضرمالاستاذ الفاضل خبور خير ان هناك خطاء بسيط في الدالة اثناء مناقشتي للدالة معاه

ارفق لكم الدالة بعد التعديل عليه من قبل الاستاذ خبور خير

والمطلوب دعوة له ولوالديه بظهر الغيب

ابواحمد

تصحيح الدالة.rar

رابط هذا التعليق
شارك

  • 2 weeks later...

السلام عليكم

لاثراءالموضوع قمنا بعمل هذه الدالة

للقيام بذلك


Option Explicit

'          بسم الله الرحمن الرحيم               "

'============================================"

'      دالة خاصة لاحتساب الشهر 30 يوم         "

'============================================"

'Mydate:         نص بالتاريخ الهجري           "

'============================================"

'Countday:          عدد الايام                "

'============================================"

'============================================"

Function kh_MyTextHijri(Mydate As String, Countday As Integer) As String

Dim kh_Calendar As Integer, m As Integer, d As Integer

Dim Td As Date

Dim sHi As String

kh_Calendar = Calendar

Calendar = vbCalHijri

If IsDate(Mydate) Then

    m = Int(Countday / 30)

    d = Countday - (m * 30)

    Td = CDate(Mydate)

    Td = DateSerial(Year(Td), Month(Td) + m, Day(Td) + d)

    sHi = Format(Td - 1, "yyyy-mm-dd")

    If d Or Day(sHi) = 30 Then

        kh_MyTextHijri = sHi

    Else

        kh_MyTextHijri = Left(sHi, 8) & "30"

    End If

End If

Calendar = kh_Calendar

End Function

شاهد المرفق 2003

الأستاذ: خبور خير حفظة الله

الأخوة مشرفي موقع أوفيسنا المحترمين

الزملاء أعضاء موقع أوفيسنا المحترمين

السلامعليكم ورحمه الله وبركاته

مهما بلغت من المديح والثناء في وصف غالينا واستأذنا المحترم خبور خير

فلن أوفيه حقه من الوصف والثناء في هذا المجال ولنا عدة عقبات في سنوات مضت

وكان خبور هو المنقذ ولاهانوا البقية.

فأنني اشكره جزيل الشكر

واشكر الجميع لحماسهم في إثراء الموضوع

و إنني أتوجه للمولى عزوجل أن يجعل هذا العمل في موازين حسنات أخينا الغالي خبور خير وان يحميه من كل شروان يوفقه لما يحب ويرضى ،

اللهم يا الله يا احد ياصمد يامنان يابديع السموات والأرض ياحي ياقيوم ياذا الجلال والإكرام أسألك بقدرتك

وبأمرك الذي بين الكاف والنون ياحي يا قيوم...اللهم أجعل له من كلهم وغم فرجا ومن كل ضيق مخرجا ومن كل عسر يسرا

وارزقه من حيث لا يحتسب....اللهم ياغني أغنه واغني أسرته عاجلا غير آجل..لا إله إلا أنت سبحانك إني كنت من الظالمين.....

اللهم واجعل لي ولكل من قال آمين نصيبا من هذا الدعاء يا أكرم الأكرمين ياذا الجلال والإكرام

اللهم آميييييييييين

تم تعديل بواسطه A_ALOMANI
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information