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

أ / محمد صالح

أوفيسنا
  • Posts

    4,431
  • تاريخ الانضمام

  • Days Won

    191

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

  1. أشك في وجود كود vba خالص لهذه العملية لابد من وجود مكتبات مساعدة dll او ocx بالتوفيق
  2. أكواد 32بت لا تعمل على 64بت والعكس صحيح والصواب أن يجمع الكود بين النواتين #if vba7 then 64bit codes #else 32bit codes #end if والفرق بين الكودين وضع ptrsafe قبل function أو sub
  3. نفعنا الله جميعا بما علمنا وعلمنا ما ينفعنا بالتوفيق
  4. الحل من وجهة نظري هو حماية تركيب المصنف فلا يمكن للمستخدم تغيير اسماء الشيتات ولا ترتيبها Review ---> protect workbook ---> password ---> structure ---> OK وبالنسبة للتعبير عن الشيت فهناك 3 طرق أولها ترتيب الشيت sheets(1) وللشيت اسمان اسم ظاهر في التبويبات وهذا في الكود الذي يعبر عنه sheet1.name والاسم البرمجي وهو يظهر في مستكشف المشروع في شاشة vbe ويكون رمزه sheets("data").codename وهذا الاسم البرمجي codename هو الذي لا يتأثر بتغير ترتيب الشيت ولا تسميته ففي الصورة السابقة Name = Data Codename = Sheet1 index = 1 بالتوفيق
  5. وفيكم بارك الله الرسم البياني للفرع كله فعلا اعتمادا على جدول البيانات المجاور للرسم البياني (الموظفين ونسب تحقيق الأهداف لجميع المنتجات) المتبقي يفهم من نسبة تحقيق الهدف مثلا المحقق 10٪ فالمتبقي 90٪ وإذا أضفتها سيتضاعف عدد الأعمدة 20 موظف ضرب 2 عمود ضرب 5 منتجات = 200 عمود (كثير جدا) لذا أنصح بعمود النسبة فقط والباقي هو ما يكمل المائة (معروفة) لا أدري ما المقصود بإجمالي المحقق للفرع كله؟ وإذا كنت تريد عملها فأعتقد في رسم بياني آخر مستقل تكون بياناته اجمالي المحقق للفروع كلها إجمالا او لكل منتج على حده بالتوفيق
  6. الجزء الخاص بالتاريخ على افتراض انه في العمود D الذي يلي C بمقدار عمود 1 هو F.Offset(0, 1) = ComboBox2.Text ولتغييره للعمود A الذي يسبق C بمقدار 2 F.Offset(0, -2) = ComboBox2.Text لذلك جرب الكود كاملا Set ws = Sheets("اصناف") For Each F In ws.Range("c5:c5000") If F = ComboBox1.Text and F.Offset(0, -2) = ComboBox2.Text Then ws.Select F.Select Exit For End If Next F ActiveCell.Value = ComboBox1.Value ActiveCell.Offset(0, 4).Value = TextBox4 ActiveCell.Offset(0, 5).Value = TextBox5 ActiveCell.Offset(0, 6).Value = TextBox6 ActiveCell.Offset(0, 9).Value = TextBox7 ActiveCell.Offset(0, 10).Value = TextBox8 MsgBox "تم تعديل البيانات بنجاح" End Sub وكان ينبغي أن تتوصل لها وحدك بالتوفيق
  7. كان ينبغي تحديد موضع عمود التاريخ على فرض ان اسم الصنف في العمود C والتاريخ في العمود D Set ws = Sheets("اصناف") For Each F In ws.Range("c5:c5000") If F = ComboBox1.Text and F.Offset(0, 1) = ComboBox2.Text Then ws.Select F.Select Exit For End If Next F ActiveCell.Value = ComboBox1.Value ActiveCell.Offset(0, 4).Value = TextBox4 ActiveCell.Offset(0, 5).Value = TextBox5 ActiveCell.Offset(0, 6).Value = TextBox6 ActiveCell.Offset(0, 9).Value = TextBox7 ActiveCell.Offset(0, 10).Value = TextBox8 MsgBox "تم تعديل البيانات بنجاح" End Sub بالتوفيق
  8. لا طبعا ليست بسهولة الفرز في الشيت تحتاج الى اكواد كثيرة
  9. يمكنك تنفيذ هذا الكود ونفس الطريقة على الملف الآخر
  10. لا أعتقد وجود معادلة تقوم بهذا الدور لذلك يمكنك استعمال اكواد vba مع ملاحظة ان اختيار الاسم في شيت A يجب ان يكون من قائمة الاسماء في شيت B لضمان المطابقة تم وضع معادلات للعد وكود لجلب أيام العياب مجمعة بالتوفيق دمج أيام الغياب في خلية واحدة.xlsb
  11. جرب استعمال هذا الكود Sub masTar7eel() Application.ScreenUpdating = 0 Range("B2:B16").Copy Sheets("الشيت").Select lr = Cells(Rows.Count, 1).End(xlUp).Row + 1 Range("A" & lr).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True Application.CutCopyMode = 0 Range("A" & lr).Select Sheets("ادخال بيانات").Select Range("B2:B16").ClearContents Range("B2").Select Application.ScreenUpdating = 1 MsgBox "Done by mr-mas.com" End Sub وهو عبارة عن تسجيل ماكرو لنسخ الخلايا من الشيت الاول الى آخر صف في الشيت الثاني مع خيار اللصق transpose ولا تنس أن تحفظ الملف بامتداد يدعم الاكواد مثل xlsb بالتوفيق
  12. الكود يعمل بصورة جيدة بشرط ألا تكون بيانات العمود المطلوب فارغة في شيت البيانات الأساسية جرب أن تكتب مسافة فقط في اول خلية في عمود تاريخ العودة وعمود ملاحظات في شيت البيانات الأساسية وقم بالضغط على الزر لن تجد أي خطأ
  13. عذرا أخي الكريم الهدف من المنتدى تعليمي وليس عمل برامج الناس جاهزة وإذا كان لديك الملف والكود صحيحين ثم أجريت تغييرا في مواضع الأعمدة ولا تستطيع تغيير هذه الأماكن في الكود فأنت لم تتعلم بل استخدمت الكود جاهزا خالص دعواتي بأن يفتح الله عليك وتستطيع تعديل الكود
  14. إن شاء الله تفيدك هذه المحاولة يمكنك تغيير خصائص الرسم البياني بالضغط في أي مكان فارغ فيه ثم الضغط على زر القمع واختيار المنتجات التي تريدها والموظفين الذين تريدهم بالتوفيق رسم بياني لنسب الأهداف.xlsx
  15. يمكنك استعمال هذا الإجراء وربطه بشكل أو زر في شيت سجل قيد بيانات Sub mas_getdata() Dim sh As Worksheet, n As Long, lr As Long, lr2 As Long Set sh = Sheets("data") lr = sh.Cells(Rows.Count, 2).End(xlUp).Row Application.ScreenUpdating = 0 Range("b17:s218").ClearContents For n = 9 To lr If sh.Range("f" & n) = [e2] And sh.Range("g" & n) = [e3] Then lr2 = Cells(Rows.Count, 2).End(xlUp).Row + 1 lr2 = IIf(lr2 < 17, 17, lr2) For c = 2 To 19 Cells(lr2, c) = sh.Cells(n, Cells(1, c)) Next c End If Next n Application.ScreenUpdating = 1 MsgBox "Done by mr-mas.com" End Sub ملحوظة: تم استخدام الأرقام في الصف الأول في الكود فلا يجب مسحها يمكن إخفاء الصف بالتوفيق
  16. ربما يكون هذا هو المطلوب .. تم إضافة تاريخ السداد المبكر في الخلية L15 تعديل معادلة العمود B & C تعديل معادلة الأشهر المسددة .. بالتوفيق ‫المثال ء _2.xlsm
  17. ظننت الأمر أكبر من ذلك من الواضح أن ملف msi المرفق ليس إلا عملية إعادة تسمية لقاعدة البيانات accdb كما اقترح أ / @أبو إبراهيم الغامدي لأنه عند فك تجميع الملف بكود فك تجميع ملفات msi في الدوس ظهرت هذه الرسالة وهذا يعني أنه ليس ملف msi صحيح ولا يحتوي على تحزيم لمجموعة من الملفات داخله بالتوفيق
  18. لدي أوفيس 365 وأستعمل هذه الطريقة تنجح مع الملفات التي تم تصديرها من الوورد غير ذلك نسبة النجاح لا تتعدى 60٪
  19. يمكنك استعمال هذا الكود textbox1.value = sheets("ليذجر").cells(rows.count,5).end(xlup).value بالتوفيق
  20. انا شخصيا أفضل النسخة الإنجليزية لأن معرفتها تجعلك تكتسب لعة اولا وتقل نسبة الخطأ مع أسماء العناصر باللغة الإنجليزية بالإضافة إلى أن جميع الأوامر مصممة للنسخة الإنجليزية بمعنى toleft في اللغة الإنجليزية يتجه ناحية اليسار بينما في النسخة العربية إلى اليمين ولذلك افضل ان أقول قبل المؤشر او بعده َلا نستخدم يمين او يسار وغيرها الكثير من الأسباب بالتوفيق
  21. أخي الكريم الحلبي يبدو أنك لم تقرأ هذا السطر جيدا يجب كتابة اسم قاعدة البيانات وامتداده في المتغير myfile يبدو أنك لم تقم بهذه الخطوة
  22. المشكلة في هذا السطر في حدث بعد تحديث مربع النص Me.TextBox2 = Application.VLookup(Val(Me.TextBox1), Sheets("cod").Range("c5:e5000"), 2, 0) حيث يتم البحث حتى صف 5000 والرقم المطلوب في الصف 7152 لذلك يلزمك زيادة صف النهاية إلى 10000 مثلا
  23. ربما تكون مشكلة في الصلاحيات وخصوصا إذا كان مجلد تثبيت xampp في قرص النظام C أو يكون برنامج آخر يستعمل المنفذ 80 الخاص ب أباتشي لذلك أنصح بإعادة تثبيت البرنامج واختيار بارتيشن آخر غير سي كحل أول
  24. أعتقد لا يمكن معرفة الملفات داخل الامتداد msi إلا بعد فك تجميعه باستخدام أوامر في الدوس CMD لو أمكن إرفاق ملف msi والملف الذي تريد وضع الكود فيه للتجربة عليه
×
×
  • اضف...

Important Information