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

عمل انذار عند غياب الطالب أيام معينة


إذهب إلى أفضل إجابة Solved by سليم حاصبيا,

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

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

أكرر طلبي بالمساعدة في برنامج شئون الطلاب

بعمل معادلتين لإحصاء غياب الطالب إذا غاب 5 أيام متصلة أو 7 أيام منفصلة وعمل إنذار بالحالتين 

ومرفق ملف للعمل

انذار غياب.xlsx

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

جرب هذاالماكرو

Option Explicit
Sub test_5()
Dim str$: str = "غ"
Dim k%: k = 30
Dim cont%, col%
Dim i%, x%: i = 3
Range("Ag5").Resize(3, 3).ClearContents
For col = 5 To 7
    For x = i To k
        If Application.CountIf(Range(Cells(col, x), Cells(col, x + 7)), str) >= 5 Then
         cont = cont + 1
         Cells(col, "ag").Offset(, cont - 1) = "Ok" & cont
         x = x + 5
        End If
     Next
  cont = 0
Next
End Sub

الملف مرفق للمعاينة

Inzar.xlsm

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

تعجز الكلمات أستاذنا  سليم حاصبيا عن الوصف نتعلم منكم ومن الأساتذة في أوفيسنا الماكرو فعال لكن أريده أن يعمل بمجرد وصول الغياب إلي المطلوب ثم أنه بالتجربة عند غياب الطالب خمسة أيام متقطعة أعطي إنذار وهو غير مطلوب فالمطلوب اعطاء انذار عند غيابه خمسة أيام متصلة أو سبعة أيام متقطعة وأعتذر للإطالة 

Inzar.xlsm

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

بعد اذن استاذنا الفاضل الاستاذ سليم جزاه الله عنا خير الجزاء واثراء للموضوع انظر لهذ الملف لعله يفى بالغرض

نسخة من انذار غياب.xlsm

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

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

أرجو أن تصل الفكرة مرة ثانية : أريد أن يظهر إنذار كلما غاب الطالب  5 أيام متصلة أو 7 أيام منفصلة مع تجاوز أيام العطلات وذلك علي مدار الشهر أو السنة

حتي تتجمع 3 انذارات لتصل إلي 15 يوم متصل أو 21 منفصل وهذا النظام مطبق لدينا في التعليم الفني و لم أجد برنامج يقدمه

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

تم معالجة الامر بالنسبة لخمسة ايام متتالية

الكود

Option Explicit

Sub test_5Dyas()
    Rem=====>>> Created By Salim Hasbaya On 29/8/219
Dim str$: str = "غ"
Dim cont%, col%, k%: k = 35
Dim i%, x%: i = 3
Dim t%
Dim my_text: my_text = "انذار 5 ايام متتابعة ("
Dim X_arr(), m%: m = 1
Range("Ag5").Resize(3, 3).ClearContents
For col = 5 To 7
    For x = i To k
         '==========================
         If Cells(4, x) = "جمعة" Or Cells(4, x) = "سبت" Then
         GoTo Next_X
         End If
         '==========================
         If Cells(col, x) = "" Then
          cont = 0
          x = x + 1
         End If
         '==========================
           cont = cont + IIf(Cells(col, x) <> "", 1, 0)
         '==========================
        If cont = 5 Then
         ReDim Preserve X_arr(1 To m)
         X_arr(m) = my_text & m & ")"
         m = m + 1
         cont = 0
        End If
        '==========================
Next_X:
     Next x
     On Error Resume Next
     t = UBound(X_arr)
     '==========================
     If t Then
      Cells(col, "AG").Resize(1, UBound(X_arr)) = X_arr
     End If
     '================================
     cont = 0
  Erase X_arr: m = 1
  Next col
End Sub

الملف مرفق

 

Inzar 5 Days.xlsm

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

ما قلت لك تم معالجة الامر بالنسبة لخمسة ايام متتالية

بالنسبة لانذار الـــ سبعة ايام لا يجوز وضع النتيجة في نفس الخلايا مع نتيجة ماكرو  5 ايام  وإلا سيحصل تبادل  بحيث تحصل على نتيجة اخر ماكرو تم تشغيله

لذلك اقترح ان تكون نتيجة ماكرو 7 ايام في خلايا مستقلة

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

أستاذنا سليم حاصبيا نحن في مصر لدينا لوائح تحكمنا في التعليم الفني وأعرف أن طلباتي كثيرة فيمكن للطالب أن يحصل علي إنذارين متتاليين خلال الشهر او العام أحدهما بسبب غياب 5 أيام متصلة والآخر بسبب 7 أيام منفصلة وهكذا 

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

  • أفضل إجابة

ممكن التعامل مع هذا الملف واختيار 5 ايام متتالية او 7 متفرقة او الكل

الاكواد اللازمة

Option Explicit

Sub test_5Dyas()
    Rem=====>>> Created By Salim Hasbaya On 30/8/219
Dim str$: str = "غ"
Dim cont%, col%, k%: k = 35
Dim i%, x%: i = 3
Dim t%, last_ro%
Dim my_text: my_text = "انذار 5 ("
Dim X_arr(), m%: m = 1

last_ro = Cells(Rows.Count, 2).End(3).Row
Range("Ag5").Resize(last_ro - 4, 7).ClearContents

If last_ro < 5 Then Exit Sub
For col = 5 To last_ro
    For x = i To k
         '==========================
         If Cells(4, x) = "جمعة" Or Cells(4, x) = "سبت" Then
         GoTo Next_X
         End If
         '==========================
         If Cells(col, x) = "" Then
          cont = 0
          x = x + 1
         End If
         '==========================
           cont = cont + IIf(Cells(col, x) <> "", 1, 0)
         '==========================
        If cont = 5 Then
         ReDim Preserve X_arr(1 To m)
         X_arr(m) = my_text & m & ")"
         m = m + 1
         cont = 0
        End If
        '==========================
Next_X:
     Next x
     On Error Resume Next
     t = UBound(X_arr)
     '==========================
     If t Then
      Cells(col, "AG").Resize(1, UBound(X_arr)) = X_arr
     End If
     '================================
     cont = 0
  Erase X_arr: m = 1
  Next col
End Sub
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sub test_7Dyas()
    Rem=====>>> Created By Salim Hasbaya On 29/8/219
Dim str$: str = "غ"
Dim cont%, col%, k%: k = 35
Dim i%, x%: i = 3
Dim t%, last_ro%
Dim my_text: my_text = "انذار 7 ("
Dim X_arr(), m%: m = 1
last_ro = Cells(Rows.Count, 2).End(3).Row

Range("Ag5").Resize(last_ro - 4, 3).ClearContents
If last_ro < 5 Then Exit Sub
For col = 5 To last_ro
    For x = i To k
         '==========================
         If Cells(4, x) = "جمعة" Or Cells(4, x) = "سبت" Then
         GoTo Next_X
         End If
         '==========================
         '==========================
           cont = cont + IIf(Cells(col, x) <> "", 1, 0)
         '==========================
        If cont = 7 Then
         ReDim Preserve X_arr(1 To m)
         X_arr(m) = my_text & m & ")"
         m = m + 1
         cont = 0
        End If
        '==========================
Next_X:
     Next x
     On Error Resume Next
     t = UBound(X_arr)
     '==========================
     If t Then
      Cells(col, "Ak").Resize(1, UBound(X_arr)) = X_arr
     End If
     '================================
     cont = 0
  Erase X_arr: m = 1
  Next col
End Sub
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Sub all_days()
Dim ro%, Col_Num%: Col_Num = 30
Dim xx%, My_count%
ro = Cells(Rows.Count, "b").End(3).Row
Dim kk%, Mon_array()
Dim st$: st = "انذار7("
 If ro < 5 Then Exit Sub
 test_5Dyas
 For xx = 5 To ro
  My_count = Application.CountIf(Cells(xx, 3).Resize(1, Col_Num), "غ")
  My_count = My_count \ 7
  If My_count = 0 Then GoTo Next_XX
   For kk = 1 To My_count
    Cells(xx, "ak").Offset(, kk - 1) = st & kk & ")"
    Next
Next_XX:
  Next

End Sub

الملف مرفق

Inzar ALL Days.xlsm

  • Like 5
  • Thanks 1
رابط هذا التعليق
شارك

الله يحفظك أستاذ سليم لو امتلكت ان أعطيك جائزة نوبل لمنحتك اياها لكن طلب اخير أن يظهر الانذار الأول بعد اكتمال 5 ايام متصلة و الانذار الثاني بعد اكتمال 7 ايام متقطعة و العكس

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

ما تراه ليس الانذار السادس او اسابع

مثلاُ :

أنذار 5(1)  معناه انذار الخمسة ايام  رقم 1

أنذار 7(2)  معناه انذار السبعة ايام  رقم 2 وهكذا

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

الاستاذ الفاضل / سليم حاصبا

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

وهذا الكلام للتوضيح ايضا للاستاذ / مسافر

انتم رجعتم ليه تعدوا للطالب الغياب

اللى انا فاهمه

ان الطالب غاب 5 أيام متصلين ارسل له الانذا الاول بعدد 5 أيام متصلين واصبح الطالب فهم انه غاب عدد5 ايام متصلين

ليه بقى اما غاب يومين بعد كده رجعتم تعدوا للطالب مره اخرى وبتبعدوا له انذار ثانى بعدد 7 أيام منفصلين  كده الطالب لم يفهم هو الانذار الثانى بداخله 5 أيام متصلين ام لا ولا الانذار الثانى بعدد 7 أيام من غير 5 أيام المنصلين تشتت الطالب

الصح

ان سيادتكم لو ارسلتم للطالب انذار اول بعدد 5 أيام متصلين انذار اول

لاترسل للطالب انذار ثانى للطالب الا اذا غاب بعد 5 أيام متصلين عدد 7 ايام منفصلين يعنى يكون فى اجمالى غيابه غاب 12 يوم 

وبكده فهم الطالب الانذار اول كان علشان 5 ايام متصلين ولم جاء له الانذار الثانى كان نتيجة غيابه بعد 5 أيام المتصلين فاصبح اجمالى غيابه 12

مش ابعتله انذار اول بعدد 5 أيام متصلين ويحضر يوم المدرسة ويغيب يومين اقوم ابعتله اندار ثانى بعدد 7 أيام واقوله منفصلين هذا من وجهة نظرى ليس صح

ارجو الرد والمتابعة لان الموضوع ده مهم والمنتدى لم يتطرق له من قبل

 

 

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

خالص الشكر للأستاذة إللي شرفوني باثراء موضوعي لكن أستاذ احمد بدره حضرتك في ملحوظة صغيرة إن غياب الطالب الثاني حضرتك جمعت بين غياب الخمسة أيام والسبعة أيام في انذارين ونحن نريد أن نفصل بين إنذار الطالب بسبب غياب خمسة أو سبعة ثم الإنذار التالي بسبب غياب خمسة أو سبعة متتاليين ليجمع 15 يوما متواصلين أو 21  يوما متفرقين وهكذا

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

استاذ الفاضل / مسافر

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

على فكرة أنا سألت عن الغياب من مسئولين فى التعليم الفنى 

وشوفت من الامانة ان اعرض على سيادتك اجابة المسئول فى التعليم الفنى 

أولا :- يفصل الطالب على عدد 15 يوم متصل وعدد 30 يوم منفصل وليس على 21 منفصل 

ثانيا:- عندما ترسل للطالب انذار سواء كان متصل او متقطع انت لاتذكر في هذا الانذار ان غياب الطالب متصل او متقطع . ولكن بتقول فى الانذار انه يوجد مادة فى القانون نسيت رقمها بتنص على ان الطالب لو تغيب 15 متصل يفصل ولو تغيب عدد 30 منفصل يفصل . لو عايز رقم المادة او القانون اجيبها لسيادتك 

 

ثالثا :- لابد وان يرسل للطالب عدد 3  أنذارات ولايقل عن 3  سواء هاتفصله متصل او متقطع وهذه نقطة مهم يكون وصل للطالب عدد 3  إنذارت قبل الفصل 

رابعا :- مفيش قانون او مادة حددت ان بعد مثلا غياب الطالب 5 أيام متصلة ترسل له انذار اول متصل او يوجد قانون عندما يغيب الطالب عدد 7 أيام منفصلين ارسل له انذار اول بعدد 7 منفصلين مفيش قانون ولامادة ولا لائحة تقول هذا . ولكن يبق سؤال كيف تحكم او تنفذ فكرة ارسال الانذارات

فكرة الانذارات كالاتى

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

هايكون عنده فرصة للرجوع للمدرسة وانه لم يفصل . وبكده وطالما مفيش قيود قانونية ممكن ابعت للطالب انذار اول متصل بعدد 4 أيام او انذار متصل بى 5 أيام مفيش مشكلة والانذار الثانى يكون بعدد 8 أو 10 غياب متصل . بس خلى بالك الانذار الثالث بعدد مثلا 12 يوم غياب متصل  أو 13 يوم غياب متصل على اقصى تقدير علشان لو الطالب رجع بعد الانذار الثالث يكون عنده فرصة للرجوع قبل الفصل . تطبيقا لمبدأ الانذارات تنذر او توضح او تعرف الطالب ان على وشك الفصل وليس لقطع الرقبة.

وبكده ياريس يكون الخلاصة

طالب غاب متصل ومنفصل مثلا غاب 5 متصل وبعد كده حضر كذا يوم وغاب بعد كده عدد 2 يوم . هاترسل له انذار اول بعدد 5 أو 4 ومش هانقول متصل او منفصل انذار اول فقط لاغير. وننتظر لو وصلوا الى 8 متصلين نرسل الانذار الثانى ولانقول متصلين ولو وصلوا مثلا 16 منفصلين نرسل الانذار الثانى وهكذا

وعلى فكرة عندما سألت قال لى

ممكن تعمله الانذارات المتصلة على 4 ثم 8 ثم 12

والانذارات المنفصلة اضرب فى 2 يعنى الانذارت المنفصلة تكون على 8 ثم 16 ثم 24

وطبعا لو ارسلت انذار اول متصل على 4 وغاب الطالب منفصل تبعت له انذار ثانى على 16 منفصل وهكذا 

يعنى الموضوع عايز يفهم شكله العام ثم ينظم برمجيا 

انا أسف وبعتذر بشده استاذى الفاضل / مسافر    على الاطالة ولكن احببت ان اوصل ماسمعته او ماعرفته 

وصدقونى لو وصلنا الى حل لفكرة الغياب دى برمجيا هايكون عندنا برنامج شئون طلبة فريد من نوعه

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

وان شاء الله هافكر اعمله لو فهمته برمجيا

اعتذر مره اخرى للاطالة والله الموفق

 

تم تعديل بواسطه فضل حسين
  • Thanks 1
رابط هذا التعليق
شارك

شكرا علي اهتمامك بالموضوع أستاذ فضل حسين فالاستفادة للجميع - و للتوضيح أنا أطلب المعادلة أو الكود الذي يعطي الإنذار عند غياب الطالب وليس كتابة منفصل أو متصل وكل ما ذكرته حضرتك يدخل في دائرة الاهتمام - ثم ان الانذار الغرض منه اعلام ولي الأمر بتسرب ابنه من المدرسة أو الاستفسار عند غيابه بشكل متكرر 

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information