بعتزر بجد مخدتش بالي ياريت كان حد نبهني
وعلي العموم الف شكر وجزاك الله خيرا فعلا كود ناجح جدا
وهناك اضافه بسيطه جدا عشان الاصدقاء يستفيدو
Sub HARD()
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim Rng As Range
Dim A, B, C, D As String
Set WS1 = ThisWorkbook.Sheets("المبيعات")
Set WS2 = ThisWorkbook.Sheets("ترحيل")
Set Rng = WS1.Range("B8:E24")
A = WS1.[E2]: B = WS1.[E3]: C = WS1.[B1]: D = WS1.Range("B2")
If Application.WorksheetFunction.CountIf(WS2.Range("B:B"), WS1.[E2].Value) > 0 Then MsgBox "رقم الوثيقة موجود مسبقا", vbOKOnly + vbCritical + vbDefaultButton1 + vbApplicationModal, "انتباه": Exit Sub
If Application.WorksheetFunction.CountA(WS1.Range("E8:E24")) = 0 Then MsgBox "اكمل البيانات حتي يتم الترحيل", vbOKOnly + vbCritical + vbDefaultButton1 + vbApplicationModal, "انتباه": Exit Sub
Application.ScreenUpdating = False
F = Rng
For i = 1 To UBound(F)
If Len(F(i, 4)) > 0 Then
WS2.Range("b" & Rows.Count).End(xlUp).Offset(1).Resize(1, 4).Value _
= Array(A, B, C, D)
On Error Resume Next '
Rng.SpecialCells(xlCellTypeConstants).ClearContents
WS1.Range("B1,B2").Value = Empty
On Error GoTo 0
With WS2.Range("A2:A" & WS2.Cells(Rows.Count, "B").End(xlUp).Row)
.Value = Evaluate("ROW(" & .Address & ")-1")
End With
End If
Next
Application.ScreenUpdating = True
MsgBox "تم ترحيل البيانات بنجاح", vbInformation, "تعليمات"
End Sub