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

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

قام بنشر

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

هذا ملف للاستاذ المحترم محمود الشريف

يستخرج به الناجحين والراسبين

ولكن بمعيار كلمه واحده مثلا ناجح ....

ويوجد ناجح وناجحه

او راسب وراسبه

كيف يمكن تعديل هذه الجزئيه في الكود  ؟

 

طباعة شهادات.rar

طباعة شهادات.rar

  • Like 1
قام بنشر

السلام عليكم أخي الكريم ناصر

ابحث عن الإجراء الفرعي المسمى 

Sub Kh_JJJ(Nd As String)

وعدل السطر التالي

If .Cells(R, 1) = Nd Then

ليكون بالشكل التالي

If .Cells(R, 1) Like "*" & Nd & "*" Then

 

  • Like 2
قام بنشر

الان ارفع لك القبعه ..

جزاك الله كل خير وبارك لك استاذ ياسر خليل

اكمل جميلك في جزئيه اخرى

تعجبني بدايه هذا الكود

بمعنى انه يضع كل المتغيرات في اول الكود

اتعشم منكم ان تجعل هذا الكود في الملف المرفق في هذه المشاركه ان يتميز بهذه الميزه ( ان تكون المتغيرات في اول الكود )

 

 

شهادات رائعه لساجدة.rar

قام بنشر

وجزيت خيراً أخي الكريم ناصر

اطلعت على الملف ووجدت عدد كيبر من الموديولات .. أي موديول أو كود تريد تعديله .. وهذه الميزة يمكن إضافتها باستبدال الجزء المتغير بجزء ثابت يتم استخدامه بشكل دائم

مثال: 

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

Const strRange As String="A1:B6"

ثم استخدم المتغير المسمى strRange (يمكن تسميته بما شئت ..) يمكن استخدامه في أي سطر موجود فيه النطاق 

على سبيل المثال : 

Sheets("Sheet1").Range("A1:B6").ClearContents

سيكون بهذا الشكل بعد إضافة السطر الأول

Sheets("Sheet1").Range(strRange).ClearContents

لاحظ أنه تم استبدال النطاق A1:B6 بالمتغير الثابت

 

وهكذا لأي متغير لديك ...

قام بنشر

جزيت خيراً أخي الكريم ناصر بمثل ما دعوت لي 

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

 

  • Like 1
قام بنشر

ربنا يبارك لك استاذ ياسر خليل

==

الفيديو لايعمل

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

 

ربنا يبارك لك استاذ ياسر خليل

==

الفيديو لايعمل

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

 

قام بنشر

الاستاذ المحترم ياسر خليل

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

نحن عندما نضغط على زر الناجحين تظهر الشهادات بشرط ان يكونو ناجحين

وعندما نضغط على زر الدور التاني تظهر الشهادات ولكن بشرط ان يكونوا لهم دور تان

طيب عايزين الشهادات تطلع بشرط الفصول يعني عايز شهادات فصل 5/1 مثلا وهكذا

قام بنشر

جرب الكود التالي .... 

Sub كل_الناجحين()
    Const StudentData As String = "رصد الترم الثانى"
    Const Shehada As String = "شهادة"

    lr = Sheets(StudentData).Range("C7").End(xlDown).Row
    c = 2
    
    Application.ScreenUpdating = False
        x = MsgBox("هل تريد طباعة كل الناجحين؟ إذا كانت الإجابة بنعم سيتم طباعة كل الناجحين أم لا سيقوم بطباعة الفصول", vbYesNoCancel)
        If x = vbYes Then
            b = True
        ElseIf x = vbNo Then
            b = False
            strClass = InputBox("أدخل الفصل")
            If IsError(Application.Match(strClass, Sheets(StudentData).Columns(4), 0)) Or strClass = "" Then
                MsgBox "لا يوجد فصل لديك بهذا الشكل", vbExclamation: Exit Sub
            End If
        Else
            MsgBox "لم يتم تنفيذ الأمر لأنك نقرت على إلغاء يا ناصر", vbExclamation: Exit Sub
        End If
    
        For i = 7 To lr
            If c Mod 2 = 0 Then
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(3, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(12, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(12, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                End If
                GoTo 1
            Else
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(19, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(28, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(28, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                    Sheets(Shehada).Range("A1:P31").PrintOut
    
                    Sheets(Shehada).Cells(3, 13) = ""
                    Sheets(Shehada).Cells(19, 13) = ""
                End If
            End If
1:
        Next i
        If Sheets(Shehada).Cells(19, 13) = "" And Sheets(Shehada).Cells(3, 13) <> "" Then
            Sheets(Shehada).Range("A1:P15").PrintOut
        End If
    Application.ScreenUpdating = True
End Sub

 

قام بنشر

ربنا يبارك لك استاذ ياسر خليل

لوفيه خليه وفيها قائمه منسدله بالفصول .. هاتكون اسهل من الكتابه لتطابق اسم الفصل في القائمه المنسدله

ربنا يكتبها في كفة حسناتك

 

قام بنشر

قم بتصميم قائمة منسدلة بالفصول وجعل قيمة المتغير strClass تساوي تلك الخلية ولكن في تلك الحالة لن يكون ثابت Const بل يجب تغييره ليكون متغير بهذا الشكل

Dim strClass as String

strClass=Range("J6").Value

باعتبار أن الخلية J6 ستحتوي على القائمة المنسدلة

تقبل تحياتي

قام بنشر
Sub فصـــول_1()
    Const StudentData As String = "رصد الترم الثانى"
    Const Shehada As String = "شهادة"
Dim strClass As String

strClass = Range("W2").Value
    lr = Sheets(StudentData).Range("C7").End(xlDown).Row
    c = 2
    
    Application.ScreenUpdating = False
        x = MsgBox("هل تريد طباعة كل الناجحين؟ إذا كانت الإجابة بنعم سيتم طباعة كل الناجحين أم لا سيقوم بطباعة الفصول", vbYesNoCancel)
        If x = vbYes Then
            b = True
        ElseIf x = vbNo Then
            b = False
          '  strClass = InputBox("أدخل الفصل")
            If IsError(Application.Match(strClass, Sheets(StudentData).Columns(4), 0)) Or strClass = "" Then
                MsgBox "لا يوجد فصل لديك بهذا الشكل", vbExclamation: Exit Sub
            End If
        Else
            MsgBox "لم يتم تنفيذ الأمر لأنك نقرت على إلغاء يا ناصر", vbExclamation: Exit Sub
        End If
    
        For i = 7 To lr
            If c Mod 2 = 0 Then
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(3, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(12, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(12, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                End If
                GoTo 1
            Else
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(19, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(28, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(28, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                    Sheets(Shehada).Range("A1:P31").PrintOut
    
                    Sheets(Shehada).Cells(3, 13) = ""
                    Sheets(Shehada).Cells(19, 13) = ""
                End If
            End If
1:
        Next i
        If Sheets(Shehada).Cells(19, 13) = "" And Sheets(Shehada).Cells(3, 13) <> "" Then
            Sheets(Shehada).Range("A1:P15").PrintOut
        End If
    Application.ScreenUpdating = True
End Sub

هل يكون بهذا الشكل يا استاذ ياسر حفظك الله ؟

لانها لم تعمل معي معذره

قام بنشر

الكود بهذا الشكل سليم إن شاء الله

ولكن طالما أننا سنتعامل مع أكثر من ورقة عمل فلابد من الإشارة لورقة العمل التي فيها قيمة الخلية (القائمة المنسدلة)

قم بالإشارة إلى ورقة العمل قبل كلمة Range في هذا السطر

strClass = Sheets(StudentData).Range("W2").Value

 

  • Like 2
قام بنشر
Sub فصـــول_1()
    Const StudentData As String = "رصد الترم الثانى"
    Const Shehada As String = "شهادة"
Dim strClass As String
strClass = Sheets(Shehada).Range("W2").Value

    lr = Sheets(StudentData).Range("C7").End(xlDown).Row
    c = 2
    
    Application.ScreenUpdating = False
        x = MsgBox("هل تريد طباعة كل الناجحين؟ إذا كانت الإجابة بنعم سيتم طباعة كل الناجحين أم لا سيقوم بطباعة الفصول", vbYesNoCancel)
        If x = vbYes Then
            b = True
        ElseIf x = vbNo Then
            b = False
          '  strClass = InputBox("أدخل الفصل")
           ' If IsError(Application.Match(strClass, Sheets(StudentData).Columns(4), 0)) Or strClass = "" Then
             '   MsgBox "لا يوجد فصل لديك بهذا الشكل", vbExclamation: Exit Sub
          '  End If
       ' Else
         '   MsgBox "لم يتم تنفيذ الأمر لأنك نقرت على إلغاء يا ناصر", vbExclamation: Exit Sub
        End If
    
        For i = 7 To lr
            If c Mod 2 = 0 Then
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(3, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(12, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(12, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                End If
                GoTo 1
            Else
                If Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*" And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then
                    Sheets(Shehada).Cells(19, 13) = Sheets(StudentData).Cells(i, 2)
                    Sheets(Shehada).Cells(28, 3) = Sheets(StudentData).Cells(i, 157)
                    Sheets(Shehada).Cells(28, 6) = Sheets(StudentData).Cells(i, 158)
                    c = c + 1
                    Sheets(Shehada).Range("A1:P31").PrintOut
    
                    Sheets(Shehada).Cells(3, 13) = ""
                    Sheets(Shehada).Cells(19, 13) = ""
                End If
            End If
1:
        Next i
        If Sheets(Shehada).Cells(19, 13) = "" And Sheets(Shehada).Cells(3, 13) <> "" Then
            Sheets(Shehada).Range("A1:P15").PrintOut
        End If
    Application.ScreenUpdating = True
End Sub

جزاك الله الف الف خير  استاذ ياسر

تاتي باناجحين الفصل فقط اذا اخترنا لا

اذا كان المعيار الفصل تاتي بكل الفصل ( ناجح و دور تان )

=====

نريدها اذا كان المعيار الفصل تاتي بكل الفصل ( ناجح و دور تان )

 

قام بنشر

أخي ناصر لم تذكر تلك النقطة من البداية ويبدو أن الموضوع بهذا الشكل يزاداد تعقيداً ..عموماً جرب تغيير السطرين لديك اللذين فيهما الشرط إلى هذا الشكل (لم أجرب لضيق الوقت لدي)

If IIf(b = True, Sheets(StudentData).Cells(i, 157) Like "*" & "نا" & "*", True) And IIf(b = True, True, Sheets(StudentData).Cells(i, 4).Value = strClass) Then

ستقوم بتغيير السطرين بنفس الأسلوب وجرب وأخبرني بالنتائج

قام بنشر

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

Sub PrintClassesYK()
    Dim wshD            As Worksheet
    Dim wshS            As Worksheet
    Dim x               As VbMsgBoxResult
    Dim b               As Boolean
    Dim i               As Long
    Dim lr              As Long
    Dim c               As Long
    Dim strClass        As String

    Const studentData   As String = "رصد الترم الثانى"
    Const shehada       As String = "شهادة"
    Const strSucce      As String = "*نا*"

    x = MsgBox("هل تريد طباعة كل الناجحين؟ إذا كانت الإجابة بنعم سيتم طباعة كل الناجحين أم لا سيقوم بطباعة الفصول", vbYesNoCancel)
    Select Case x
        Case vbYes
            b = True
        Case vbNo
            b = False
        Case vbCancel
            MsgBox "لم يتم تنفيذ الأمر لأنك نقرت على إلغاء يا ناصر", vbExclamation: Exit Sub
    End Select

    Application.ScreenUpdating = False
        Set wshD = Sheets(studentData)
        Set wshS = Sheets(shehada)
        
        strClass = wshS.Range("W2").Value
        c = 2
    
        lr = wshD.Range("C7").End(xlDown).Row
        For i = 7 To lr
            If (b And wshD.Cells(i, 157) Like strSucce) Or (Not b And wshD.Cells(i, 4).Value = strClass) Then
                If c Mod 2 = 0 Then
                    wshS.Cells(3, 13) = wshD.Cells(i, 2)
                    wshS.Cells(12, 3) = wshD.Cells(i, 157)
                    wshS.Cells(12, 6) = wshD.Cells(i, 158)
                Else
                    wshS.Cells(19, 13) = wshD.Cells(i, 2)
                    wshS.Cells(28, 3) = wshD.Cells(i, 157)
                    wshS.Cells(28, 6) = wshD.Cells(i, 158)
                    wshS.Range("A1:P31").PrintOut
                    wshS.Cells(3, 13) = ""
                    wshS.Cells(19, 13) = ""
                End If
                c = c + 1
            End If
        Next i
    
        If wshS.Cells(19, 13) = "" And wshS.Cells(3, 13) <> "" Then
            wshS.Range("A1:P15").PrintOut
        End If
    Application.ScreenUpdating = True
End Sub

 

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