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

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

قام بنشر

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

الأخوة الكرام في المنتدى 

آمل المساعدة في الملف المرفق 

لدى ملف للحصص الإضافية وبما أن الشهر يبدأ من يوم 21 من كل شهر وحتى يوم 20 الشهر الذي يليه 

أريد أن أحصر عدد الحصص الإضافية لك معلم وبدلا من إضافة الأيام والتواريخ بشكل يدوي آمل إضافة كود تلقائي يملأ الأيام والتواريخ بناء على بداية الفترة ونهاية الفترة مع حذف أيام الإجازة الأسبوعية (الجمعة والسبت)

 

وشاكرا لكم سلفا ما تقدمونه من مساعدة .

جدول الحصص الإضافية.xlsx

قام بنشر (معدل)

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

جرب هذا 

Sub Remplissez_jours_dates()
    Dim début As Date, DateFin As Date, CrDate As Date
    Dim tmp As Long, DayArr As Variant
    Dim WS As Worksheet: Set WS = Sheets("البنين")

    If WS.Range("K2").Value = "" Or WS.Range("O2").Value = "" Or _
    Not IsDate(WS.Range("K2").Value) Or Not IsDate(WS.Range("O2").Value) Then
        MsgBox "يرجى التأكد من صحة التواريخ ", vbExclamation
        Exit Sub
    End If

    début = WS.Range("K2").Value
    DateFin = WS.Range("O2").Value

    If début > DateFin Then: MsgBox "لا يمكن أن يكون تاريخ البدءأكبر من تاريخ الانتهاء", vbExclamation: Exit Sub

    Application.ScreenUpdating = False

    WS.Range("E4:AH5").ClearContents

    DayArr = Array("الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس")

    tmp = 4
    CrDate = début

    Do While CrDate <= DateFin
        If Weekday(CrDate, vbSunday) <> 6 And Weekday(CrDate, vbSunday) <> 7 Then
            If tmp > 34 Then Exit Do

            WS.Cells(4, tmp).Value = DayArr(Weekday(CrDate, vbSunday) - 1)
            WS.Cells(5, tmp).Value = CrDate

            tmp = tmp + 1
        End If
        CrDate = CrDate + 1
    Loop
    Application.ScreenUpdating = True
End Sub

وفي حدث ورقة البنين 

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("K2,O2")) Is Nothing Then
        Remplissez_jours_dates
    End If
End Sub

 

جدول الحصص الإضافية.xlsb

تم تعديل بواسطه محمد هشام.
  • Like 2
قام بنشر (معدل)

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

 

أخ محمد هشام إذا أمكن تضيف أيام الإجازة الأسبوعية لكن يكون عليه تظليل بلون معين .

تم تعديل بواسطه shanghity11
قام بنشر (معدل)
    début = WS.Range("K2").Value
    DateFin = WS.Range("O2").Value
    Set Rng = WS.Range("D4:AH5")
    
    If début > DateFin Then : MsgBox "لا يمكن أن يكون تاريخ البدء أكبر من تاريخ الانتهاء", vbExclamation :Exit Sub
 
    Application.ScreenUpdating = False
    
    With Rng
    .ClearContents
    .Interior.ColorIndex = xlNone
    End With

    DayArr = Array("الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت")
    tmp = 4
    CrDate = début
    Do While CrDate <= DateFin
        If tmp > 34 Then Exit Do

        WS.Cells(4, tmp).Value = DayArr(Weekday(CrDate, vbSunday) - 1)
        WS.Cells(5, tmp).Value = CrDate

       If Weekday(CrDate, vbSunday) >= 6 Then
            WS.Cells(4, tmp).Interior.Color = RGB(255, 255, 0)
            WS.Cells(5, tmp).Interior.Color = RGB(255, 255, 0)
         End If
        tmp = tmp + 1
        CrDate = CrDate + 1
    Loop
    Application.ScreenUpdating = True

 

 

جدول الحصص الإضافية.xlsb

تم تعديل بواسطه محمد هشام.
  • Like 1
قام بنشر (معدل)
Sub Remplissez_jours_dates()
    Dim début As Date, DateFin As Date, CrDate As Date
    Dim tmp As Long, DayArr As Variant, i As Long
    Dim WS As Worksheet: Set WS = Sheets("البنين")
    
    If WS.Range("K2").Value = "" Or WS.Range("O2").Value = "" Or _
       Not IsDate(WS.Range("K2").Value) Or Not IsDate(WS.Range("O2").Value) Or _
       WS.Range("K2").Value > WS.Range("O2").Value Then
        MsgBox "يرجى التأكد من صحة التواريخ " & vbCrLf & _
               "وتاريخ البدء لا يكون أكبر من تاريخ الانتهاء", vbExclamation
        Exit Sub
    End If
    
    début = WS.Range("K2").Value
    DateFin = WS.Range("O2").Value
  ' لاخر اسم في عمود b
   Dim LastRow As Long
   LastRow = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row
   'لاخر الكشف الصف 45
'   LastRow = 45
    Application.ScreenUpdating = False
    
    WS.Range("D4:AH5").ClearContents
    With WS.Range("D4:AH45")
        .Interior.Pattern = xlNone
        .Font.Color = RGB(0, 0, 0)
    End With

    DayArr = Array("الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت")
    tmp = 4
    CrDate = début

    Do While CrDate <= DateFin
        If tmp > 34 Then Exit Do

        WS.Cells(4, tmp).Value = DayArr(Weekday(CrDate, vbSunday) - 1)
        WS.Cells(5, tmp).Value = CrDate

        If Weekday(CrDate, vbSunday) >= 6 Then
            WS.Range(WS.Cells(4, tmp), WS.Cells(LastRow, tmp)).Interior.Color = RGB(255, 255, 0)
            WS.Range(WS.Cells(4, tmp), WS.Cells(5, tmp)).Font.Color = RGB(255, 0, 0)
        End If

        tmp = tmp + 1
        CrDate = CrDate + 1
    Loop

    Application.ScreenUpdating = True
End Sub

 

 

جدول الحصص الإضافية 2.xlsb

تم تعديل بواسطه محمد هشام.
  • Like 2
قام بنشر

باقي شي آخر أخ محمد

أريد أن يمتد تظليل أيام الإجازة الأسبوعية إلى نهاية الكشف

 

واعذرونا على الطلبات الكثيرة بارك الله فيكم

قام بنشر (معدل)
15 ساعات مضت, shanghity11 said:

أريد أن يمتد تظليل أيام الإجازة الأسبوعية إلى نهاية الكشف

تم تعديل المشاركة السابقة لتتناسب مع طلبك 

Capture.PNG.b3d9f35706a119cafa606813b00b3768.PNG

تم تعديل بواسطه محمد هشام.
قام بنشر

بارك الله فيك أخ محمد وفي علمك

عندي ملاحظة بسيطة وهي أن التظليل ينتهي حيث تنتهي الأسماء

وأنا أريد أن يكون التظليل إلى نهاية الكشف حتى لو لم تكن هناك أسماء 

بمجرد إدخال نهاية الفترة يتم التظليل إلى نهاية الكشف تلقائيا

 

حفظك الله وبارك فيك ولا عدمناك

قام بنشر
58 دقائق مضت, shanghity11 said:

وأنا أريد أن يكون التظليل إلى نهاية الكشف حتى لو لم تكن هناك أسماء

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

في 2‏/12‏/2024 at 13:12, محمد هشام. said:
' لاخر اسم في عمود b
   Dim LastRow As Long
   LastRow = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row
   'لاخر الكشف الصف 45
'   LastRow = 45

في حالتك يكفي البقاء على 

Dim LastRow As Long
LastRow = 45

 

قام بنشر

بارك الله فيك أخ محمد

التظليل يتم إلى آخر اسم . 

ويبقى باقي الكشف إلى صف 45 بدون تظليل

وأنا أريد التظليل إلى صف 45 حتى لو لم يكن هناك أسماء

 

شاكرا لك رحابة صدرك بارك الله فيك

  • أفضل إجابة
قام بنشر

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

LastRow = 45

اي عدد الصفوف لديك على الملف 

Capturedcran05-12-202411_39_38.png.29b5f47e5eba3ff510fdf0585981ab4c.png

او تثبيتها هنا مباشرة 

 WS.Range(WS.Cells(4, tmp), WS.Cells(45, tmp)).Interior.Color = RGB(255, 255, 0)

ScreenRecorderProject8.gif.b52a412d8d7e47d6024b4d0354fb42cd.gif

 

 

جدول الحصص الإضافية 3.xlsb

  • Like 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