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

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

قام بنشر (معدل)

اخي الكريم - كما تلاحظ انه يسبق   (2)  كود لايجاد اخر صف به بيانات وبالتالى 2 يعبر عن مقدار الازاحة بالنسبه للصفوف  

  -- مثلاً  اخر  صف به بيانات  C5  اذاً بإزاحة 2 صف بما في ذلك C5    ينتج    C6     - ولكن بإزاحة 7 بما في ذلك C5  ينتج    C11  ومن ثم هو اوا صف فارغ ترحل اليه البيانات 

 - وهى اشبه بمعادله ايجاد اخر صف به بيانات + 1  ( اول صف فارغ )  او اكثر من واحد حسب الحاجه  ... ولكن كتبت بهذه الطريقة لانه لا يمكن كتابة + 7   ثم استخدام Resize 

تم تعديل بواسطه خالد الرشيدى
قام بنشر

الاستاذ المحترم خالد الرشيدي

اضافه الرقم 7 كما تفضلت سليمه

ولكن ليه اخترت عمود ال C

ثانيا عمود ال C  فيه خلايا مدمجه ...  فكيت الدمج فاصبحت C10

وشغلت الكود سليمه بالرغم من وجود نفس الرقم 7  ... سامحني مش فاهمها جزاك الله خيرا

قام بنشر
    Range("A11:DW11").AutoFill Destination:=Range("A11:DW" & Range("O1").Value + 10), Type:=xlFillDefault

هذا السطر يعتمد في النسخ على الخليه O1   .. هل يمكن ان نجعل النسخ لايعتمد على هذه الخليه ويعتمد على فكره اخرى ..  كرما منكم

قام بنشر (معدل)

السلام عليكم

اخي ناصر - الامر بسيط -- دعنا نفنط الكود من البدايه 

SERCH.Cells(Rows.Count, 2).End(xlUp)

هذا الجزء من الكود - معناه بدلاله العمود 2 ( B )   بدءاً من اخر صف فى الاكسيل وصعوداً الى اعلى اوجد اخر صف به بيانات - فى الملف سيكون الناتج B5  -  ولكنا نريد ان يكون بدايه النسخ من B11  وبالتالى جاءت (7)  - ووظيفتها ازاحة خليه بداية النسخ من B5   الى B11 ( بما في ذلك B5 ) لاحظ           B5 - B6 - B7 - B8 - B9 - B10 - B11      عدد القيم تجدها 7 وهو الرقم الذي استخدمته -  

 

أما ---

Range("A11:DW11").AutoFill Destination:=Range("A11:DW" & Range("O1").Value + 10), Type:=xlFillDefault

هذا الكود - وظيفتة AutoFill  - او كما نسميها Fill Handel  - سحب المعادلات والقيم لاسفل --   الجزء الاول من الكود حدد اي نطاق نريد سحبه لاسفل - 

Range("A11:DW11").AutoFill

الجزء الثاني يمثل مقدار الازاحة لاسفل المطلوبه 

Destination:=Range("A11:DW"

لاحظ هنا انه لم يحدد رقم الصف المراد الازاحة اليه -   ...Dw- وانما تم تحديده من خلال قيمة الخلية O1   + 10  -   مثلاً قيمة الخليه O1   = 10    اذاً سيكون النطاق بهذا الشكل 

Destination:=Range("A11:DW20")

ويتم السحب حتى الصف 20  - وبالتاكيد يمكن التغيير في ذلك حسب الحاجه والطرق والحالات كثيرة - كأن تستخدم Resize مثلاً هكذا 

Range("A11:DW11").AutoFill Range("A11:DW11").Resize(14)

 

اتمني ان اكون وفقت فى الطرح -- يرجي تحديد الموضوع كمجاب

تقبل خالص تحياتى 

تم تعديل بواسطه خالد الرشيدى
  • Like 1
قام بنشر

اولا ...  جزاك الله خيرا استاذ خالد الرشيدي

وبعد :

الجزء الاول من الاجابه الخاص بالرقم 7 لازاحه الصفوف

قف على الخليه B5 وفك الدمج 

ستجدها تحولت الى B10 ومع اننا وضعنا الرقم 7 ستاتي النتائج سليمه ... كيف ؟

مش المطلوب ازاحه واحده من 10 الى 11  ... ؟

====

ثانيا الجزئيه الخاصه بالنسخ عدد الصفوف التي يتم نسخها مطاط يعني يتغير في اغلب الاوقات ولذلك بنأتي بمعادله في الخليه O1 لتاتي بالعدد .... هل يمكن ان يتم النسخ على المدى الموجود فعليا

ام ان فكرتي جانبها الصواب

قام بنشر (معدل)

اخى ناصر 

بفك الدمج الموجود بالخليه B5  - تصبح B5  ايضاً وليس B10    - ( غير الرقم الى 7 - ثم فك الدمج - اذهب الى الخليه B10    - ضع اى قيمة - ثم نفذ الكود ولاحظ النتائج ) - ستجد صف بداية النسخ 16 -- 

- بالنسبه للسحب - لم افهم مقصد حضرتك تماماً - ارفق نموزج مشروح به المطلوب - 

تم تعديل بواسطه خالد الرشيدى
  • أفضل إجابة
قام بنشر

وصلت الفكره .. تمام التمام ربنا يجزيك كل خير ويبارك فيك استاذ خالد الرشيدي

4 ساعات مضت, خالد الرشيدى said:

يرجي تحديد الموضوع كمجاب

كيف ؟

  • Like 1
قام بنشر (معدل)

و جزاك خيراً اخي الحبيب 

اقصي يمين كل اجابه وبجانب الاسم - تجد علامه صح - عند المشاركه التى تجد بها طلبك - اضغط علي تلك العلامه - وبالتالى يظهر الموضوع كمجاب 

كل عام وانتم بخير

تم تعديل بواسطه خالد الرشيدى
قام بنشر
'هذا الكود للمحترم النابغه ياسر خليل
'الهدف من الكود هو استدعاء بشرط
'تم هذا الكود في 15/2/2017
    Sub استدعاء_كنترول_جميع()
    Dim arr     As Variant
    Dim temp    As Variant
    Dim cr      As Variant
    Dim lr      As Long
    Dim i       As Long
    Dim j       As Long
    Dim c       As Long
    Dim ws As Worksheet
    Dim sh As Worksheet
    Set ws = Sheets("رصد الترم الثانى")
    Set sh = Sheets("كنترول شيت")
    '= = = = = = = = = = = =
    ' شيت الهدف والمدى المطلوب مسحه
    sh.Range("A12:DW1000").ClearContents
    
        ' اسم ورقة المصدر
    lr = ws.Cells(Rows.Count, 1).End(xlUp).Row
    
   'متغير اسم ورقة المصدرومدى البيانات بها
    arr = ws.Range("A7:GG" & lr).Value
    
    ReDim temp(1 To UBound(arr, 1), 1 To UBound(arr, 2))
    
'ارقام الاعمده المطلوب نقلها
    cr = Array(2, 3, 111, 111, 111, 131, 132, 133, 134, 135, 136, 125, 126, 127, 111, 111, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 101, 102)
    j = 1

    For i = LBound(arr, 1) To UBound(arr, 1)
    

       ' If arr(i, 101) Like "ناجح" Then
       If arr(i, 101) Like "*" & "نا*" & "*" _
       Or arr(i, 101) Like "*" & "له* دور*" & "*" Then

            temp(j, 1) = j
            For c = LBound(cr) To UBound(cr)
                temp(j, c + 2) = arr(i, cr(c))
            Next c
            j = j + 1
        End If
    Next i
    
    ' اسم شيت الهدف
    With sh
    
        .Range("A11").Resize(j - 1, UBound(temp, 1)).Value = temp
        
        'سطر لمسح التسطير
        .Range("A11:DW" & Rows.Count).Borders.Value = 0
        
        'سطر لاضافة التسطير
        .Range("A11:DW" & .Cells(Rows.Count, 2).End(xlUp).Row).Borders.Weight = xlMedium


    End With
End Sub

بالرغم من ان سطر المسح في الكود محدد الا انه يمسح الصفحه

كيف يمكن ان يكون محدد مدى المسح ؟

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

قام بنشر
1 ساعه مضت, ناصر سعيد said:

sh.Range("A12:DW1000").ClearContents

مثال هذا هو المدى المطلوب مسحه فقط ... ولكن في الكود الموجود باعلا يمسح كل مافي الصفحه

 

يتم المسح ابتداء من الصف 11 كل الصفحه 

قام بنشر
6 ساعات مضت, ناصر سعيد said:
 

sh.Range("A12:DW1000").ClearContents

هذا هو المدى المطلوب مسحه فقط ... ولا ادري لماذا يتم مسح كل الصفحه مع وجود هذه الجمله البرمجيه

قام بنشر

السلام عليكم

اخى ناصر هناك جزئيتين لابد من الانتباه اليهم وهم :

1- عند نسخ مصفوفة النتائج الى النطاق يتم استبدال القيم الموجوده به بالنتائج الجديده حتى وان لم تضع كود مسح  -- مما يعنى لو ان كود المسح حتى الصف العاشر - ومصفوفة النتائج بها عشرين صف - عندها ستجد النتائج موجوده حتى الصف العشرين 

2- ان حضرتك حددت كود المسح من   "A12:DW1000"  في حين ان حضرتك حددت صف بدايه نسخ مصفوفة النتائج بدءاً من الصف 11 

        .Range("A11").Resize(j - 1, UBound(temp, 1)).Value = temp

ومن ثم سيتم استبدال نتائج الصف 11 بقيم نتائج اول صف بمصفوفة النتائج 

تقبل مرورى وتحياتى

 

  • Like 1
قام بنشر

حددت كود المسح ابتداء من الخليه A12 

حتى استطيع ان انسخ الخلايا الموجوده في الصف 11  ...

هل يوجد حل استطيع به تحديد الجزء المراد مسحه فقط اخي الكريم استاذ خالد الرشيدي ؟

قام بنشر

السلام عليكم

اخى ناصر زكرت سابقاً ان الكود المستخدم بالفعل يقوم بمسح النطاق المحدد وفقط -- واشرت ان مسح البيانات الموجودة واستبدالها بقيم جديده لا يتوقف فقط على كود المسح ولكن ايضاًُ يتوقف على كود البحث .... مثلاً :

تم مسح النطاق A1:A10  من خلال كود المسح ثم تم البحث واستخرج مصفوفة نتائج مكونه من 20 سطر وبالتالى سيتم وضع النتائج بالنطاق A1 : A20   بالرغم اننا مسحنا حتى A10 

-- قم بادراج نموزج مبسط موضح به المطلوب  ان كانت الاجابه السابقة غير واضحه

قام بنشر

يارب أسألك بحق اسمك الاعظم الذي اذا دعيت به  اجبت

ان تمد اخي الاستاذ المحترم خالد الرشيدي الصحه والعافيه  .. انك سميع مجيب الدعاء

وبعد هذا ملف وبه الكود المطلوب عند الضغط على الزر يتم الاستدعاء الى العمود DJ

وهذا هو المدى المحدد

وان لاتتاثر الاعمده بالمسح بعد العمود DJ

والمرفق سيوضح اكثر

=================

مدى المسح.rar

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