السلام عليكم
بعد اذن اخي حمادة
و بالنسبة للسؤال الاول يمكن تغيير الكود السابق بالشكل التالي
Sub SAMA1()
Dim LR As Long, MayRng As Range
Dim SA As Worksheet, SA1 As Worksheet
Set MayRng = Application.Union(Range("C12:C24"), Range("C26:C27"), Range("C29:C32"), Range("C34:C36"))
Set SA = Worksheets("Archive"): Set SA1 = Worksheets("Formulaire")
LR = SA.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If SA.Cells(LR - 1, 1).Value = SA1.Range("J6").Value Then GoTo 1
With SA
.Cells(LR, 1).Value = SA1.[j6].Value: .Cells(LR, 2).Value = SA1.[c6].Value
.Cells(LR, 3).Value = SA1.[c7].Value: .Cells(LR, 4).Value = SA1.[c8].Value
.Cells(LR, 5).Value = SA1.[j7].Value: .Cells(LR, 6).Value = SA1.[j8].Value
.Cells(LR, 29).Value = SA1.[c37].Value
MayRng.Copy
.Cells(LR, 7).PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
End With
Exit Sub
1
MsgBox "عفوا . . هذا الرقم موجود مسبقا", vbExclamation + vbMsgBoxRight, "خطأ"
End Sub