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

ترحيل بشرط


إذهب إلى أفضل إجابة Solved by الـعيدروس,

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

السلام عليكم

ارجوا من الاخوة الاعزاء

يوجد ملف به اكثر من شيت اريد ترحيل جميع البيانات للمستأجر المتأخر الي شيت اخر اسمه التأخير

برنامج ايجار.xlsm

رابط هذا التعليق
شارك

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

جرب المرفق

Sub MUTAKHEEN_ALL()
Dim FS As Worksheet, TS As Worksheet
Dim ER, FSN, FR, TR
Set TS = Sheets("ÊÃÎíÑ")
TR = 6
For FSN = 1 To Sheets.Count
Set FS = Sheets(FSN)
If FS.Name = TS.Name Then GoTo 9
With FS
For FR = 5 To 999
If .Cells(FR, 14) < 0 Then
For FC = 1 To 18
TS.Cells(TR, FC) = .Cells(FR, FC)
Next FC
TS.Cells(TR, 19) = .Name
TR = TR + 1
End If
Next FR
End With
9 Next FSN
End Sub

 

برنامج ايجار.xlsm

  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

السلام عليكم 

استاذ احمد جزاك الله خيرا علي الكود

ولكن هل بالامكان ان يكون كل شيت في قائمه لحاله

هل ممكن جعل الترحيل يقوم بفصل كل بيانات خاصه بشيت لوحدة 

وليس قائمه متصله

رابط هذا التعليق
شارك

السلام عليكم

بعد اذن استاذنا الحبيب احمد زمان

هذا تعديل بسيط على الكود

Sub MUTAKHEEN_ALL()
Dim FS As Worksheet, TS As Worksheet
Dim ER, FSN, FR, TR, A, Rw
Set App = WorksheetFunction
Set TS = Sheets("تأخير")
TS.Range("A6:S500").Clear
TR = 6
For FSN = 1 To Sheets.Count
Set FS = Sheets(FSN)
If FS.Name = TS.Name Then GoTo 9
With FS
On Local Error Resume Next
A = App.Match(.Name, TS.Range("J:J"), 0)
If Err <> 0 Then
If App.CountIf(.Range("N:N"), "<0") = 0 Then GoTo 9
  Rw = TS.Cells(TS.Rows.Count, "J").End(xlUp).Row + 1
  TS.Rows(2).Copy TS.Range("A" & Rw)
  TS.Range("A3:Q5").Copy
  TS.Range("A" & Rw + 1).PasteSpecial xlPasteFormats
  TS.Range("A" & Rw + 1).PasteSpecial xlPasteValues
  TS.Range("J" & Rw + 1).Value = .Name
  Err.Clear
End If
TR = App.Match(.Name, TS.Range("J:J"), 0) + 3
For FR = 5 To 999
If .Cells(FR, 14) < 0 Then
For FC = 1 To 17
If Not IsNull(TS.Cells(TR, FC).Borders.Value) Then TS.Cells(TR, FC).Borders.Weight = xlThin
TS.Cells(TR, FC) = .Cells(FR, FC)
Next FC
TS.Cells(TR, 19) = .Name
TR = TR + 1
End If
Next FR
End With
9 Next FSN
Set TS = Nothing: Set FS = Nothing: Set App = Nothing
End Sub

 

  • Like 1
  • Thanks 2
رابط هذا التعليق
شارك

شكرا استاذنا العزيز

جاري التجربه

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

جزاك الله خير

الكود هو المطلوب تمام

ولكن بقي جزئ بسيط

في كل مرة سوف يتغير حجم الصفحه المححدوة للطباعه هل ممكن جعل الكود يقوم بقراءة البياتات المرحله فقط داخل الطباعه

رابط هذا التعليق
شارك

و عليكم السلام ورحمة الله وبركاته
اتشرف بمرورك و تعديلك
في اي وقت 

نحن نتعلم منكم

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

 

اخي الكريم

من وجهة نظري

الافضل استخدام التصفية التلقائية

حيث تم وضع اسم الصفحة جوار الجدول

استخدم على هذا العمود التصفية التلقائة بحيث تختار من التصفية المبنى الذي تريده او الكل

*************************

و لقد قام اخي الفاضل العيدروس بتنفيذ طلبك

 

وهكذا كل الحلول لديك

 

  • Like 1
رابط هذا التعليق
شارك

  • أفضل إجابة

كما اشار استاذنا الحبيب احمد زمان

بإمكانك استخدام التصفية 

او في حالة ملفك بشكلة الحالي وعدد الاسطر

بالامكان استخدام هذا التعديل

Sub MUTAKHEEN_ALL()
Dim FS As Worksheet, TS As Worksheet
Dim ER, FSN, FR, TR, A, Rw
Dim Rn As Range
Dim Rng As Range
Set App = WorksheetFunction
Set TS = Sheets("تأخير")
TS.Range("A6:S500").Clear
TR = 6
For FSN = 1 To Sheets.Count
Set FS = Sheets(FSN)
If FS.Name = TS.Name Then GoTo 9
With FS
On Local Error Resume Next
A = App.Match(.Name, TS.Range("J:J"), 0)
If Err <> 0 Then
If App.CountIf(.Range("N:N"), "<0") = 0 Then GoTo 9
  Rw = TS.Cells(TS.Rows.Count, "J").End(xlUp).Row + 1
  TS.Rows(2).Copy TS.Range("A" & Rw)
  TS.Range("A3:Q5").Copy
  TS.Range("A" & Rw + 1).PasteSpecial xlPasteFormats
  TS.Range("A" & Rw + 1).PasteSpecial xlPasteValues
  TS.Range("J" & Rw + 1).Value = .Name
  Err.Clear
End If
TR = App.Match(.Name, TS.Range("J:J"), 0) + 3
For FR = 5 To 999
If .Cells(FR, 14) < 0 Then
For FC = 1 To 17
If Not IsNull(TS.Cells(TR, FC).Borders.Value) Then TS.Cells(TR, FC).Borders.Weight = xlThin
TS.Cells(TR, FC) = .Cells(FR, FC)
Next FC
TS.Cells(TR, 19) = .Name
TR = TR + 1
End If
Next FR
Set Rn = TS.Range("B" & Rw + 1 & ":Q" & TR - 1)
If Rng Is Nothing Then
   Set Rng = TS.Range("B3:Q" & TR - 1)
Else
   Set Rng = Union(Rng, Rn)
End If
End With
9 Next FSN
If Not Rng Is Nothing Then
With TS.PageSetup
     .PrintArea = Rng.Address
     .CenterHorizontally = True
     .CenterVertically = False
     .Orientation = xlLandscape
     TS.PrintPreview
End With
End If
Set TS = Nothing: Set FS = Nothing: Set App = Nothing
Set Rn = Nothing: Set Rng = Nothing
End Sub


 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

الله يجزاكم الخير جميعا

شكرا استاذ احمد

شكرا استاذ العيدروس

استاذ عيدروس

جعل نطاق الطباعة لكامل البيانات في نطاق واحد بدلا من كل نطاق لحاله

  • 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