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

محي الدين ابو البشر

الخبراء
  • Posts

    877
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    6

مشاركات المكتوبه بواسطه محي الدين ابو البشر

  1.  تفضل

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim a
     Dim i&, r&
     Dim ws As Worksheet, sh As Worksheet
     Set ws = Sheet1: Set sh = Sheet2
     With ws
    a = .Range(.Range("A10:G10"), .Range("A10:G10").End(xlDown))
     End With
        If Target.Address = "$F$8" Then
     r = Sheet1.Cells.Find(Target, , , 1).Column
           With CreateObject("scripting.dictionary")
            For i = 1 To UBound(a)
            If a(i, 1) = sh.Cells(8, 5) Then
                    If Not .exists(a(i, 1)) Then
                    .Add a(i, 1), a(i, r)
                    Else
                    .Item(a(i, 1)) = .Item(a(i, 1)) & "|" & a(i, r)
                     End If: End If
                     Next
                     a = Split(.items()(0), "|")
                    
                 With sh.Cells(10, 6)
           .Resize(Rows.Count - .Row + 1).ClearContents
           .Resize(UBound(a) + 1) = Application.Transpose(a)
       End
            End With
            End With
            End If
    End Sub

     

    رزان2.xlsm

    • Like 5
  2. تفضل أخي الكريم

    ربما؟

    Sub test2()
    Dim ws As Worksheet: Set ws = Sheets("التقرير")
    Dim sh As Worksheet: Set sh = Sheets("كشف الطباعة")
    Dim a, b, w
    Dim i&, c&, ii&, kk&
    Dim r As Range
    Dim f As String
    a = ws.Range(ws.Cells(6, 1), ws.Cells(6, 4).End(xlDown))
    b = ws.Range(ws.Cells(6, 6), ws.Cells(6, 7).End(xlDown))
    With CreateObject("scripting.dictionary")
            For i = 1 To UBound(a)
                    If Not .exists(a(i, 4)) Then
                    .Add a(i, 4), Array(a(i, 1), a(i, 2), a(i, 3))
                    Else
                    w = Application.Transpose(.Item(a(i, 4)))
                    ReDim Preserve w(1 To UBound(w), 1 To UBound(w, 2) + 1)
                    w = Application.Transpose(w)
                    For ii = 1 To 3
                    w(UBound(w), ii) = a(i, ii)
                    Next
                    .Item(a(i, 4)) = w
                    End If
            Next
        Set r = sh.Columns("a").Find("م", , , 1)
        If Not r Is Nothing Then
         f = r.Address: i = 1
            Do
                w = .Item(.Keys()(kk))
    1       [r].Offset(1).Resize(25, 3).ClearContents
             [r].Offset(1).Resize(b(i, 2), 3) = Application.IfError(Application.Index(w, _
                Evaluate("Row(" & 1 + c & ":" & c + b(i, 2) & ")"), [{1, 2,3}]), "")
                If i = UBound(b) Then Exit Sub
                If b(i, 1) = b(i + 1, 1) Then
                     Set r = sh.Columns("a").FindNext(r)
                     c = c + b(i, 2): i = i + 1
                     GoTo 1
                     Else: GoTo 2
                     End If
    2            kk = kk + 1: i = i + 1: c = 0
                 Set r = sh.Columns("a").FindNext(r)
            Loop Until r.Address = f
        End If
    End With
    End Sub

     

    ترحيل أسماء.xlsm

    • Like 3
  3. وعليكم السلام والرحمة

    كود:

    Sub test()
    Dim a
    Dim x&, i&, c&
    Dim r As Range
    Dim firstaddress As String
    With Sheets("التقرير")
    a = .Range(.Cells(6, 1), .Cells(6, 3).End(xlDown))
    x = .Cells(2, 6)
    End With
    With Sheets("كشف الطباعة")
        Set r = .Columns("a").Find("م", , , 1)
        If Not r Is Nothing Then
         firstaddress = r.Address
            Do
               [r].Offset(1).Resize(x, UBound(a, 2)) = Application.IfError(Application.Index(a, _
                                                                    Evaluate("Row(" & c + 1 & ":" & x + c & ")"), [{1, 2,3}]), "")
                Set r = .Columns("a").FindNext(r)
                c = c + x
            Loop Until r.Address = firstaddress
        End If
    End With
    End Sub

     

    ترحيل الاسماء.xlsm

    • Like 3
  4. عليكم السلام ورحمة الله وبركاته

    تفضل أخي الكريم

    Sub test()
    With Sheets("يومية الحضور والإنصراف").Range("B4:C" & Sheets("يومية الحضور والإنصراف").Cells(Rows.Count, 1).End(xlUp).Row)
    .Formula = "=IFERROR(VLOOKUP($A:$A,Table9,COLUMN(),0),"""")"
    .Value = .Value
    End With
    With Sheets("رصيد الأجازات").Range("B3:D" & Sheets("رصيد الأجازات").Cells(Rows.Count, 2).End(xlUp).Row)
    .Formula = "=IFERROR(VLOOKUP($A:$A,Table9,COLUMN(),0),"""")"
    .Offset(, 3).Resize(, 1).Formula = "=IFERROR(IF(DATEDIF([@[تاريخ التعيين]],$D$1,""D"")/30>3.1,""يستحق"",""""),"""")"
    .Offset(, 5).Resize(, 1).Formula = "=IF([@[معادلة الرصيد]]=""يستحق"",$O$1+[@[معالجة الرصيد]],0)"
    .Offset(, 6).Resize(, 1).Formula = "=[@[الرصيد المرحل]]+[@[رصيد 2023]]"
    .Offset(, 7).Resize(, 1).Formula = "=(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A3,'يومية الحضور والإنصراف'!$H:$H,""أجازة"")+(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A3,'يومية الحضور والإنصراف'!$H:$H,""أجازة مجمعة"")))"
    .Offset(, 8).Resize(, 1).Formula = "=(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A4,'يومية الحضور والإنصراف'!$H:$H,""أجازة عارضة""))"
    .Offset(, 9).Resize(, 1).Formula = "=IF(E3=""يستحق"",$N$1-[@[ عارضة]],0)"
     .Offset(, 10).Resize(, 1).Formula = "=(([@[إجمالي الرصيد المستحق]]-([@[ سنوي]]+[@[ عارضة]]+[@[تسوية نقدي]])))-[@[باقي رصيد العارضة]]"
    .Offset(, 11).Resize(, 1).Formula = "=([@[باقي رصيد السنوي ]]+[@[باقي رصيد العارضة]])"
     With .Resize(, 12)
     .Value = .Value
     End With
    End With
    End Sub
    
    

     

    • Like 6
  5. يدوياً؟

    قم باختيار الجدول ( ليس من الخلايا وإنما كامل الأسطر) بمعني اضغط على الرقم 1 بجانب الخلية A1 نزولا حتى آخر الجدول) ثم CTR+ Copy

     ثم right click على أول خلية تريد النسخ فيها وقم باختيار (Insert Copied cells)

    ويمكن عمل ذلك بماكرو إذا أحببت

    • Like 1
  6. جرب هذا

    Sub Oval1_Click()
    Dim xDir As String
    Dim xFile As String
    Dim xRow As Long
     With Application.FileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = True
            .Title = "Please select the files"
            .Filters.Clear
            .Filters.Add "All supported files", "*.*"
    If .Show = -1 Then
        xDir = .SelectedItems(1)
        xFile = Dir(xDir & Application.PathSeparator & "*.docx")
        Do Until xFile = ""
            xRow = 0
            On Error Resume Next
            xRow = Application.Match(xFile, Range("A:A"), 0)
            If xRow > 0 Then
                Name xDir & Application.PathSeparator & xFile As _
                xDir & Application.PathSeparator & Cells(xRow, "B").Value
            End If
            xFile = Dir
        Loop
    End If
    End With
    End Sub

     

    • Like 1
  7. Option Explicit
    
    Sub Test()
        Dim a, b, x, z
        Dim i&, ii&, iii&, mm&
        Dim nmsht, dt, bk
        Dim p As Long
        Dim ar As Long
        Dim tmp, class, br, mat
        Const c As Integer = 10
        Set nmsht = Sheets("name")
        Set dt = Sheets("data")
        Set bk = Sheets("Book")
        b = dt.Range(dt.Range("B4"), dt.Range("B4").End(xlDown)).Resize(, 3)
        p = 4:
        For i = 1 To UBound(b)
            tmp = Split(b(i, 1))
            class = IIf(UBound(tmp) < 3, tmp(1), (tmp(0) & " " & tmp(1)) & " " & tmp(2))
            br = tmp(UBound(tmp)): mat = b(i, 3)
            With nmsht.Range("b2:AX400")
                x = .Find(b(i, 1), , , 1).Address
                a = .Range(x).Offset(3, -1).Resize(.Range(nmsht.Range(x).Offset(3), nmsht.Range(x).Offset(3).End(xlDown)).Count, 2).Offset(-2, -1)
            End With
            ar = 1
            With Sheets("book2")
                For ii = 1 To UBound(a) Step c
                    x = Split(.[E:E].Find("-" & p & "-", , , 1).Address, "$")(2)
                    .Cells(x - 6 - 39, 4) = Split(.Cells(x - 6 - 39, 4))(0) & " " & class
                    .Cells(x - 6 - 39, 9) = Split(.Cells(x - 6 - 39, 9))(0) & " " & br
                     z = Application.IfError(Application.Index(a, Evaluate("(Row(" & ar & ":" & ar + c - 1 & "))"), Array(1, 2)), "")
                     For iii = 1 To UBound(z)
                    .Cells(x - 1 - 39 + mm, 1) = z(iii, 1)
                    .Cells(x - 1 - 39 + mm, 2) = z(iii, 2)
                    mm = mm + 4
                    Next
                    ar = ar + c
                    p = p + 2
                    mm = 0
                Next
            End With
        Next
    End Sub

    مرة أخرى (أرقام الصفحات يجب أن تمون دائما بالشكل (-12-) عدلت بعضها مثل (-12) أرجو تعديل الباقي)

    إذا كان رقم الصفحة 128- أو -128 سيعطي رسالة خطأ

    • Like 1
×
×
  • اضف...

Important Information