اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

السلام عليكم ورحمة الله وبركاته الإخوة الأعزاء

لدي قاعدة معطيات كبيرة تتضمن جميع الطلبة (تزيد عن 2600) تتضمن ثلاث فئات: عربي - فرنسي - مزدوج

أريد عندما تصلني لائحة مختلطة من إحدى المؤسسات أن أقارنها مع قاعدة المعطيات وأقوم بترحيل الطلاب عربي إلى ورقة خاصة بالعربي والطلاب فرنسي إلى ورقة خاصة بالفرنسي والمزدوج كذلك

علما أن المقارنة يمكن أن تتم بالرقم أو الاسم

أريد كود برمجي VBA للترحيل

مشكورين مسبقا 

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

 

NOUVEAU.xlsm

  • أفضل إجابة
قام بنشر
Sub Test()
    Dim a, x, e, v, wsData As Worksheet, wsExisting As Worksheet, wsA As Worksheet, wsF As Worksheet, wsM As Worksheet, sh As Worksheet, i As Long, ii As Long, k1 As Long, k2 As Long, k3 As Long, n As Long
    Application.ScreenUpdating = False
        Set wsData = ThisWorkbook.Worksheets("Data")
        Set wsExisting = ThisWorkbook.Worksheets("Feuil1")
        Set wsA = ThisWorkbook.Worksheets("ARABE")
        Set wsF = ThisWorkbook.Worksheets("FRANCAIS")
        Set wsM = ThisWorkbook.Worksheets("MIXTE")
        a = wsData.Range("A2:H" & wsData.Cells(Rows.Count, 1).End(xlUp).Row).Value
        ReDim b1(1 To UBound(a, 1), 1 To UBound(a, 2) - 1)
        ReDim b2(1 To UBound(a, 1), 1 To UBound(a, 2) - 1)
        ReDim b3(1 To UBound(a, 1), 1 To UBound(a, 2) - 1)
        For i = LBound(a, 1) To UBound(a, 1)
            x = Application.Match(a(i, 1), wsExisting.Columns(1), 0)
            If Not IsError(x) Then GoTo NXT
            If a(i, 8) = "ARABE" Then
                k1 = k1 + 1
                For ii = 1 To 7
                    b1(k1, ii) = a(i, ii)
                Next ii
            ElseIf a(i, 8) = "FRANCAIS" Then
                k2 = k2 + 1
                For ii = 1 To 7
                    b2(k2, ii) = a(i, ii)
                Next ii
            ElseIf a(i, 8) = "MIXTE" Then
                k3 = k3 + 1
                For ii = 1 To 7
                    b3(k3, ii) = a(i, ii)
                Next ii
            End If
NXT:
        Next i
        For Each e In Array(1, 2, 3)
            If e = 1 Then
                Set sh = wsA: n = k1: v = b1
            ElseIf e = 2 Then
                Set sh = wsF: n = k2: v = b2
            ElseIf e = 3 Then
                Set sh = wsM: n = k3: v = b3
            End If
            If n > 0 Then
                sh.Range("A1").CurrentRegion.ClearContents
                sh.Range("A1").Resize(, 7).Value = wsData.Range("A1").Resize(, 7).Value
                sh.Range("A2").Resize(UBound(v, 1), UBound(v, 2)).Value = v
            End If
        Next e
    Application.ScreenUpdating = True
End Sub

 

  • Like 3
  • Thanks 1
قام بنشر

بداية حفظكم الله ورعاكم أخي الفاضل

نعم أخي ARABE 

                     FRANCAIS

                     MIXTE

هي الأوراق التي أريد ترحيل البيانات الموجودة في الورقة Feuil1 إليها بعد مطابقتها بقاعدة المعطيات DATA

للتوضيح أكثر أخي: 

لا أريد ترحيل البيانات الموجودة في DATA

إنما الموجودة في Feuil1 المفروض أن أتوصل بها 

مع خالص تقديري

قام بنشر

تقصد ان الورقة Feuil1

بها البيانات التي سترحل الي الاوراق الثلاثة بعد مقارنتها بالورقة  data

والبيانات التي سترحل هي الييانات الفير موجودة في ورقة data

اذا كان هذا صحيح فكيف اميز البيانات التي ستنقل ( عربى فرنسي مختلط) عن بعض في الورقة Feuil1

 

قام بنشر

اخي المشرف المحترم

كيف تم وضع علامة انه تم ايجابة المطوب من العضو والكود المقصود لا يؤدي الغرض

وهذا ليس اول مره كثير من الحلول التي تم وضع علامة الحل لا تؤدي المطلوب

ارجو مراعات الدقة حتي لا نفوت فرصة حصول العضو علي الحل المطلوب

قام بنشر
Sub Test()
    Dim x, ws As Worksheet, wsData As Worksheet, wsSource As Worksheet, wsA As Worksheet, wsF As Worksheet, wsM As Worksheet, r As Long, lr As Long
    Application.ScreenUpdating = False
        Set wsData = ThisWorkbook.Worksheets("Data")
        Set wsSource = ThisWorkbook.Worksheets("Feuil1")
        Set wsA = ThisWorkbook.Worksheets("ARABE")
        Set wsF = ThisWorkbook.Worksheets("FRANCAIS")
        Set wsM = ThisWorkbook.Worksheets("MIXTE")
        For Each ws In ThisWorkbook.Worksheets
            If ws Is wsA Or ws Is wsF Or ws Is wsM Then
                ws.Cells.ClearContents
                ws.Range("A1").Resize(, 7).Value = wsData.Range("A1").Resize(, 7).Value
            End If
        Next ws
        For r = 2 To wsSource.Cells(Rows.Count, 1).End(xlUp).Row
            x = Application.Match(wsSource.Cells(r, 1).Value, wsData.Columns(1), 0)
            If Not IsError(x) Then
                With ThisWorkbook.Worksheets(CStr(wsData.Cells(x, 8).Value))
                    lr = .Cells(Rows.Count, 1).End(xlUp).Row + 1
                    .Range("A" & lr).Resize(, 7).Value = wsSource.Range("A" & r).Resize(, 7).Value
                End With
            End If
        Next r
    Application.ScreenUpdating = True
End Sub

 

  • Like 1
قام بنشر

اخي lionheart

انا لا اقلل من شأنك ولكن اذا كان يؤدي المطلوب 

فلماذا قام العضو بالر علي استفسارتى

وانك وان لم اجرب الكود

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

 

  • Like 1
قام بنشر

No worry my brother

I thought the OP selects the answer and not the moderator (How can I know such things?)

Sometimes the members take more than a solution so they continue to discuss

Ramadan Karim

  • Like 1
قام بنشر

اخي 

لقد قمت بتجربة الاكواد

اولا الكود الثاني غير الكود الاول تماما

الاول يرحل شيت data

وهذا غبر طلب العضو

الكود الثاني برحل شيت Feuil1

فلماذا المغالطة وتتأنيبي وانا سليم القول

قام بنشر

كما فهمت الموضوع

Sub Test()
    Range("H2").Formula = "=VLOOKUP($A$2:$A$13,data!$A$1:$H$540,8,0)"
    Range("H2").AutoFill Destination:=Range("H2:H" & Cells(Rows.Count, 1).End(xlUp).Row)
    a = Sheets("Feuil1").Cells(1).CurrentRegion
    For i = 2 To UBound(a)
        With Sheets(a(i, 8))
            x = .Cells(Rows.Count, 1).End(xlUp).Row + 1
            For ii = 1 To UBound(a, 2)
                .Cells(x, ii) = a(i, ii)
            Next
        End With
    Next
    Range("H:H").ClearContents
End Sub

 

  • Like 2

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