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

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

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

    13,165
  • تاريخ الانضمام

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

  • Days Won

    412

كل منشورات العضو ياسر خليل أبو البراء

  1. جرب الكود التالي لاستعادة جميع الأشرطة (الوضع الافتراضي) Sub ResetAll() Dim myCommandBar As CommandBar For Each myCommandBar In Application.CommandBars If myCommandBar.Type = msoBarTypePopup Then myCommandBar.Reset myCommandBar.Enabled = True End If Next myCommandBar End Sub الكود مقتبس من مكتبة الصرح ... ويوجد الموضوع في الموضوعات الحالية في المنتدى قمت بوضع رد ليظهر في الصفحة الأولى ابحث عن كلمة "استعادة"
  2. وجزيت خيراً أخي الحبيب وائل ..مشكور على مرورك العطر أرجو أن ينتفع بها الجميع
  3. جزيت خيراً أخي الحبيب سليم على الملف الأخير .. فكرته جميلة وإن كنت لا أحبذ شخصياً التعامل مع الـ Advanced Filter ... ربما لأنه ينشيء نطاقات باسم Extract و Criteria (هذا ما يضايقني فيه) عموماً الحمد لله أن تم المطلوب على خير والحمد لله الذي بنعمته تتم الصالحات تقبل تحياتي
  4. بسيطة أخي ناصر بالمعادلات قم في خانة الجنيهات بوضع المعادلة التالي =INT(Biram(A1)) وفي خانة القروش ضع المعادلة التالية =MOD(Biram(A1),1)*100 هذا بفرض أن الرقم في الخلية A1 إذا لم تعمل معك المعادلة قم باستبدال الفاصلة العادية بفاصلة منقوطة تقبل تحياتي
  5. أخي الكريم هاني هل أنت متأكد من صحة النتائج ؟؟ لابد من مراجعة النتائج جيداً لا أشكك في كود الأخ أبو عيد ..إنما شكي في المنطق المتبع لاحظ الصورة التالية وأخبرني ما هو الحال في هذه الحالة (قد يبدو سؤالي سخيفاً لكنه مهم بالنسبة لي) لو افترضنا أن عرض الغرفة = 10 ، وطولها = 42 .. ماذا ستعتمد في هذه الحالة كنتيجة للمدخلات .. A أم B؟؟ بعد تجربة الكود وجدت النتيجة B ولما لا تكون A ... أيهما أصح ولماذا وما المنطق في هذه الحالة؟؟ في رأيي أنه لابد من تصحيح المعاملات المنطقية أي أنه يجب أن يكون بداية الرقم في النطاق له الأفضلية .. يعني 8.1 إلى أقل من 10 ، و 42 إلى أقل من 54 والسطر التالي القيمة من 10 إلى أقل من 11.7 ، و من 42 إلى أقل من 60 حسب هذا المنطق فإن النتيجة يجب أن تكون A وليست B أرجو تأكيد وتوضيح المنطق ... وأعتذر عن التدخل بعد انتهاء الموضوع وهذا تعديل للكود في حالة المنطق الثاني صحيح حسب ما وضحت لك Sub aboeid() Dim a, b, x, y, z x = Sheets(2).[B6].Value 'celing y = Sheets(2).[B2].Value 'length z = Sheets(2).[B4].Value 'width For a = 6 To 16 'celing If x >= Sheets(1).Cells(3, a).Value And x < Sheets(1).Cells(4, a).Value Then GoTo 1 Next 1: For b = 9 To 84 'length and width If z >= Sheets(1).Cells(b, 2).Value And z < Sheets(1).Cells(b, 3).Value _ And y >= Sheets(1).Cells(b, 4).Value And y < Sheets(1).Cells(b, 5).Value Then GoTo 2 Next 2: Sheets(2).Cells(9, 5) = Sheets(1).Cells(b, a).Value If Sheets(2).Cells(9, 5) = "" Then Sheets(2).Cells(9, 5) = "not found" End If End Sub
  6. الأخ وليد يبدو أنني نسيت أن هناك من الناس مازال متمسك بالأوفيس 2003 ..إلى الآن .. عموماً يمكن استخدام أي عمود بعيد عن مجال البيانات ..أو الأفضل أن يكون الكود مرن ويتعامل مع أي نسخة للأوفيس حتى لا أغرق الموضوع بمشاركات وأكواد يتوه فيها الأعضاء قمت بتعديل الكود السابق ، بحيث يصبح آخر عمود هو مرجع وحامل للخلية النشطة بصرف النظر عن الإصدار جرب الكود مرة أخرى من المشاركة السابقة ...
  7. أخي الكريم ساديب يرجى تغيير اسم الظهور للغة العربية والإطلاع على التوجيهات في الموضوعات المثبتة في صدر المنتدى (بالله عليكم التزموا بالتعليمات .. والكلام موجه للجميع وليس لشخص واحد فقط) أخي الغالي أبو عبد الرحمن اقتراحك رائع جداً ولكن نحن نتعامل مع واقع الملف ومن الملف يوجد عمود يحدد النوع ، إذاً ليست القضية في المذكر والمؤنث مشكلة .. تكون مشكلة وقضية حينما يطلب أحدهم من الإكسيل تخمين النوع (ودا ساعتها نديله على نافوخه .. هو مفكر الإكسيل سعادته سجل مدني !!) أخي الحبيب سليم راجع ملفك فالنتائج غير مكتملة نظراً لأن المعادلات ينقصها رقم 0 بجانب C10 لتصبح C100 والمعادلات في العمود H معادلات صفيف يبدو أنك نسيت الضغط على المفاتيح بشكل صحيح ..عموماً هي هفوات بسيطة ولكن المعادلات رائعة وفي منتهى الجمال وتؤدي الغرض وإثراءً للموضوع يمكن استخدام الكود التالي (مع العلم أن هناك طرق أخرى كالفلترة أو استخدام المصفوفات .. ولكن استخدمت هنا الحلقات التكرارية .. تقليدي في الموضوع) Sub Test() Dim Lr As Long, lastMale As Long, lastFemale As Long, I As Long Application.ScreenUpdating = False With ActiveSheet .Range("H3:K1000").ClearContents Lr = .Cells(Rows.Count, 2).End(xlUp).Row For I = 3 To Lr If .Cells(I, 3).Value = "ذكر" Then lastMale = .Cells(Rows.Count, "H").End(xlUp).Row + 1 .Range("H" & lastMale).Value = .Cells(I, 2).Value .Range("H" & lastMale).Offset(0, 1).Value = .Cells(I, 4).Value ElseIf .Cells(I, 3).Value = "انثى" Then lastFemale = .Cells(Rows.Count, "J").End(xlUp).Row + 1 .Range("J" & lastFemale).Value = .Cells(I, 2).Value .Range("J" & lastFemale).Offset(0, 1).Value = .Cells(I, 4).Value End If Next I End With Application.ScreenUpdating = True End Sub تقبلوا جميعاً تحياتي
  8. أخي الكريم أبو فادي مشكور على كلماتك الطيبة والرقيقة في حقنا بالنسبة لاستفسارك "هل يمكن أن يتظلل السطر بالكامل ؟؟ فقد تم ذلك في المشاركات السابقة وتم تظليل صف النطاق بالكامل أم هل تقصد الصف بالكامل بالكامل ... إذا كان الأمر كذلك فأنا لا أحبذه لأن كثرة استخدام التنسيق الشرطي على نطاقات واسعة تثقل عمل الملف الاستسفار الثاني معرفة عدد الأيام في عمود يمكن وضع المعادلة التالية في الخلية J4 (أرى أنك غيرت من هيكلةالملف الأصلي ..عموماً بعد الشرح الذي قدم يمكنك التعديل في المعادلات بما بتناسب مع الهيكلة الجديدة) المعادلة في J4 تكون بالشكل التالي =IFERROR(DATEDIF(TODAY(),$G4,"d"),"") أرجو أن يفي هذا بالغرض إن شاء المولى
  9. صدقني أنا لا أبخل على أحد بأي معلومة .. وللعلم أنا لا أفقه شيء في لغة الحسابات والمخازن والوارد والصادر كلمني بلغة الإكسيل فقط ووضح الأمور وستجد إن شاء ربي ما يسرك توكل على الله وابدأ موضوع جديد ببرنامج جديد لا يكون فيه أي معادلات ولا أكواد على الإطلاق ..لتكن البداية من المنتدى وإن شاء الله مع الصبر ستجد المساعدة من إخوانك
  10. خدعة جميلة لم أعرفها من قبل .. جربتها وبالفعل كلامك صحيح 1000 % وأعجبتني الخدعة ولن أكف عن مناداتك معلمي الكبير فأنت لك صولات وجولات في المنتدى وكم وكم تعلمنا منك وما زلنا نتعلم إلى يومنا هذا بارك الله فيك وجزاكم الله كل خير .. تقبل وافر تقديري واحترامي
  11. لا تعطني سمكة ولكني علمني كيف أصطاد ..كيف استطعت معلمي الكبير إظهار ورقة العمل Data هل هناك خيار في الـ XML أو في أحد الملفات الخفية في المصنف يقوم بالأمر..؟ أم هل هناك برنامج يصحح الأمور ويصحح التلف إو وجد؟
  12. وجزيت خيراً بمثل ما دعوت لنا أبا عبد الرحمن .. ولا أناديك بالاسم التاني أو الأولاني اللي قبل التاني (شكلك هاوي وأنا بتاع قهاوي) ربنا يبارك فيك ويزيدك والحمد لله أنك تأتي بنتائج جيدة هذا يسعدني بالتأكيد وكل عام وأنت بخير وكل أعضاء أوفيسنا الكرام
  13. حاول تراسل أخونا عماد لأنه صاحب البرنامج وهو أكتر واحد أدرى بخباياه .. دا مجرد رأي أو ابدأ في تصميم ملفك من الأساس وشوف اللي إنت عايزه واطرح موضوع لكل طلب وخليك صبور يا عبد الشكور
  14. بارك الله فيك أخي الغالي الشهابي وأخي الحبيب أبو عبد الباري حلول رائعة من أعضاء رائعين ... أخي الكريم البوب عاتب كما تشاء فلا عتاب إلا بين الأحباب .. يا ترى خير .. بس بلاش عك في العناوين وهتلاقيني بدل ما أرد رد عادي وتقليدي هساهم في الموضوع إن شاء الله (ايه رأيك في الإغراء ده .. ولا إغراء يسرى )
  15. بارك الله فيك اخي عبد الباري وأخي سليم ما رأيكما بتلك المعادلة .. =IFERROR(IF(AND(B1>=VALUE(LEFT(A1,FIND("-",A1)-1)),B1<=MID(A1,FIND("-",A1)+1,LEN(A1)))=TRUE,"فى المدى","خارج النطاق"),"")
  16. اسمح لي أخي الحبيب أبو عبد الرحمن بتعديل طفيف بحيث لو كانت الخلية فارغة يعطي فراغ ، وبدلاً من أن تقوم بعملية التقريب في المعادلة تم إدراجها في الدالة المعرفة Public Function Biram(X) Dim N As Variant, Result As Variant If IsEmpty(X) Then Biram = "": Exit Function N = Int(X) If X > 50 Then Result = (X - 50) * 0.006 If X > 250 Then Result = 1.2 + (X - 250) * 0.0065 If X > 500 Then Result = 2.825 + (X - 500) * 0.007 If X > 1000 Then Result = 6.325 + (X - 1000) * 0.0075 If X > 5000 Then Result = 36.325 + (X - 5000) * 0.008 If X > 10000 Then Result = 76.325 + (X - 10000) * 0.003 If IsNumeric(Result) Then Biram = Round(Result, 2) End Function تقبل تحياتي
  17. الله ينور يا غالي منور المنتدى هنا وهناك .. (بس بلاش ترجمة جوجل اللي مش فاهم منها حاجة دي ...خليك سيمبل Simple) شابفك بقيت منتشر عيني عليك باردة ربنا يبارك فيك ويجازيك كل خير تقبل تحياتي
  18. أخي الكريم ياسر أهلاً بك في المنتدى ونورت بين إخوانك ومرحباً بك في بيتك الثاني أوفيسنا
  19. أخي الكريم وليد عبد الغني يرجى تغيير اسم الظهور للغة العربية بعد إذن أخونا عيد قمت ببعض التعديلات الطفيفة على الكود .. قم بالذهاب لمحرر الأكواد وفي نافذة المشروع انقر دبل كليك على الكائن ThisWorkbook وامسح الأكواد الموجودة وضع الكود التالي Const sSheet As String = "Watch" Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim Ws As Worksheet Dim LR As Long If Sh.Name <> sSheet Then With Sheets(sSheet) LR = .Cells(Rows.Count, "A").End(xlUp).Row + 1 If Target.Column < 10 And Target.Row > 1 Then .Cells(LR, 1) = ActiveSheet.Name .Cells(LR, 4) = Target.AddressLocal .Cells(LR, 7) = Target.Value .Cells(LR, 6) = .Cells(1, Columns.Count) .Cells(LR, 5) = Application.UserName .Cells(LR, 2) = Format(Date, "dd-mm-yyyy") .Cells(LR, 3) = Format(Now, "h:mm:ss") End If End With End If End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Sheets(sSheet).Cells(1, Columns.Count).Value = ActiveCell.Value End Sub يمكنك تغيير اسم ورقة العمل المراد عملها كورقة مراقبة من خلال تغيير الاسم الموجود في السطر الرابع Watch إلى اسم ورقة العمل المطلوبة ، ولا تنسى أن تضع عناوين للورقة في الصف الأول أرجو أن يفي هذا بالغرض تقبل تحياتي
  20. لا هذا غير صحيح ..يمكن ببساطة الاعتماد على الشرطة الموجودة بين الأرقام بغض النظر عن عدد الأرقام في كل جهة
  21. المنتدى مليء بالموضوعات التعليمية ..تابع الموضوعات المختلفة وستتعلم الكثير وهناك قنوات على الفيديو في هذا المجال لا حصر لها .. ابحث على جوجل وستجد من المصادر ما يكفيك وزيادة بالنسبة لملفك لا أعلم طريقة إخفاء الورقة .. وإن وجدت فقد تم التلاعب بالـ xml الخاص بالمصنف لابد أن يكون هناك طريقة لا نعرفها بعد
  22. نعم ولكن يمكن تحقيق المطلوب سواء رقم أو رقمين أو أكثر بمعادلة عادية وليس بمعادلة صفيف
  23. بارك الله فيك معلمي الكبير أبو تامر ولا حرمنا الله منك ..
  24. هذا أجمل وابسط وأيسر ..بارك الله فيك يا سليم
×
×
  • اضف...

Important Information