Sub كشف_دور_ثاني()
On Error Resume Next
Dim T As Integer, Y As Integer, Z As Integer, V As Integer _
, N As Integer, X As Integer, R As Integer, M As Integer _
, C As Integer, CC As Integer
مسح_كشف_دور_ثاني
'هنا نكتب مدى العمود الذي به كلمة ناجح أو راسب من الشيت الأصلي
T = Application.CountIf(Sheet1.Range("DI11:DI1000"), "<>ناجح") / 30
'================================
Application.ScreenUpdating = False
With ActiveSheet
Y = (T * 38) + 39
.PageSetup.PrintArea = Range("B2:N" & Y).Address
End With
'================================
Z = 40
Range("نموذج_كشف2").Copy
For V = 1 To T
Range("B" & Z).PasteSpecial xlPasteAll
Set ActiveSheet.HPageBreaks(V).Location = Range("B" & Z)
Z = Z + 38
Next V
Application.CutCopyMode = False
'================================
N = 6
With Sheet1
X = .Range("A" & .Rows.Count).End(xlUp).Row
For R = 11 To X
If .Range("CZ" & R) <> "ناجح" Then
M = M + 1
Cells(M + N, 2) = M
For C = 1 To 12 'نعدل هذا الرقم ليكون عدد الأعمدة في صفحة الراسبين التي نرحل إليها البيانات
'هنا نكتب أرقام أعمدة المواد التي نريد جلب البيانات منها
CC = Choose(C, 3, 2, 26, 35, 44, 53, 64, 69, 74, 84, 94)
Cells(M + N, C + 2) = .Cells(R, CC)
Next C
If M Mod 30 = 0 Then N = N + 8
End If
Next R
End With
Range("A2").Activate
'================================
Application.ScreenUpdating = True
MsgBox "تم ترحيل " & M & " طالب دور ثاني", vbMsgBoxRight, "الحمدلله"
معاينة
On Error GoTo 0
End Sub
Sub مسح_كشف_دور_ثاني()
Dim Y As Integer
Application.ScreenUpdating = False
With ActiveSheet
Y = .UsedRange.Rows.Count + 40
.Rows("40:" & Y).Delete
'نغير الرقم (13) ليكون بعدد أعمدة البيانات في الصفحة المرحل اليها
Range("نموذج_كشف2").Offset(5, 0).Resize(30, 13).ClearContents
.PageSetup.PrintArea = Range("نموذج_كشف2").Address
End With
ActiveWindow.ScrollRow = 2
تفضل الشرح أخي الكريم أما الطلب الثاني محتاج نظر