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

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

قام بنشر

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

كل عام وانتم بالخير بمناسبة الاسراء والمعراج

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

اريد إنشاء مجلدات لعدد من الموظفين

ا- يكون اسم المجلد رقم البطاقة واسم الموظف ولا يسمح بتكرار المجلد للموظف الواحد

2- ان يتم إنشاء مجلد باسم العقد سواء ثابت او مؤقت 

3- يتم ترحيل مجلد الموظف داخل مجلد العقد 

بمعنى اذا وجد الموظف العقد ثابت يتم إنشاء الفولدر داخل مجلد ثابت ومثله في المؤقت

واتمنى لكم سنة سعيدة باذن الله

عقود.xlsb

قام بنشر

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

جرب هل هدا ما تقصده 

Option Explicit
Sub CreateDossiers()
    Dim a As Variant, lastRow As Long, i As Long
    Dim folderPath As String, Dossier As String, ky As String
    Dim nCarte As String, nEmploy As String, tyCont As String
    Dim ScrWS As Worksheet: Set ScrWS = Sheets("ورقة1")
    
    lastRow = ScrWS.Cells(ScrWS.Rows.Count, "b").End(xlUp).Row
    a = ScrWS.Range("B2:D" & lastRow).Value
    
    folderPath = ThisWorkbook.Path & "\"
    If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
    
    For i = 1 To UBound(a, 1)
        nCarte = Trim(a(i, 1)): nEmploy = Trim(a(i, 2)): tyCont = Trim(a(i, 3))
        
        If nCarte <> "" And IsNumeric(nCarte) And nEmploy <> "" And tyCont <> "" Then
            Dossier = folderPath & tyCont & "\"
            If Dir(Dossier, vbDirectory) = "" Then MkDir Dossier
                ky = Dossier & nCarte & " - " & nEmploy & "\"
                If Dir(ky, vbDirectory) = "" Then MkDir ky
        End If
    Next i
    
    MsgBox "تم إنشاء المجلدات بنجاح", vbInformation
End Sub

 

 

عقود V1.xlsb

  • Like 1
قام بنشر
الان, محمد هشام. said:

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

جرب هل هدا ما تقصده 

Option Explicit
Sub CreateDossiers()
    Dim a As Variant, lastRow As Long, i As Long
    Dim folderPath As String, Dossier As String, ky As String
    Dim nCarte As String, nEmploy As String, tyCont As String
    Dim ScrWS As Worksheet: Set ScrWS = Sheets("ورقة1")
    
    lastRow = ScrWS.Cells(ScrWS.Rows.Count, "b").End(xlUp).Row
    a = ScrWS.Range("B2:D" & lastRow).Value
    
    folderPath = ThisWorkbook.Path & "\"
    If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath
    
    For i = 1 To UBound(a, 1)
        nCarte = Trim(a(i, 1)): nEmploy = Trim(a(i, 2)): tyCont = Trim(a(i, 3))
        
        If nCarte <> "" And IsNumeric(nCarte) And nEmploy <> "" And tyCont <> "" Then
            Dossier = folderPath & tyCont & "\"
            If Dir(Dossier, vbDirectory) = "" Then MkDir Dossier
                ky = Dossier & nCarte & " - " & nEmploy & "\"
                If Dir(ky, vbDirectory) = "" Then MkDir ky
        End If
    Next i
    
    MsgBox "تم إنشاء المجلدات بنجاح", vbInformation
End Sub

مرورك كريم ا. محمد

في البداية بارك الله فيك وفي مجهوداتك في مساعدتنا وذادك من علمه

الكود يعمل بشكل جيد ولي استفسار بخصوص عدم السماح بتكرار اسم المجلد لنفس الموظف 

ممكن اضافة عدم السماح بانشاء اكثر من مجلد للموظف 

وشكرا لحضرتك

 

عقود V1.xlsb 18.09 kB · 2 downloads

 

قام بنشر

 

منذ ساعه, 𝒜ℬ𝒪 𝒴𝒪𝒰𝒮ℰℱ said:

ممكن اضافة عدم السماح بانشاء اكثر من مجلد للموظف 

هدا ما يفعله الكود فعلا عند نطابق نفس اسم الموظف ونفس رقم البطاقة  لاكن أعتقد انه هناك عدة احتمالات واردة في مسألة إنشاء المجلدات يجب توضيحها 

Capture.PNG.851648e94704be12e4466469d999245a.PNG

لنفترض ان البيانات بهدا الشكل  ما هي المجلدات المفروض إنشائها 

ثايت = ؟

مؤقت = ؟

  • تمت الإجابة
قام بنشر (معدل)

  إدا كنت قد إستوعبت طلبك بشكل صحيح ربما هدا سيوفي بالغرض  

Capture.PNG.5a2468aa9aecdab478c327e6c2d167dd.PNG 

Option Explicit
Sub CreateDossiers()
    Dim a As Variant, lastRow As Long, i As Long, msg As String
    Dim Dossiers As String, Fld As String, Patch As String
    Dim nCarte As String, nEmploy As String, tyCont As String
    Dim tbl As Object, Fname As String, fCount As Integer
    Dim ScrWS As Worksheet: Set ScrWS = Sheets("ورقة1")
    
    Set tbl = CreateObject("Scripting.Dictionary")
    lastRow = ScrWS.Cells(ScrWS.Rows.Count, "B").End(xlUp).Row
    If lastRow < 2 Then Exit Sub

    a = ScrWS.Range("B2:D" & lastRow).Value
    Dossiers = ThisWorkbook.Path & "\"

    Fld = Dossiers & "عقد ثابت\"
    Patch = Dossiers & "عقد مؤقت\"
    If Dir(Dossiers, vbDirectory) = "" Then MkDir Dossiers
    If Dir(Fld, vbDirectory) = "" Then MkDir Fld
    If Dir(Patch, vbDirectory) = "" Then MkDir Patch
    
    For i = 1 To UBound(a, 1)
        If Trim(a(i, 3)) = "ثابت" Then
            tbl(Trim(a(i, 1)) & " - " & Trim(a(i, 2))) = "ثابت"
        End If
    Next i

    fCount = 0
    For i = 1 To UBound(a, 1)
        nCarte = Trim(a(i, 1)): nEmploy = Trim(a(i, 2)): tyCont = Trim(a(i, 3))
        
        If nCarte <> "" And IsNumeric(nCarte) And nEmploy <> "" And tyCont <> "" Then
            Fname = nCarte & " - " & nEmploy
            
            If tbl.Exists(Fname) Then
                If Dir(Fld & Fname, vbDirectory) = "" Then
                    MkDir Fld & Fname
                    fCount = fCount + 1
                End If
            Else
                If Dir(Patch & Fname, vbDirectory) = "" Then
                    MkDir Patch & Fname
                    fCount = fCount + 1
                End If
            End If
        End If
    Next i

    msg = IIf(fCount > 0, "تم إنشاء " & fCount & " من المجلدات بنجاح", "جميع المجلدات موجودة مسبقا")
    MsgBox msg, vbInformation
End Sub

 

 

عقود V2.xlsb

تم تعديل بواسطه محمد هشام.
  • 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