ابو مشاري قام بنشر نوفمبر 11, 2005 قام بنشر نوفمبر 11, 2005 الاخوة الاعزاء السلام عليكم ورحمة الله وبركاته كل عام وانتم بالف صحة وعافية . سؤالي لدي جدول يتكون من (العمود1 ) تاريخ الوصول ، (العمود2 ) تاريخ التصريف مثلاً كيف يمكنني حساب (العمود 3 ) الفرق بين التاريخين وإذا كان الفرق أكثر من 30 أو 31 يوم يعطيني اشارة معينة . مثال : تاريخ الوصول 3/10/2005 تاريخ التصريف 4/11/2005 الفرق بين التاريخين ( كيف يتم حساب الفرق علماً بأن الشهور تختلف 30أو31يوم) جزاكم الله كل خير على تعاونكم معي وأثابكم الله على فعلكم .
علي السحيب قام بنشر نوفمبر 13, 2005 قام بنشر نوفمبر 13, 2005 وعليكم السلام، يتم إحتساب الفرق بين التواريخ عن طريق إستخدام الدالة DATEDIF .. شاهد المرفق وأخبرني إذا كان هذا ما تريد. _________________.rar
أبو هادي قام بنشر نوفمبر 13, 2005 قام بنشر نوفمبر 13, 2005 (معدل) السلام عليكم بعد إذن الأخ علي السحيب ، مرفق نفس المثال وبه طريقتين لحساب المدة بشكل دقيق . مع ملاحظة أني لم أقم باختبارهما بشكل قوي حيث اقتصر الإختبار على السجلات الموجودة بالمثال فقط . تحياتي . DateDiff.rar تم تعديل نوفمبر 13, 2005 بواسطه أبو هادي
علي السحيب قام بنشر نوفمبر 13, 2005 قام بنشر نوفمبر 13, 2005 نتشرف بملاحظاتك القيمة والمفيدة أخي أبو هادي.
أبو هادي قام بنشر نوفمبر 13, 2005 قام بنشر نوفمبر 13, 2005 السلام عليكم أشكر لطفك أخي علي السحيب . أرجو تحميل الملف مرة أخرى حيث جرى عليه بعض التعديل . تحياتي .
ابو مشاري قام بنشر نوفمبر 13, 2005 الكاتب قام بنشر نوفمبر 13, 2005 بصراحة احرجتوني جزاكم الله كل خير وأثابكم على فعلكم . أكرر شكري لكم وعلى ما تقدمونه لأخوانكم بالمنتدي . جاري التجربة .
علي السحيب قام بنشر نوفمبر 14, 2005 قام بنشر نوفمبر 14, 2005 السلام عليكم، الأخ العزيز أبو هادي .. لقد قمت بإستخدام الدالة DATEDIF فقط .. وقد حصلت على نفس النتيجة التي حصلت أنت عليها بإستخدامك للدالة المذكورة بالإضافة إلى الدوال MOD و DAY .. لذا أود منك إيضاح سبب إستخدامك لدوال إضافية .. ما دام بوسعنا تقليص عدد الدوال للحصول على نفس النتيجة المرجوة. شكراً لك. DateDiff.rar
أبو هادي قام بنشر نوفمبر 14, 2005 قام بنشر نوفمبر 14, 2005 السلام عليكم ممتاز جدا أخي علي السحيب فالحل الآن هو الأفضل على الإطلاق للحصول على المدد فلقد تعلمت منك شيئا جديدا اليوم بما يخص دالة DATEDIF للأكسل كما أعتقد أنك تعلمتها حديثا أيضا :( لذا أود منك إيضاح سبب إستخدامك لدوال إضافية .. ما دام بوسعنا تقليص عدد الدوال للحصول على نفس النتيجة المرجوة. اجتهاد حسب المعلومات المتوفرة لدي ، فكما تعلم أنا مختص بالأكسس أكثر منه في الأكسل ومع ذلك حاولت أن أقرأ عن الدالة في عن طريق العون/Help في الأكسل ولم أجدها موجودة ضمن الدوال ، عليه اعتمدت على معلوماتي لدالة DateDiff للأكسس والتي لا تحتوي على التنسيقات التي استخدمتها أنت في المثال الأخير . وهنا هي أنواع التنسيقات المتاحة لنفس الدالة بالأكسس : Setting Description yyyy Year q Quarter m Month y Day of year d Day w Weekday ww Week h Hour n Minute s Second تحياتي .
علي السحيب قام بنشر نوفمبر 15, 2005 قام بنشر نوفمبر 15, 2005 (معدل) السلام عليكم، تبقى أنت أستاذنا الذي نتعلم منه أخي أبو هادي .. بالنسبة للدالة DATEDIF .. فلقد تعرفت عليها قبل ثلاث سنوات تقريباً بينما كنت أتجول في أحد المواقع الأجنبية .. ولا يوجد أي معلومات عن هذه الدالة في جميع إصدارات الإكسل .. ما عدا أوفيس 2000 .. فهو الوحيد الذي تفرد بشرح وافي عن هذه الدالة .. ولقد قمت بترجمة الموضوع الذي يتحدث عن هذه الدالة .. وقد أرفقته على الرابط التالي .. أرجو أن يحوز على رضاك أخي أبو هادي. http://www.officena.net/ib/index.php?showtopic=8616 تم تعديل نوفمبر 15, 2005 بواسطه علي السحيب
أبو هادي قام بنشر نوفمبر 15, 2005 قام بنشر نوفمبر 15, 2005 السلام عليكم أشكرك على كرم أخلاقك وعلى هذه المعلومات القيمة . بارك الله فيك ونفع بك وأكرمك بالجنة . تحياتي .
علي السحيب قام بنشر نوفمبر 16, 2005 قام بنشر نوفمبر 16, 2005 (معدل) السلام عليكم، الأخ العزيز أبو هادي .. لقد أطلعت على الكود الذي أنشأته والذي يعمل على حساب الفرق بين التواريخ الهجرية (مرفق الملف). لكن الكود يعمل مع الرموز (YYYY , M ,D) فقط .. ولا يقبل بقية الرموز الخاصة بالدالة DATEDIF .. وهي (YM , YD , MD). وحسب علمي أن أن الدالة المقابلة لـ DATEDIF في تطبيقات الفيجوال بيسك هي DateDiff .. وهي لا تقبل إلا الثلاث رموز الأولى فقط. لذا أو منك وحسب خبرتك الكبيرة في هذا المجال أن تنشأ لنا كود يقبل بقية الرموز .. لكي أتمكن من تصميم برنامج لحساب العمر يقبل التواريخ الهجرية على غرار البرنامج الموجود على الرابط التالي والذي لا يقبل إلا التواريخ الميلادية فقط. http://www.officena.net/ib/index.php?showtopic=9674 وألف شكر لك أخي أبو هادي. UmAlQura.rar تم تعديل نوفمبر 16, 2005 بواسطه علي السحيب
أبو هادي قام بنشر نوفمبر 16, 2005 قام بنشر نوفمبر 16, 2005 السلام عليكم أخي علي السحيب .. سأدرس الموضوع وأوافيك بما توصلت إليه إن شاء الله . كما أود أن أعرف هل ما طلبته للهجري القياسي كالمستخدم في برامج مايكروسوفت أو تقصد تقويم أم القرى الهجري الفلكي ؟. تحياتي .
أبو هادي قام بنشر نوفمبر 17, 2005 قام بنشر نوفمبر 17, 2005 السلام عليكم المثال بعد عمل دالة للبيسك بإسم vbDATEDIF شبيهة بدالة DATEDIF للأكسل . Public Function vbDATEDIF(ByVal Interval As String, _ ByVal DATE1 As Date, _ ByVal DATE2 As Date, _ Optional FirstDayOfWeek As VbDayOfWeek, _ Optional FirstWeekOfYear As VbFirstWeekOfYear, _ Optional Cal As Byte) As Long Dim CurrCal As Byte Dim yy As Long Dim mm As Integer Dim dd As Integer On Error Resume Next If DATE2 < DATE1 Then Exit Function CurrCal = Calendar Calendar = IIf(IsMissing(Cal), Calendar, IIf(Cal > 1, Calendar, Cal)) Select Case Interval Case "y", "ym", "md", "yd" yy = Year(DATE2) - Year(DATE1) mm = Month(DATE2) - Month(DATE1) dd = Day(DATE2) - Day(DATE1) If dd < 0 Then dd = dd + Day(DATE2 - Day(DATE2)) mm = mm - 1 End If If mm < 0 Then mm = mm + 12 yy = yy - 1 End If End Select Select Case Interval Case "y": vbDATEDIF = yy Case "ym": vbDATEDIF = mm Case "md": vbDATEDIF = dd Case "yd": vbDATEDIF = DateDiff("d", DATE1, DATE2) - _ DateDiff("d", DATE1, DateSerial(Year(DATE2), Month(DATE2) - mm, Day(DATE2) - dd)) Case Else vbDATEDIF = DateDiff(Interval, DATE1, DATE2, FirstDayOfWeek, FirstWeekOfYear) End Select Calendar = CurrCal End Function تحياتي . vbDATEDIF_20051117.rar
علي السحيب قام بنشر نوفمبر 19, 2005 قام بنشر نوفمبر 19, 2005 (معدل) جميل جداً ما قمت به أخي أبو هادي .. لكن باقي على الحلو تكه :( لكن ما قصدته هو أن يتم إدخال التواريخ الهجرية مباشرة داخل الخلية .. يعني هكذا 15/12/1410 .. أتمنى أن تصل إلى كود يفي بهذا الغرض أخي العزيز أبو هادي. تم تعديل نوفمبر 19, 2005 بواسطه علي السحيب
أبو هادي قام بنشر نوفمبر 21, 2005 قام بنشر نوفمبر 21, 2005 (معدل) السلام عليكم أسف أخي علي السحيب على التأخير . الكود بعد التعديل ، وهو الآن يقبل التواريخ بنوع نص أو تاريخ . Public Function vbDATEDIF(ByVal Interval As String, _ ByVal DATE1 As Variant, _ ByVal DATE2 As Variant, _ Optional FirstDayOfWeek As VbDayOfWeek, _ Optional FirstWeekOfYear As VbFirstWeekOfYear, _ Optional Cal As Byte) As Long Dim CurrCal As Byte Dim yy As Long Dim mm As Integer Dim dd As Integer On Error Resume Next CurrCal = Calendar Calendar = IIf(IsMissing(Cal), Calendar, IIf(Cal > 1, Calendar, Cal)) DATE1 = CDate(DATE1) DATE2 = CDate(DATE2) If DATE2 < DATE1 Then GoTo ExitFunction Select Case Interval Case "y", "ym", "md", "yd" yy = Year(DATE2) - Year(DATE1) mm = Month(DATE2) - Month(DATE1) dd = Day(DATE2) - Day(DATE1) If dd < 0 Then dd = dd + Day(DATE2 - Day(DATE2)) mm = mm - 1 End If If mm < 0 Then mm = mm + 12 yy = yy - 1 End If End Select Select Case Interval Case "y": vbDATEDIF = yy Case "ym": vbDATEDIF = mm Case "md": vbDATEDIF = dd Case "yd": vbDATEDIF = DateDiff("d", DATE1, DATE2) - _ DateDiff("d", DATE1, DateSerial(Year(DATE2), Month(DATE2) - mm, Day(DATE2) - dd)) Case Else vbDATEDIF = DateDiff(Interval, DATE1, DATE2, FirstDayOfWeek, FirstWeekOfYear) End Select ExitFunction: Calendar = CurrCal End Function تحياتي . تم تعديل نوفمبر 21, 2005 بواسطه أبو هادي
ماجدجلال قام بنشر نوفمبر 22, 2005 قام بنشر نوفمبر 22, 2005 السلام عليكم ,, هل ينفع الكود السابق في تطبيقة للحصول علي ما يوافق التاريخ الهجري , فمثلا ادخل في الخلية التاريخ الهجري فتعطيني خلية اخري ما يوافقة بالتاريخ الميلادي , ايضا هل تنفع في حالة تعبيئة الخلايا بواسطة " التعبئة التلقائية " وذلك للتواريخ الهجرية ؟ وشكرا لكم ,,,
أبو هادي قام بنشر نوفمبر 22, 2005 قام بنشر نوفمبر 22, 2005 السلام عليكم مرفق مثال يحتوي على دالتين للتحويل بين الهجري والميلادي . آمل تجربتها وإعلامنا بالنتيجة . دالة التحويل من الهجري إلى الميلادي : Function Hijri2Greg(ByVal Hijri As Variant, _ Optional ByVal DateFormat As Variant) As Variant Dim CurrCal As Byte CurrCal = Calendar Calendar = vbCalHijri If VarType(Hijri) <> vbString Then Hijri = Format(Hijri, "dd/mm/yyyy") If IsMissing(DateFormat) Then Hijri2Greg = CDate(Hijri) Else Hijri = CDate(Hijri) Calendar = vbCalGreg Hijri2Greg = Format(Hijri, DateFormat) End If Calendar = CurrCal End Function دالة التحويل من الميلادي إلى الهجري : Function Greg2Hijri(ByVal Greg As Variant, _ Optional ByVal DateFormat As Variant) As Variant Dim CurrCal As Byte CurrCal = Calendar Calendar = vbCalGreg If VarType(Greg) <> vbString Then Greg = Format(Greg, "dd/mm/yyyy") If IsMissing(DateFormat) Then Greg2Hijri = CDate(Greg) Else Greg = CDate(Greg) Calendar = vbCalHijri Greg2Hijri = Format(Greg, DateFormat) End If Calendar = CurrCal End Function تحياتي . DateConverter_20051122.rar
أبو هادي قام بنشر نوفمبر 23, 2005 قام بنشر نوفمبر 23, 2005 السلام عليكم جميل جداً ما قمت به أخي أبو هادي .. لكن باقي على الحلو تكه :( لكن ما قصدته هو أن يتم إدخال التواريخ الهجرية مباشرة داخل الخلية .. يعني هكذا 15/12/1410 .. أتمنى أن تصل إلى كود يفي بهذا الغرض أخي العزيز أبو هادي. الأخ علي السحيب .. لقد رددت عليك ولم تقم بالتعقيب .. عسى المانع خير ؟!. تحياتي .
علي السحيب قام بنشر نوفمبر 23, 2005 قام بنشر نوفمبر 23, 2005 السلام عليكم، كيف حالك أخي أبو هادي .. أنا آسف جداً على تأخري في الرد والشكر على المجهود الكبير والمضني الذي قمت به .. وقد دخلت للتعقيب على إبداعك .. وفوجئت بسؤلك عني. وسبب تأخري في الرد هو أنني كنت أعمل على إختبار الكود بشكل شامل ومن جميع النواحي .. وما وجدته هو قمة في الإبداع وروعة في الأداء ومجهود أكثر من ممتاز .. وكلمة شكر لا تكفي للرد على هذا العمل المتمير منك أخي أبو هادي.
أبو هادي قام بنشر نوفمبر 23, 2005 قام بنشر نوفمبر 23, 2005 السلام عليكم أشكر لطفك أخي على السحيب وأنا في خدمتك والأعضاء الكرام . تحياتي .
الردود الموصى بها