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

نجوم المشاركات

  1. شيبة المشعور

    شيبة المشعور

    03 عضو مميز


    • نقاط

      7

    • Posts

      219


  2. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      6

    • Posts

      6,503


  3. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

    المشرفين السابقين


    • نقاط

      6

    • Posts

      13,165


  4. يوسف أحمد

    يوسف أحمد

    المشرفين السابقين


    • نقاط

      5

    • Posts

      1,055


Popular Content

Showing content with the highest reputation on 05 فبر, 2015 in all areas

  1. و عليكم السلام و رحمة الله و بركاته اخي العزيز اسير الشروق تفضل هذا مثال نتيجة بحث من الانترنت و ليس من صنعي .. يفي بالغرض ان شاء الله ... طبعاً التظليل سيتم في حدث بعد التحديث لمربع البحث بالتوفيق SearchHighlight.zip
    2 points
  2. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته اقدم اليكم هذا العمل المحاسبى المتواضع وهو جدول حساب اعمار الديون او الذمم المدينه او العملاء اوالحسابات المدينه استناذا على طريقة مخصص الديون المشكوك فى تحصيلها اترككم مع العمل للتقييم وللاستفاده للجميع هذا العمل لوجه الله تعالى لاتنسونا بصالح دعاؤكم جدول اعمار الحسابات المدينه.rar
    1 point
  3. السلام عليكم ورحمة الله وبركاته كيف حالكم إخواني الكرام في المنتدى الغالي؟ لقيت نفسي نفسي (نفسي الأولى غير التانية ..) نفسي الأولى يعني أنا - وأعوذ بالله من كلمة أنا - ، ونفسي التانية يعني حاجة أتمنى أعملها .. المهم لقيت نفسي أعمل حاجة مختلفة .. بشكل مختلف .. بأسلوب مختلف يكون فيه عنصر التشويق والإثارة والبساطة مجتمعين في نفس الوقت. كتير مننا أول ما يسمع كلمة البرمجة والأكواد يتخض وكأن الموضوع مستحيل ...أبدا كل الحكاية إننا بنبدأ غلط مش بناخد الخطوات الصحيحة لتعلم البرمجة. لو عايز تتعلم البرمجة ونفسك بجد تبدأ تتمكن فيها خليك معايا ، هنقضيها رغي شوية وهزار شويتين ، وجد مش كتير ... ايه رأيكم؟ نبدأ على بركة الله .. أول حاجة بعد ما تنصب الأوفيس وتفتح الإكسيل تلاقي اللي انت عايزه مش موجود طيب نظهره إزاي ؟؟ ببساطة فيه زر أوفيس فوق شمال هتضغط عليه وتضغط Excel Options هتلاقي نافذة فيها خيار اسمه Show Developer tab in the Ribbon يعني إظهار التبويب ، وهتلاقي جنبه مربع تحط فيه علامة صح مبروك الخطوة الأولى واحد هيقولي عندك اقف أول خطوة فشلت فيها ..هقوله ربنا ما يحرمنا من الفشل لأن الفشل أول طريق النجاح .. هقولك لو ملقتش اللي بحكي عليه يبقا اصدار الأوفيس مختلف أنا شغال على 2007 ، وحضرتك على 2010 أو 2013 (بالنسبة ل 2003 والله ما أنا معبره كفاية عليه لحد كدا) ... بالنسبة لـ 2010 و 2013 بيكون من قائمة File ثم Options ثم من القايمة الشمال فيه Customize Ribbon وفي الناحية اليمين هتلاقي قائمة بالتبويبات وجنب كل تبويب علامة صح اللي يعجبك علم عليه صح واللي ميعجبكش ارميه في الزبالة... المهم هتلاقي التبويب اللي هيفتح لنا الباب لعالم البرمجة .. دا كان المفتاح للدخول نخش لتاني حاجة المفتاح عشان يفتح معاك لازم تحط عليه شوية زيت ، يعني لازم تضبط إعدادات الماكرو عشان الأكواد تشتغل معاك تمام من التبويب الجديد انقر على Macor Security هيفتح معاك نافذة بتختار منها آخر خيار Enable all macros وبتعلم علامة صح على الخيار اللي جنبه مربع Trust access to VBA الحمد لله خلصنا من النقطة الأولى والتانية ... ننتقل لنقطة جديدة : هيظهر التبويب في الآخر .. جمد قلبك واشرب ديو وافتح الباب لمحرر الأكواد اضغط على Visual Basic من التبويب المذكور أو لو بتحب تتعامل مع الكيبورد اضغط Alt + F11 كدا الباب الحمد لله فتح .. لو أول مرة تدخل على محرر الأكواد متتخضش واحدة واحدة هبندا نتعلم كل اللي موجود .. المهم محدش يستعجلني عشان أنا مستعجل النافذة دي اسمها نافذة المشروع Project window يعني الإكسيل بيتعامل مع المصنف إنه مشروع .. والمشروع مكون من 3 شيتات اللي بنسميهم أوراق العمل Sheet1 و Sheet2 و Sheet3 بس في 2013 الحمد لله بيكون الوضع الافتراضي شيت واحد بس (أصلي بتخنق من حتة 3 شيتات ع الفاضي بحس إن الملف كبير ع الفاضي وكل اللي يلزمني للعمل بشكل مبدئي هو شيت ولما أحب أضيف جديد مش هيكون أمر صعب) المهم مع أوراك العمل بنلاقي الكائن المسمى بالمصنف WorkBook ودا اللي بيحوي التعابين كلها أقصد الأكواد .. طيب محدش سألني ايه المنطقة الرمادي دي ومالها ضلمة ليه كدا؟ أنا أقولك عشان إنت تنورها .. اضغط دبل كليك على Sheet1 مثلا في نافذة المشروع هتلاقيها نورت والحمد لله استعداد لبداية الاحتفال بس فيه نقطة الأكواد لو اتكتبت هنا هتأثر على الورقة دي بس ... في الحتة اللي نورت الصق الكود اللي جاي ده وأفضل تكتبه بايدك عشان أنا شايف ايدك بتترعش وخايف .. قلت لك جمد قلبك الموضوع بسيط نبدأ بكود كدا سهل ولذيذ Sub Hello_Officena() MsgBox "Hello Officena!" End Sub أول كلمة Sub يعني ابدأ صب اللي عندك .. لا غلط .. معناها إجراء فرعي Subroutine يعني بينفذ مهمة محددة. وفي آخر الكود End Sub عشان القفلة (لو فاكرين شعبان عبد الرحيم بيقول ايه في الآخر بس خلاص دي القفلة بتاعته) هنا بقا دي القفلة بتاعت الإجراء الفرعي.. طيب ايه Hello_Officena دا اسم الإجراء ودا له قواعد أول حاجة مينفعش يبدأ برقم 77Hello_Officena ولا ينفع يكون فيه مسافة زي كدا Hello Officena بس ممكن لو حبينا بدل المسافة بحط Underscore اللي هي بتيجي بـ Shift + العلامة اللي على يمين الصفر اللي في الأرقام اللي فوق مش الأرقام اللي ف لوحة الأرقام .. وبردو فيه حاجات محرمة في اسم الإجراء زي علامة # أو $ أو % أو & أو % أو النقطة أو الفاصلة أو أو .. بقولكم ايه كفاية كلام عن اسم الإجراء .. لو كان فيه حاجة غلط في الاسم هيطلع لك رسالة خطأ تعرف إن فيه حاجة مش مظبوطة!! طيب السطر اللي في النص دا هو دا الكود .. الإجراء أو المهمة المراد تنفيذها .. بتبدأ بكلمة MsgBox ودي اختصار للكلمة Message Box أي صندوق الاسم ..... والله انا سرحت بس مش همسح اللي بكتبه خلي الكلام يكون تلقائي .. ودي بنكتب وراها الرسالة اللي عايزين نظهرها .. وطبعا فيه مسافة بعد الكلمة والكلام اللي هو الرسالة دا نص فنحطه بين أقواس تنصيص " " .. واحد برق لي عينه بيقولي بتتعمل إزاي دي قول لأقتلك .. هقوله حاضر يا باشا هقولك دي بتيجي إزاي .. اضغط على Shift وبعدين حرف الطاء بس خلاص .. طبعا أقواس التنصيص في أول النص وفي آخره مهو لازم القفلة. نجرب نشغل الكود إزاي .. فيه أكتر من طريقة يا إما تضغط على مثلث لونه أخضر فوق في شريط الأدوات الموجود في محرر الأكواد .. مش عاجبك شكل المثلث الأخضر خلاص روح لقائمة Run واضغط أول أمر .. لو انت تلميذ ذكي هتعرف الطريقة التالتة من التانية .. هسيبكم تقولوها إنتو ..مش عارفين !! طيب هقول أنا وخلاص اضغط على F5 من لوحة المفاتيح بس بشرط يكون مؤشر الماوس واقف في الكود.. لما نشغل الكود دا اللي هيظهر لي وبكدا أكون وصلتكم وفتحت لكم الباب .. لو عايزين نكمل قولوا كمل مش عايزين .. يبقا كفاية لحد كدا ويا كود ما يقربش منك حد .. ونعمل بالمثل الفلاحي اللي بيقول : ابعد عن الكود وادعي عليه! والسلام عليكم سبحانك اللهم وبحمدك .. نشهد أن لا إله إلا أنت ..نستغفرك ونتوب إليك كان معكم على الهواء مباشرة أخوكم أبو البراء من ملعب أوفيسنا .. إلى اللقاء مع مباراة جديدة وأهداف جديدة وشيقة دمتم بود ====================================== ====================================== السلام عليكم نرجوا وضع ردود الشكر والاعجاب على الرابط ادناه هنا ====================================== ======================================
    1 point
  4. السلام عليكم ورحمة الله تعالى وبركاته ما توصلت إليه والله ما هو فلاح او رشاد من نفسي والله هذا فضل الله ونعمته على سبحانه وتعالى له الحمد كما ينبغى لجلال وجهه ولعظيم سلطانه الحمد الله الذى هدانا لهذا وما كنا لنهتدى لولا ان هدانا الله اما بعد أولا كل الشكر والتقدير لمن حاول مساعدتى فى هذا الموضوع ولم يوفق او لم يستطع او لم يسعفه الوقت او لم يهده الله عزوجل لذلك فكل شئ عنده بمقدار ثانياً ☻☺♥أخص بالذكر وبالشكر الاستاذ يوسف yousef طبعا هو صاحب الفضل بعد رب العزة عزوجل فيما وصلت إليه فلقد يسر الله عزوجل له البحث عما عجزت عنه طوال الاسبوعين تقريبا وكما قال صلى الله عليه وسلم من يسر على مسلم طريق يلتمس به علم يسر الله له به طريقا الى الجنه فاللهم يسر لكل اساتذتى الكرام دون ذكر احد حتى لا ينسينى الشيطان اللهم اكرم كل من تعلمت على يديهم حرفا فى هذا المنتدى العظيم اللهم زدهم علما اللهم زدهم علما اللهم سهل ويسر لهم طرقات الى الجنان اللهم انفعهم بما علمتهم اللهم بارك لهم فى علمهم وعملهم الله قربهم اليك وبارك فى اعمارهم واجعل الله كل اعمالهم خالصة لوجهك الكريم اللهم امين امين... امين اهدانى الاستاذ سويف بارك الله فيه هذا المثال يمكن تحميل المثال الأصلى من هنا فى هذة المشاركه ولكن قمت بتطويره وارفقته اليكم عسى من يبحث او يريد مثل هذا النموذج بتلك الكيفيه كما اريدها انا ان يستفيد منه ان شاء الله عزوجل
    1 point
  5. استاذنا الجليل / ياسر خليل الف الف شكر على مساعدة حضرتك. انا اصلى كنت مغير كلمة المرور و كنت بحاول افتح الملف بكلمة المرور القديمة. معلش اصلى بشتغل فى الملف ده من بدرى. حضرتك دلوقتى نبهتنى لكلمة المرور الصحيحة الملف شغال تمام بفضل الله ثم حضرتك. اتمنى لحضرتك و لكل الاعضاء الافاضل جمعة مباركة. ارجوك تقبل فائق تحياتى و احترامى...
    1 point
  6. أنا جربت الملف ودخل عادي admin 123456 وبعدها دخل على Sheet2 مباشرة !!! حاول تحدد مشكلتك بشكل أدق
    1 point
  7. بارك الله فيك / العلامة عبد الله باقشير أولا وقبل كل شيء الحمد لله على سلامتك إن شاء الله ما أبعدك عنا غير الخير سعدت جدا بمرورك وتعديلك أستاذي ملاحظة بسيطه عند إنقاص البيانات من الأعمدة مثلا تركت 5 بياناات فقط السكرول بار يبقى ظاهر لكن خاصية التمرير لا تظهر هل من إضافة للكود بحيث اذا نقصت البيانات لا يظهر السكرول بار الله يسلمك ...........جزاكم الله خير بالنسبة لسؤالك يمكنك تغيير الخاصية KeepScrollBarsVisible الى الخيار 0 (fmScrollBarsNone) اثناء التصميم تحياتي
    1 point
  8. جرب الكود بهذا الشكل .. Private Sub Workbook_Open() Application.ScreenUpdating = False Application.EnableCancelKey = xlDisabled Application.Visible = False Userform1.Show Workbooks.Application.Visible = True Sheet1.Select Range("A1").Value = "" Sheet1.Range("A1").Value = 1 Worksheets(1).ScrollArea = "A1" Sheet2.Visible = True Sheet2.Select Application.ScreenUpdating = True End Sub
    1 point
  9. الأخ المشاكس رفيع سعد من كان حليفا فليحلف بالله أو ليصمت (متقولش والنبي تاني وإلا مش هعبرك تاني ههههه) .. أتعبتني ..وولكن ولا يهمك المهم تدعي للكبير ابن مصر ولا تنساني أنا الآخر بدعوة بظهر الغيب Sub TransferProducts() 'تعريف المتغيرات Dim ws, ws2 As Worksheet Dim lr, lr2 As Long '[Data]لورقة العمل التي باسم[ws]تعيين المتغير Set ws = ThisWorkbook.Sheets("Data") '[All]لورقة العمل التي باسم[ws2]تعيين المتغير Set ws2 = ThisWorkbook.Sheets("All") '[ws]في ورقة العمل[K]تعيين رقم آخر صف به بيانات في العمود lr = ws.Cells(Rows.Count, 11).End(xlUp).Row '[ws2]تعيين رقم أول صف فارغ في العمود الرابع في ورقة العمل lr2 = ws2.Cells(Rows.Count, 4).End(xlUp).Row + 1 'إيقاف خاصية إهتزاز الشاشة Application.ScreenUpdating = False 'إظهار رسالة تفيد بتأكيد الترحيل من عدمه ، فإذا تم الضغط على زر الأمر لا يتم الخروج من الإجراء الفرعي If MsgBox(" هل تريد بالتأكيد ترحيل البيانات ومسحها" & vbCr & vbCr & String$(40, "="), vbCritical + vbYesNo + vbMsgBoxRight + vbMsgBoxRtlReading + vbDefaultButton2, "تاكيد الترحيل ") = vbNo Then Exit Sub '[H3:J3]يتم نسخ بيانات الزبون الموجودة في النطاق ws.Range("H3:J3").Copy '[ws2]بعد عملية النسخ يتم لصق البيانات في العمود الأول في ورقة العمل ws2.Range("A" & lr2).PasteSpecial (xlPasteValues) 'يتم نسخ النتائج التي تم استخراجها من الكود السابق ws.Range("K3:M" & lr).Copy 'يتم لصق البيانات ولكن بشكل أفقي وليس عمودي في بداية العمود الرابع ws2.Range("D" & lr2).PasteSpecial (xlPasteValues), , , True 'إلغاء خاصية النسخ واللصق Application.CutCopyMode = False '[ws]مسح النطاق الذي يحتوي على النتائج حتى آخر خلية بها بيانات في ورقة العمل ws.Range("K3:M" & lr).ClearContents '[clear]استدعاء الإجراء الفرعي المسمى Call clear 'إعادة تفعيل خاصية إهتزاز الشاشة Application.ScreenUpdating = True End Sub Sub clear() 'تعريف المتغيرات Dim ws As Worksheet Dim lr, lr2, lr3 As Long Dim i, y As Integer '[Data]لورقة العمل التي باسم[ws]تعيين المتغير Set ws = ThisWorkbook.Sheets("Data") '[ws]تعيين رقم آخر صف به بيانات في العمود الأول في ورقة العمل lr = ws.Cells(Rows.Count, 1).End(xlUp).Row '[ws]بدء التعامل مع ورقة العمل With ws 'حلقة تكرارية للأعمدة من العمود الثاني إلى العمود الخامس For y = 2 To 5 'حلقة تكرارية من الصف الثالث وحتى آخر صف به بيانات For i = 3 To lr Step 6 'يتم مسح الخلاياالتي بها الكميات .Cells(i + 1, y).Value = "" Next i Next y End With End Sub
    1 point
  10. الحل هو وبأمانه هو من لايجد فى نفسه حكما عدل فليولى بلارجعه ويترك من لديه القدرة على التصحيح لتنفيذ ماتسعى إليه سيادة الدولة نحو محدودى الدخل بلا فهما خاطىء حتى ينال كل ذى حقا حقه وافراحترامى وتقديرى لشخصكم المحبب وجزاكم الله خيرا
    1 point
  11. الاخ الحبيب رفيع إليك شرح الكود الأول - وكفاية عليا كدا - .. Sub FilterProduct() 'تعريف المتغيرات Dim ws As Worksheet Dim lr, lr2, lr3 As Long Dim i, y As Integer '[Data]لورقة العمل التي باسم[ws]تعيين المتغير Set ws = ThisWorkbook.Sheets("Data") 'تعيين رقم آخر صف به بيانات في العمود الأول lr = ws.Cells(Rows.Count, 1).End(xlUp).Row 'إيقاف خاصية إهتزاز الشاشة Application.ScreenUpdating = False 'بدء التعامل مع ورقة العمل With ws 'مسح النطاق الذي تظهر فيه النتائج .Range("K3:M1000").ClearContents 'حلقة تكرارية للعمود الثاني والثالث والرابع والخامس For y = 2 To 5 '[K]متغير لتحديد أول خلية فارغة لطبع النتائج بها في العمود lr2 = .Cells(Rows.Count, 11).End(xlUp).Row + 1 'حلقة تكرارية في الصفوف ابتداءً من الصف الثالث وحتى آخر صف به بيانات ، مع التخطي 6 خطوات For i = 3 To lr Step 6 'إذا كانت الخلية التي يظهر بها الثمن ليست فارغة وأكبر من واحد If .Cells(i + 2, y).Value <> "" And .Cells(i + 2, y) > 1 Then 'تساوي أسماء الأصناف في صفوف الأصناف[K]الخلايا في العمود .Cells(lr2, 11).Value = .Cells(i, y).Value 'تساوي الكميات في صفوف الكمية[L]الخلايا في العمود .Cells(lr2, 12).Value = .Cells(i + 1, y).Value 'تساوي الأسعار في صفوف الثمن[M]الخلايا في العمود .Cells(lr2, 13).Value = .Cells(i + 2, y).Value 'زيادة المتغير بقيمة واحد للانتقال إلى خلية فارغة جاهزة لطبع النتائج بها lr2 = lr2 + 1 'إذا لم يتحقق الشرط Else 'يبقى المتغير بنفس القيمة بدون زيادة lr2 = lr2 End If Next i Next y End With 'إعادة تفعيل خاصية إهتزاز الشاشة Application.ScreenUpdating = True End Sub أرجو أن يكون الشرح واضح وصريح ومش محتاج توضيح الحلقات التكرارية المتشابكة أو المتداخلة دي لا يتقنها إلا محترف مثل ابن مصر سلمت يمناك يا ابن مصر
    1 point
  12. سامحنى يااخى الكريم طلبك مش واضح وعاوز اساعدك وكل يوم ادخل الى موضوعك واحاول ان افهم شىء ولا اعرف. وليست بمفردى من يريد مساعدتك ولو لاحظت عدد المشاهدات ستجده كبيرا جدا . وقد اقتبست هذه المشاركة لاخى واستاذى ابراهيم ابوليله .
    1 point
  13. السلام عليكم هذه حلول اخرى ربما تفيدك بالمعادلات العاديه بمعادلة صفيف بالجدوال المحوريه pivottable تحياتى 2015-02-04.rar
    1 point
  14. https://www.mediafire.com/?8luvp6yd2v39xqc
    1 point
  15. اخى الكريم سيف الدين ضع هذا الكود ده فى حدث ورقة العمل المراد تظليل الصف النشط بها Private Sub Worksheet_SelectionChange(ByVal x As Range) ActiveSheet.Cells.Interior.ColorIndex = 0 x.EntireRow.Interior.ColorIndex = 4 End Sub تقبل تحياتى
    1 point
  16. اخى الكريم اسمح لى ان اوجه عنايتك الى شئ مهم وذلك حرصا على توفير الوقت والجهد المبذول فى المساعده من جانب الاعضاء وايضا من اجل تيسير الفهم على الاعضاء ------------------------------------------ عندما تريد المساعده فى شئ قم بعمل نموذج مصغر ثم قم برفعه مع التوضيح الكافى لما تريده ----------------------------- تقبل تحياتى
    1 point
  17. بارك الله فيك اخي العزيز اسير الشروق و جزاك خير الجزاء على دعواتك الطيبة لنا ... ولك مثلها و زيادة ... اللهم امين مثال رائع كروعتك .. سلمت الايادي نسأل الله ان ييسر لك رحلتك الى بيته الحرام .... اذا احتجت لأي مساعدة فأنا من السعودية .. جدة ... فلا تحرمنا شرف رويتك و خدمتك.
    1 point
  18. تفضل اخي العزيز خالد Dim rs As Recordset Set rs = Me.Recordset With rs .MoveFirst Do Until .EOF If [TEXT2] = "MOBINIL" And [TEXT3] = "TOPUP" Then TEXT5 = [TEXT4] * 0.026 Else If [TEXT2] = "MOBINIL" And [TEXT3] = "BILLPAYMENT" Then TEXT5 = 1.6 * 1 Else If [TEXT2] = "VODAFONE" And [TEXT3] = "TOPUP" Then TEXT5 = [TEXT4] * 0.038 Else If [TEXT2] = "VODAFONE" And [TEXT3] = "BILLPAYMENT" Then TEXT5 = 4.8 * 0.038 Else TEXT5 = [TEXT4] = 0 End If End If End If End If .MoveNext Loop .MoveFirst End With Set rs = Nothing بالتوفيق
    1 point
  19. طبعا باعتذر ان المثال انجلش مش عربى وباعتذر اكتر انى ارفقت جزء من البرنامج بتاعى ولم اتمكن حاليا من انشاء مثال للبحث والتظليل لضيق الوقت بس هحاول لما ارجع من الشغل معلش انا مشغول فى تقفيل البرنامج بتاعى لانى ان شاء الله مسافر للسعوديه لاداء العمرة ان شاء الله ان كنت من اهل الدنيا الاسبوع القادم فوقتى ضيق جدا جدا جدا لانى احاول مساعدة الاخوة والاحبه ان يسر لى الله ذلك مع البحث والتعلم والتطبيق على البرنامج الخاص بالعمل فرجاء التغاضى عن عدم تلبيتى رغبات الكثير من الاحبه وعدم الردود كذلك
    1 point
  20. استاذى القدير كل كلمات الشكر لن تفيكم قدركم وحقكم شكر الله لك وجزاك عنا كل الخير ان شاء الله ☺
    1 point
  21. وكلى تعم الفائده وتعلم حل تلك المشكله فى عرض التصميم للنموذج الذى كان يحتوى على تلك المشكله من خصائص النموذج من التبويب بيانات غير قيمة إدخال البيانات من نعم إلى >------>>> لا كما فى الصورة المرفقة
    1 point
  22. بارك الله فيك / العلامة عبد الله باقشير أولا وقبل كل شيء الحمد لله على سلامتك إن شاء الله ما أبعدك عنا غير الخير سعدت جدا بمرورك وتعديلك أستاذي ملاحظة بسيطه عند إنقاص البيانات من الأعمدة مثلا تركت 5 بياناات فقط السكرول بار يبقى ظاهر لكن خاصية التمرير لا تظهر هل من إضافة للكود بحيث اذا نقصت البيانات لا يظهر السكرول بار
    1 point
  23. اخى الفاضل حاضر .. تفضل المرفق لعله طلبك باذن الله تحياتي ترحيل .rar
    1 point
  24. بارك الله فيك اخي خالد 76 شرط ؟ هذا الرقم كبير و اعتقد بأنه يمكنك تفاديه بتصميم يفي بمتطلبك . و ايضاً كنموذج مستمر يفضل ان تكون النتائج عن طريق استعلام للحقول المحسوبة . الرجاء توضيح الفكرة للبرنامج فقد يكون هناك حلول اخرى بالتوفيق
    1 point
  25. اخوانى وأحبابى السلام عليكم اليوم أقدم لكم كيفية عمل صورة من مدى معين تحدده مع حفظ الصورة فى مسار تحدده أيضاً الكود المستخدم فى الموضوع مديول عادى : Sub make_jpeg() Dim i As Integer Dim intCount As Integer Dim objPic As Shape Dim objChart As Chart 'نسخ المدى كصوره Call Sheet1.Range("A1:f13").CopyPicture(xlScreen, xlPicture) 'مسح أى أشكال من شيت 2 intCount = Sheet2.Shapes.Count For i = 1 To intCount Sheet2.Shapes.Item(1).Delete Next i 'عمل جدول فى شيت 2 Sheet2.Shapes.AddChart 'تنشيط شيت 2 Sheet2.Activate 'تحديد الجدول الذى يوجد فى شيت 2 Sheet2.Shapes.Item(1).Select Set objChart = ActiveChart 'لصق المدى اللى نسخناه فى هذا الجدول Sheet2.Shapes.Item(1).Width = Range("A1:f13").Width Sheet2.Shapes.Item(1).Height = Range("A1:f13").Height objChart.Paste 'حفظ الجدول كصورة فى المسار التالى objChart.Export ("D:\photo\mokhtar.Jpeg") End Sub وتفضلوا المرفق واعلموا أن لا أريد كلمات المدح أو الثناء ولكن كل ما أريده من حضراتكم دعوة بسيطة بظهر الغيب للمرحوم أبى . كل سنة وأنتم أقرب الى اللـــــه عز وجل range 2 jpeg by mohtar.rar
    1 point
  26. اتفضل اتمنى يكون ده اللى حضرتك عاوزه انا فهمت ان المستخدم ميقدرش يفتح السهم ويظهر القائمه وده المثال على الفهم بتاعى برنامج المخطوطات .rar
    1 point
  27. 1 point
  28. استخراج بيانات شهرية وسنوية وربع سنوية (مع إضافة التاريخ) من بيانات يومية أخي الساهر المعادلة التي في العمود C طويلة جدا وعندما تسحبها على 5000 سطر وأكثر ستزيد حجم الملف لذلك قمت بعمل كود يقوم بعملها تفضل book6.rar
    1 point
  29. اخى الكريم طلبك غير واضح مش عارف انت عايز ايه بالظبط ومن فضلك قسم طلبك لعدة اجزاء بمعنى اطلب جزئية وبعد الانتهاء منها اطلب التانية الين يكتمل ملفك كما تريد تقبل تحياتى
    1 point
  30. السلام عليكم واضح ان الملف الاول امتداده pdf وهو يغتح ببرنامج غير مجموعة الاوفيس الملف الثاني والثالث امتدادهما rarفهما مضغوطين ويجب فك الضغط عنهما ليكون الامتداد xls tr'
    1 point
  31. الحلقة الثالثة عشر ******************* السلام عليكم ورحمة الله وبركاته إخواني الأحباب في المنتدى الأغر ..نأسف على عدم فتح الباب الفترة اللي فاتت بسبب البرد الشديد ، وبعد ما الجو اتظبط شوية نقدر نفتح الباب عشان الشمس تدخل وتدفنيا.. من أول الحلقة دي إن شاء الله هنبدأ نتعامل مع مهارات التعامل مع محرر الأكواد ، عايزين نوصل للأحتراف .. هنتكلم عن مهارة كتير بنحتاج نتعلمها ، ألا وهي الفرز أو الترتيب أو ما يطلق عليها باللغة اللي مش عربية Sort هنشتغل عملي علطول (أو على عرض ..مش هتفرق كتير) ..نفتح مع بعض ورقة عمل ، ومحدش يستنى مني إني أرفق ملف ، لأنك عشان تتعلم يبقا لازم تشتغل بايدك سيبك بقا من شغل النظري اللي مبيوكلش عيش ده ! افتح يا محسن ، شعارنا في الحلقات افتح (مرة افتح الباب ..افتح مصنف جديد ..افتح الخيارات في البرنامج ..افتح محرر الأكواد .. وشوية واحد هيقولي لو مبطلتش رغي هآجي أفتح دماغك وأريح الناس من رغيك) نفتح ورقة العمل ونكتب شوية بيانات عشان هنشتغل عليها ...وعشان أريحكو أدي شوية بيانات بدل ما تتعبوا ايديكم يا أحباب ، أنا بردو يهمني راحتكم م الاسم النوع 1 ياسر ذكر 2 احمد ذكر 3 ابراهيم ذكر 4 حسام ذكر 5 سليم ذكر 6 ماجدة أنثى 7 هدى أنثى 8 محمد ذكر 9 دينا أنثى 10 نور ذكر 11 رضا ذكر 12 سلمى أنثى 13 فاروق ذكر 14 شهد أنثى 15 كمال ذكر 16 طارق ذكر 17 هدير أنثى 18 سارة أنثى 19 أميرة أنثى حدد البيانات وتعالى لورقة العمل في الخلية A1 ، واعمل كليك يمين ، ثم اختر Paste Special (لصق خاص) ثم اختر من النافذة اللي هتطلع لك Text ، بكدا هتلاقي عندك 3 أعمدة (عمود للمسلسل ودا عشان مسلسل افتح الباب ، وعمود الأسماء ، وعمود النوع.. ) ويا ريت ننسخ البيانات في نطاق تاني مرة تانية لأننا هنجرب عليها أكتر من تجربة (ضعها مرة أخرى في النطاق K1:M20 مثلاً )!! المطلوب : ترتيب البيانات حسب الاسم ، ودا أمر بسيط جدا ومش معقد أبداً .. طريقة الحل : نروح للتبويب Developer ثم نختار Record Macro ثم نقف في الخلية A1 في بداية البيانات ، ونروح للتبويب Data ثم الأمر Sort ونختار من الحقل اللي اسمه Sort By نختار الاسم (لأن هو دا الحقل المطلوب الترتيب على أساسه) ، وفي الحقل الثالث المسمى Order (ودا شكل الترتيب ونختار يا أستاذ مختار A to Z (هتلاقي هو دا الخص الافتراضي أقصد الخيار الافتراضي ) يعني الترتيب أو الفرز حاجة من اتنين يا إما تصاعدي A to Z (من تحت لفوق) ودا بيسموه الجماعة اللي ما يتسموا (Ascending) أو تنازلي Z to A (من فوق لتحت) ودا اللي بيسموه في اللغة الأجنبية Descending ، وعشان ميحصلش عندك لخبطة الكلمة Ascending بتبدأ بحرف الـ A تبقا دي A to Z (الترتيب التصاعدي) !! كل دا إحنا بنسجل يا حسين (اعدل الكرافتة عشان صورتك تطلع حلوة) ..Stop أنا المخرج وبقول Stop يعني وقف التسجيل .. ياااااااه كانت حلقة صعبة أوي الحلقة دي ، التسجيل بيحتاج مجهود جبار عشان تطلع الحلقة حلوة ولذيذة !!! دلوقتي جه وقت الجد ، اللي إحنا منعرفوش ، ندخل المغارة (على رأي الكبير حسام عيسى ..صقر المنتدى) ، هندخل المغارة عن طريق Alt + F11 معلومة قديمة ، طيب هندخل نعمل ايه ؟ أكيد هندخل عشان ندور على الكنز ..مش دي بردو مغارة ياسر بابا !! هنلاقي الكنز بس مدفوووووووون تحت الأنقاض Sub Macro1() ' ' Macro1 Macro ' ' Range("A1:C20").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:C20") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub دا اللي إحنا سجلناه ..إحنا طلعنا شطار وبنعرف نسجل كويس جداً ..الكنز فين يا نور العين؟ الكنز مدفون ما بين الأسطر ..إزاي نقدر نخرجه.. أقولكم دا كله هتش !! اللي عمله محرر الأكواد في سنين هنختصره إحنا في ثانية واحدة وبسطر واحد (وهي دي الشطارة !!) Range("A1:C20").Sort Key1:=Range("B1:B20"), Order1:=xlAscending, Header:=xlYes ضع هذا السطر اللذيذ في إجراء فرعي وجربه ، هنلاقي إنه يبنفذ نفس الكود الطويل اللي سعادة محرر الأكواد سجله . طيب نهضم السطر اللي اتكتب : أول شيء عشان تقدر تتعامل في أي كود إنك تحدد الخلية أو النطاق اللي هتتشغل عليه ، وأظن دي واضحة جدا ، فالنطاق اللي هنشتغل عليه واللي فيه البيانات هو A1:C20 ، وممكن في الكود نحدد أول خلية في النطاق بس يعني ممكن يكون شكله كدا : Range("A1") بس أنا أفضل إننا نكتب النطاق بالكامل ، وبعد ما حددنا النطاق ، نطلق الحدث أي الفعل ، يعني السؤال المتوقع ايه المطلوب نعمله في النطاق : الإجابة نطبطب عليه وندلعه ، إجاية غير صحيحة ، الإجابة إننا نفرسه (هذه هي الإجابة الصحيحة ..نعم نفرزه ونرتبه زي ما إحنا عايزين) والفرز بيكون بكلمة Sort ونترك مسافة واحدة بالمسطرة بعد الفرز .. ونبدأ نشوف حاجة اسمها بارامترات الحدث Method ، ودي ممكن نشوفها في تسجيل الماكرو اللي قام بيه محرر الأكواد .. إحنا هناخد المهم وبس ، ميهمناش الدش الكتير !! أول بارامتر هو مفتاح الفرز أو الترتيب Key، بمعنى آخر المقصود بيه العمود اللي هيتم على أساسه الفرز ، والعمود هنا هو عمود الأسماء B1:B20 ، ونفس الكلام ممكن نستغنى عن النطاق بالكامل ونذكر فقط أول خلية في العمود B1 بالشكل ده Key1:=Range("B1") طيب محدش سأل ايه الواحد اللي جنب المفتاح (دا الحارس الشخصي للمفتاح عشان محدش يسرقه) ..الواحد ده يا أساتذة هو المفتاح الأول لعملية الفرز ، وهنفهم الحتة دي لما ناخد مثال تاني ... بعد كلمة Key1 نقطتين فوق بعض (Shift + حرف الكاف : ) وسواء وإنت بتكتب عربي أو إنجليزي (الاتنين سواسية).. يليها علامة يساوي .. ومعروف إن علامة يساوي ييجي بعدها قيمة ، ونترجم الكلام ده إن قيمة المفتاح الأول هو النطاق B1:B20 (أفضل إنه يتكتب نطاق العمود بالكامل) ناخد فاصل ، لا مش هنريح يا عبد الله ، أقصد فاصلة مش فاصل ، الفاصلة دي هي اللي بتفصل بين البارامترات يا أحباب .. ننتقل للبارامتر الثاني والمسمى Order ودا ترجمته يا أخ ابو سليمان (الترتيب ..) دلوقتي هتدعي عليه ، وتقولي يا عم إنت مش قلت كلمة Sort دي معناها ترتيب ..أيوا مش هنكر ..بس عشان تتضح الصورة كلمة Sort هنا فعل أو حدث Method ، أما كلمة Order تعتبر زي الاسم وممكن نقول إن البارامترات دي وصف لكيفية حدوث الحدث ، أي الطرق المؤدية لحدوث الحدث !! أنا تهت زيكم بالظبط المهم المقصود منها نوعية الترتيب هنا (هل الترتيب تصاعدي أم تنازلي) ، وبردو كلمة Order جنبها رقم واحد (الحارس الشخصي) ..يليها نقطتين وعلامة يساوي ، وقيمتها إما xlAscending أو xlDescending (أظن مفهومة يا أبو سليمان) ناخد فاصلة تانية وأوعدك دي تكون آخر فاصلة في السطر ده ..البارامتر الثالث هو المسمى Header ودي ترجمتها حقول البيانات أو عناوينها .. نسأل هل للبيانات اللي موجودة عناوين ولا لا ؟؟ م ، والاسم ، والنوع (دي عناوين أو حقول للبيانات) .. الإجابة نعم xlYes معلومة جديدة نستفيد منها إن الحدث Mehod قد يتبعه بارامترات ، وتأتي هذه البارامترات بعد الحدث Method بمسافة بينهما ، يعني اللي بيفصل بين الحدث والبارامترات هي المسافة (دي المحرم..) ..أما البارامترات فبيتم الفصل بين كل واحد وأخوه بفاصلة , .. حاجة تانية لما تلاقي النقطتين فوق بعض وبعدين علامة يساوي تعرف إن دا بارامتر .. يا رب تكون المعلومة مفيدة. طيب سؤال من الأستاذ طارق : هل البيانات لازم يكون فيها عنوان عشان نعمل فرز ؟؟ جاوب إنت يا عبد الكريم ، عبد الكريم : يا أستاذ طارق طالما فيه بارامتر بيسأل هل فيه عنوان أو مفيش ، يبقا أكيد ممكن إننا نفرز من غير عناوين البيانات .. الله ينور عليك يا أستاذ عبد الكريم ، وميحرمناش منك ، فعلا الكلام دا صحيح .. نشوف السطر ده بيأدي نفس الغرض ، استغنينا عن صف العناوين : Range("A2:C20").Sort Key1:=Range("B2:B20"), Order1:=xlAscending, Header:=xlNo النطاق بدأ من A2 بعيداً عن عناوين البيانات ، والمفتاح كمان بدأ من B2 ، ونخلي بالنا من قيمة البارامتر Header هنلاقيه xlNo (يعني مفيش عناوين). ********************************* ننتقل لجزئية تانية .. الجزئية اللي فاتت أخدت حقها وزيادة ، دلوقتي واحد بيبص لي وبيقولي ايه شكل البيانات الملخبطة دي ..حد يفرز الأسماء ويخلي كله مع بعضه (ذكور مع إناث) دا إنت راجل محترم حتى عيب عليك !! ..ردي : أنا آسف والله يا حاج محمد مكانش قصدي ، دا كان مجرد مثال عموما عنيا ليك هنعيد ترتيبهم زي ما إنت عايز (حضرتك أكيد عايز الذكور أولا وبعدين الإناث ) ..رد وقال : كدا عين العقل .. بسيطة يا حاج محمد : السطر الخاص بالفرز هنزود عليه مفتاح كمان ، وشكل لترتيب المفتاح الجديد ... قبل ما أضع السطر ..عايزين نعود نفسنا إننا ندي نفسنا مساحة من التفكير قبل التنفيذ .. الفرز المرة دي هيكون على عمودين (مين قبل مين .. يعني عمود الاسم الأول ولا عمود النوع ؟؟ الإجابة بسيطة عمود النوع عشان نفصل بين الذكور والإناث : أي خدمة يا حاج محمد) إذاً الفرز هكيون لعمود النوع (ذكر ، أثنى ) ، نبص في أول حرف في ذكر وأول حرف في أنثى (محدش يبص على كل الحروف عيب) أول حرف هو حرف الذال في كلمة ذكر ، وألف في كلمة أنثى : طيب الكلمتين دول الألف الأول ، بمعنى تاني لو تركنا الخيار xlAscending اللي هو الترتيب التصاعدي بكدا هيكون الإناث الأول وبعدين الذكور حسب الترتيب الأبجدي ، إذاً في الحالة دي هنكتب xlDescending (عشان تتم عملية الفرز ذكر ثم أنثى) نأتي للتطبيق العملي : ها هو السطر ... Range("A1:C20").Sort Key1:=Range("C1:C20"), Order1:=xlDescending, Key2:=Range("B1:B20"), Order2:=xlAscending, Header:=xlYes هنشبه السطر دا بشقة ليها بابين : أقصد بالبابين عمودين الترتيب (عمود النوع ثم عمود الأسماء) ، كل باب له مفتاح عشان يفتح بيه .. الباب الأول عمود النوع ومفتاحه رقم 1 ، وشكل ترتيبه أو نوع ترتيبه تنازلي (عمود النوع) Key1:=Range("C1:C20"), Order1:=xlDescending والباب التاني ومفتاحه رقم 2 ، وشكل أو نوع ترتيبه تصاعدي (عمود الأسماء) Key2:=Range("B1:B20"), Order2:=xlAscending طبعا المفتاح ده ميشتغلش على ده ، ولا ده يشتغل على ده ، إنما ده لده وده لده (معلش هيست شوية) مفتاح النوع هيعتمد على النطاق C1:C20 ، ومفتاح الأسماء هيعتمد على النطاق B1:B20 ، كل مفتاح يلعب في ملعبه أقصد في بابه ، أقصد في العمود الخاص بيه. وبكدا لما ننفذ السطر اللي فات ، نقدر نحصل على النتيجة التي ينتظرها الحاج محمد.. الحاجة أم محمد شكلها مكشر وزعلت وبتقول بالإنجليزي : Ladies First يا مان (معلش أصلها مثقفة حبتين) أوك يا حاجة ولا تزعلي نفسك .. الفكرة بأبسط مما تتخيلي غيري كلمة واحدة ، وألا أقولك متتعبيش نفسك شيلي حرفين وحطي حرف واحد بس شيلي حرفي De في كلمة Descending وحطي حرف الـ A (شفتي بقا إنها بسيطة .. متنسيش الفطير عشان مستر حسام) يا للروعة !! الحاجة أم محمد مش مصدقة نفسها .عموما جربوا (مش تجربوا الكود .. جربوا فطير أم محمد هيعجبكم جداً ، وبعد ما تاكلوا وتتمتعوا بالفطير جربوا الكود بعد التعديل ..) ********************************* ننتقل لجزئية أخيرة تهم نفس الموضوع ...ألا وهي ألا وهي (تصدقوا نسيت) افتكرت .. إزاي أخلي النطاق غير محدد أو ديناميكي .. إحنا لما اتعاملنا مع النطاق حددنا النطاق لحد الصف رقم 20 في المثالين اللي فاتوا .... عايزين يكون الكود مرن ، يعني يمشي مع أي عدد من الصفوف ، لأن قواعد البيانات معروف إنها مش ثابتة .. يبقا المطلوب الجديد إننا نخلي آخر صف مفتوح ، أو من خلال الكود نخلي محرر الأكواد هو اللي يحدد آخر صف مش إحنا .. مستر حسام عيسى تناول (الفطيرة بتاعت أم محمد) وأيضاً تناول هذه النقطة في شرح رائع له .. نشرحها تاني ..ونخلي بالنا ، وخلينا جد بقا شوية ومركزين أوي لأن الحتة دي تقريبا مفيش مبرمج بيستغنى عنها (آه والله زي ما بقولكم كدا) نفرض دلوقتي إننا مش عارفين آخر صف ..نجيبه إزاي .. الإجاية نسجل ماكرو (واحد مبرق ومش فاهم أيوا هنسجل ماكرو ..بردو مبرق ) بص يا مبرق : ابدأ تسجيل و تعالى في العمود الأول A واقف بعيد تحت بعد البيانات بمسافة كبيرة وليكن مثلا A100 ، وبعدين اضغط Ctrl + سهم لفوق من لوحة الأسهم .بس خلااااص انتهى التسجيل ، نروح لمحرر الأكواد هنلاقي الشكل ده Range("A100").Select Selection.End(xlUp).Select وممكن نختصره في سطر واحد بس إننا نشيل كلمة Selection ونحط مكانها النطاق Range("A100").End(xlUp).Select عايز تطبق الكود ده ، روح لأي خلية بعيدة في أي عمود واضغط Alt+F8 وشوف الماكرو اللي فيه السطر اللي فات اسمه ايه واضغط Run.. نفهم إزاي هنستغل الحتة دي في إننا نعرف آخر سطر به بيانات في العمود A .. نقطة البداية هي A100 ، والكلمة End(xlUp) دي لما ضغطنا Ctrl وسهم لفوق المحرر ترجمها كدا ، يعني اطلع لفوق Up يا سفن أب يا لذيذ يا رايق (ما هو لازم نهضم الفطير اللي أكلناه) طيب واحد بيقولي بس دا مش حل لأني أساسا معرفش البيانات دي آخرها فين ، بلاش استعباط .هرد عليه وأقوله : الله يسامحك ، ما هو لو صبر القاتل ع المقتول كان مات لوحده ... إحنا هنخلي رقم الصف 100 هو آخر صف في ورقة العمل ، بالنسبة لـ 2003 آخر صف 65536 ، أما في 2007 فما فوق فعدد الصفوف 1048576 (يا دي الحيرة ..يعني نغير رقم 100 لأي رقم فيهم) ..اللي يحيرك طيره ، يعني لا هنستخدم الرقم ده ولا ده إحنا هنخلي المحرر هو اللي يعد الصفوف كلها بالسطر ده ، سبق وشرحناه في النافذة الفورية MsgBox Rows.Count بس إحنا مش عايزينها في رسالة ..دا بس عشان تتضح الصورة ، كلمة Rows تعني صفوف يا أبو سليمان ، وكلمة Count يعني يا محرر اتفضل عد. هكيون الناتج لتنفيذ السطر اللي فات مختلف حسب إصدار الأوفيس اللي عندك ، لو 2003 هيطلع الناتج 65536 ، ولو الأوفيس 2007 فما فوق هيطلع الناتج 1048576 (أكيد فيه ناس تاااهت مني .. الفطير عمل عمايله معاكم) يرجع مرجوعنا لموضوعنا الأصلي عرفنا عدد الصفوف من خلال محرر الاكواد ، يبقا هنشيل رقم 100 ونحط Rows.Count وبس Range("A" & Rows.Count).End(xlUp).Select نخلي بالنا الرقم 100 كان داخل أقواس التنصيص ، لكن لما استخدمنا الجملة Rows.Count الأقواس طردتها براها ، لأنها الأقواس مش بتقبل المتغير ، وعدد الصفوف هنا يا أحباب وركزوا متغير حسب الإصدار ، لكنها بردو حنينه مهانش عليها تطرده قامت حضنته بعلامة & عشان يكون جنبها طيب نرجع تاني للهدف من دا كله إننا نعرف رقم آخر صف فيه بيانات ، إحنا بالسطر الأخير عرفنا نحدده لكن إزاي نعرف رقم صفه .. هنشيل Select ونحط Row وبس .. لا محدش يقولي بس !! كدا السطر دا بالشكل ده Range("A" & Rows.Count).End(xlUp).Row لو نفذت السطر ده هيقولك محرر الأكواد يا أهبل ايه ده ويطلع لك رسالة خطأ Invalid Use استخدام خاطيء.. السطر صحيح ، بس السطر عبارة عن رقم (اللي هو رقم الصف الأخير اللي فيه بيانات) بس الرقم دا مينفعش يقف لوحده يخاف ياخد برد .. لازم نحط الرقم ده في متغير .. Dim LR As Long LR = Range("A" & Rows.Count).End(xlUp).Row MsgBox LR عملنا متغير باسم LR ودي اختصار Last Row أو الصف الأخير (بس التسمية اختياري يا شباب) ووضعنا قيمة للمتغير اللي سميناه LR في السطر الثاني ، فأصبح المتغير LR يحمل الآن رقم الصف الأخير وفي السطر الثالث عشان نختبر مدى صحة الكود ونشوف النتيجة عملنا رسالة يظهر فيها قيمة المتغير .. ** ملحوظة هامة : ممكن السطر الثاني نستخدم كلمة Cells بدلاً من كلمة Range بس هيكون التركيب مختلفة شوية ، لأن مع كلمة Cells بيكون فيه جزئين : الجزء الأول رقم الصف والجزء الثاني رقم العمود ، معنى الكلام ده إن Cells بتتعامل مع أرقام ، فيكون شكل الكود اللي فات لو استخدمنا Cells بهذا الشكل : Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row MsgBox LR طبعاً Rows.Count تمثل رقم آخر صف به بيانات ، ورقم واحد بيمثل رقم العمود الأول A >>>>> نفذ الكود سواء اللي فات أو اللي قبله !! هنلاقي رقم الصف الأخير طلع في رسالة (أنا طلعت عيني وأكيد إنتو كمان .. يعني اللفة الطويلة دي عشان نعرف رقم آخر صف به بيانات.) دلوقتي جه الوقت إني أودعكم .. نشوف شكل الكود في النهاية هيكون عامل إزاي Sub SortData() Dim LR As Long LR = Range("A" & Rows.Count).End(xlUp).Row Range("A1:C" & LR).Sort Key1:=Range("C1:C" & LR), Order1:=xlDescending, Key2:=Range("B1:B" & LR), Order2:=xlAscending, Header:=xlYes End Sub دا الكود اللي هيرتب الذكور ثم الإناث ، وبعدين يرتب الأسماء ، في النطاق اللي بيبدأ من A1:C ورقم آخر صف ..لاحظ إننا شلنا رقم 20 من الكود الأصلي اللي شرحناه من بدري ، واستبدلناه بالمتغير LR والذي يحمل قيمة رقم آخر صف...!! لتجربة الكود أضف اسماً جديدا ونفذ الكود مرة أخرى ستجد أن الاسم الجديد قد انتقل لترتيبه ، وإلى هنا توقفت دماغي (فااااااااااااااصل ومفيش نواصل) أرجو أن أكون قد وفقت في توصيل المعلومة ، وإلى أن نلتقي أترككم في رعاية الله. كان معكم الحاجة أم محمد صاحبة الفطير من منتدى أوفيسنا تقبلوا تحياتي ودمتم بود
    1 point
  32. طريقة عمل شاشة افتتاحية باسم مستخدم ورقم سري !! خطوة خطوة (((( الدرس الرابع )))) الف مليون شكر لكل من قاموا بالترحيب بالموضوع وتشجيعي علي اكماله واي استفسار .... في الخدمة دائما ... واي شئ غير واضح في الشرح علي استعداد تام لشرحه مرة اخري في هذا الدرس سنقوم بوضع بعض الاكواد البسيطة والتي من مهمتها اخفاء الاكسيل عند الفتح ولا يظهر الا بعد المرور عبر الفورم حيث لن يظهر الا الفورم فقط في البداية ويتم الدخول بوضع اسم المستخدم الصحيح وكذلك كلمة المرور الصحيحة او الخروج من البرنامج في حالة عدم معرفتهم واليكم ايضا في المرفقات : 1- ملف اكسيل به الاكواد والفورم 2- ملف ورد به شرح كامل للاكواد 3- ملف فيديو به شرح كامل للاكواد والطريقة واليكم ايضا قائمة بالمشاركات الموجود فيها الدروس الاربعة السابقة الدرس الاول ــــــــــــــ في المشاركة رقم ( 1 ) الدرس الثاني ــــــــــــــ في المشاركة رقم ( 14 ) الدرس الثالث ــــــــــــــ في المشاركة رقم ( 40 ) الدرس الرابع ( هنا ) ــــــــــــــ في المشاركة رقم ( 56 ) عسي الله ان ينفع بهما وجزاكم الله خيرا طريقة عمل الشاشة الافتتاحية -الدرس الرابع اكسيل.rar طريقة عمل الشاشة الافتتاحية شرح ورد 4.rar شرح لطريقة اخفاء الاكسيل عند الفتح.rar
    1 point
×
×
  • اضف...

Important Information