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

أ / محمد صالح

أوفيسنا
  • Posts

    4486
  • تاريخ الانضمام

  • Days Won

    198

كل منشورات العضو أ / محمد صالح

  1. يمكنك تجربة هذا التعديل تم إضافة شرط عدم زيادة عدد الأرقام السرية عن عدد العشرة بالمائة من الحضور بالتوفيق محضر العشرة بالمائة.xlsb
  2. تمت الإجابة عن شيء مثل هذا بالتوفيق
  3. عليكم السلام ورحمة الله وبركاته يمكنك استعمال هذه المعادلة في الخلية B2 وسحبها يمينا ثم أسفل =IF(AND(B$1>=main!$B3,B$1<=main!$C3),B$1,"") وتعني إذا كان التاريخ المكتوب في B1 أكبر من أو يساوي تاريخ بداية المدة وأقل من أو يساوي تاريخ نهاية المدة يتم كتابة هذا التاريخ وإلا تظهر الخلية فارغة مع تغيير تنسيق الخلايا إلى تاريخ بالتوفيق
  4. مشكلة عدم ظهور أحد في صفحة كل معلم على حدى يرجع إلى عدم دقة معادلة الفلتر جرب استعمال هذه المعادلة في الخلية D9 =IFERROR(INDEX(sheet2!B$4:B$300,SMALL(IF(sheet2!$AK$4:$AK$300=$J$1,ROW(sheet2!B$4:B$300)),ROW($D1))),"") ويمكنك سحبها يسارا ولأسفل مع مراعاة بداية ونهاية النطاقات في مثل هذه المعادلات ويمكن تحويلها إلى كود بأكثر من طريقة أسهلها أن تضع المعادلة في النطاق بالكود مثلا range("d9:d28").formulaarray = "=IFERROR(INDEX(sheet2!B$4:B$300,SMALL(IF(sheet2!$AK$4:$AK$300=$J$1,ROW(sheet2!B$4:B$300)),ROW()-8)),"""")" ثم تحول ناتج المعادلة إلى قيم بهذا الكود range("d9:d28").value = range("d9:d28").value وهكذا مع كل نطاق له معادلة مختلفة وأقترح أن تربط ذلك بتغيير الخلية J1 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$J$1" Then Range("d9:d28").FormulaArray = "=IFERROR(INDEX(sheet2!B$4:B$300,SMALL(IF(sheet2!$AK$4:$AK$300=$J$1,ROW(sheet2!B$4:B$300)),ROW()-8)),"""")" Range("d9:d28").Value = Range("d9:d28").Value MsgBox "Done by mr-mas.com" End If End Sub مع تكرار السطرين الثالث والرابع مع كل نطاق له معادلة محتلفة رغم أني لا أميل أبدا إلى موضوع تحويل المعادلات إلى أكواد فهذا يستهلك موارد الجهاز فيما لا يفيد المستخدم ولا يحمي المعادلات بالتوفيق
  5. أخي الكريم ينبغي عليك أن تسأل مصمم البرنامج لأن المحدوف ويعطي خطأ ref بيانات من شيت محذوف به البيانات الرئيسية مثل القطاع والمعهد وهكذا بالتوفيق
  6. الحمد لله الذي وفقنا جميعا لهذا
  7. يمكنك استعمال هذا الكود لحذف أقدم التكرارات Sub DeleteOldestRepeated() lr = Cells(Rows.Count, 3).End(xlUp).Row For r = 2 To lr If Evaluate("=COUNTIF($C$2:$C$" & lr & ",C" & r & ")") > 1 Then For n = (r + 1) To lr If Range("c" & n).Value = Range("c" & r).Value Then If Range("b" & n).Value >= Range("b" & r).Value Then Rows(r & ":" & r).Delete Shift:=xlUp r = r - 1 Else Rows(n & ":" & n).Delete Shift:=xlUp End If End If 'Exit For Next n End If Next r MsgBox "Done by mr-mas.com" End Sub وإذا كانت احتمالات التكرارات مرتين فقط في الاسم الواحد فيمكن حذف علامة التعليق قبل exit for لتسريع الكود أكثر بالتوفيق
  8. حسب فهمي للمطلوب يمكنك استعمال هذا السطر لتنسيق قيمة الخلية وعرضها باثميم من المنازل العشرية Me("txtQty" & AD) = Format(Sheet1.Cells(i, 3), "0.00") ولا أدري ما سبب تكرار سطور الكود يكتفي بأول أربعة فقط Private Sub CommandButton1_Click() For i = 8 To 40 If Sheet1.Cells(i, 1) = Val(Me.TxtSearch) Then AD = AD + 1 Me("txtItem" & AD) = Sheet1.Cells(i, 2) Me("txtQty" & AD) = Format(Sheet1.Cells(i, 3), "0.00") Me("txtPrice" & AD) = Format(Sheet1.Cells(i, 4), "0.00") Me("txtTotal" & AD) = Sheet1.Cells(i, 5) End If Next i End Sub بالتوفيق
  9. المطلوب غير واضح لي بصورة كافية لكني أتوقع أن المطلوب في الشيت الرابع عمل بحث عن رقم العضو وجلب بياناته أفضل من تكرار نفس التصميم بعدد الأعضاء راجع هذا الملف ربما يكون المطلوب فقط يلزمك كتابة رقم العضو في الخلية J2 ولا أدري ما المطلوب من الشيت الثالث بالتوفيق 2023.xlsx
  10. وما الذي يمنع من تنفيذها بشكل آلي حلقة تكرارية لكود جميع الموظفين وداخلها فرز على هذا الكود ثم تصدير الصفحة النشطة إلى pdf وفي النهاية رسالة تمت المهمة بنجاح
  11. إذا كنت تقصد أن عدد الاحتياطي زاد عن الواحد في كل مجموعة في المادة الواحدة فهنا يجب أن تتغير المعادلة لأن المعادلة الأولى تجلب أول اسم أمامه ( ح ) فقط على العموم تم تعديل المعادلة في الجزء العلوي بحيث يتم سحبها أفقيا ورأسيا بسهولة بدلا من استعمال معادلة مختلفة لكل صف وإضافة معادلة الاحتياطي لأكثر من واحد يمكنك استعمال هذه المعادلة في الخلية C4 وسحبها أفقيا ورأسيا حتى K27 =IF(MOD(ROW(),2),INDEX(data!$C$19:$C$32,MATCH($B3,data!D$19:D$32,0)),INDEX(data!$C$4:$C$17,MATCH($B4,data!D$4:D$17,0))) وهذه معادلة الاحتياطي في الخلية D28 ويمكن سحبها أفقيا ورأسيا حتى K31 =IFERROR(INDEX(data!$C$4:$C$32,SMALL(IF(data!D$4:D$32=$B$28,ROW($1:$29)),ROW()-27)),"") بالتوفيق
  12. شكرا للكلماتك الطيبة في properties الخاص بها غير value إلى true
  13. لا يوجد في الكود شيء يخص طريقة البحث الكود للبحث بأول الخلية فقط للوصول للمطلوب يمكنك تغيير هذا السطر If Trim(c) Like TextBox28 & "*" Then إلى If Trim(c) Like IIf(Me.OptionButton2, "*", "") & TextBox28 & "*" Then وإضافة هذين الحدثين عند الضغط على طريقة البحث Private Sub OptionButton1_Click() TextBox28_Change End Sub Private Sub OptionButton2_Click() TextBox28_Change End Sub بالتوفيق
  14. الموضوع كما قلت حضرتك بسيط جدا ولا يحتاج استيراد ولا تصدير ولا معادلات فقط تقوم بتصفية filter الاسم المطلوب ثم طباعة على طابعة الويندوز pdf أو استعمال كود تصدير الشيت النشط إلى pdf ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "/" & Filename & ".pdf", , , False بالتوفيق
  15. منطقيا حضرتك لا تحتاج لمعادلة في هذه الحالة فصاحبا هذين الصفين لهما اسمان وكل لجانهما احتياطي لذا يلزمك كتابة اسمهما أسفل الاسمين الاحتياطي يدويا أو بمعادلة بسيطة مثل =sheet1!$c17 =sheet1!$c32 مع سحب المعادلة أفقيا بالتوفيق
  16. ولماذا حذفت الكود كله؟ يمكنك الاستفادة من هذا الموضوع في تشغيل الساعة مع القدرة على العمل في الملف بصورة طبيعية بالتوفيق
  17. حل جميل استاذ @ميدو63 رغم أأني أميل للاختصار أكثر وعدم اللخبطة في الترتيب بالتوفيق
  18. كما توقعت المشكلة في نوع بيانات الخلايا D2:G601 حيث أنها نص text وليست رقما number لذلك يجب تحديد النطاق المطلوب ثم الضغط على المثلث الأصفر الذي يظهر أنه يوجد خطأ في هذه الخلايا ثم اختيار تحويل إلى رقم convert to number بعدها أي معادلة سيتم استعمالها وسحبها لأسفل ستعمل بنجاح وهذا ملفك بعد تنفيذ هذه الخطوات بالتوفيق الافواج - Copie.xlsx
  19. يمكنك استعمال هذه المعادلة في الخلية H4 مع سحبها لأسفل =IF(IF(MOD(ROW(),3)=1,$H$1,IF(MOD(ROW(),3)=2,$H$2,$H$3))<>500,0,F4+G4) وتعني لو باقي قسمة رقم الصف الحالي على3 يساوي 1 يستعمل الخلية h1 ولو الباقي 2 يستعمل h2 وهكذا بالتوفيق
×
×
  • اضف...

Important Information