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

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

  1. Foksh

    Foksh

    أوفيسنا


    • نقاط

      16

    • Posts

      4480


  2. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      14

    • Posts

      13634


  3. منتصر الانسي

    منتصر الانسي

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


    • نقاط

      5

    • Posts

      1216


  4. عبدالله بشير عبدالله

Popular Content

Showing content with the highest reputation since 02/09/26 in all areas

  1. السلام عليكم وجدت لكم صيدا سمينا لمن يواجه صعوبة في استخدام شجرة الحسابات اسميتها الحرة .. لأنها لا تستخدم اداة ActiveX TreeView تعتبر مشكلة أداة ActiveX TreeView في الإصدارات الحديثة من Microsoft Access (خاصة مع ظهور النسخ 64-بت) من أكثر التحديات شيوعاً، لأن الأداة القديمة (MSCOMCTL.OCX) غير مستقرة، تسبب مشاكل في "المكتبات" (DLLs)، ولا تدعم بنية 64-بت بشكل أصيل. هذا هو الخيار "الاحترافي" حالياً. بدلاً من أداة خارجية، يتم استخدام وحدات نمطية (Class Modules) برمجها مطورون لتغيير شكل النماذج العادية لتشبه الشجرة تماماً باستخدام عناصر التحكم الأصلية (مثل الـ Labels والـ Textboxes) تعتبر أداة Jan Karel Pieterse (المعروفة بـ JKP TreeView) واحدة من أرقى الحلول البرمجية التي تعتمد على "الفئات" (Class Modules) لتعويض أداة ActiveX، لأنها لا تعتمد على ملفات خارجية، بل تُبنى بالكامل داخل كود VBA إليكم المثال العملي تم فيه إنشاء شجرة حسابات احترافية بدون الاعتماد على ActiveX ولمن أراد التوسع والاستفادة يوجد امثلة ومرفقات متنوعة مجانية خاصة بأكسس اصدارات قديمة وأكسل وورد .. في هذا الرابط Treeview 26-5.rar
    6 points
  2. عن تجربتي الشخصية سأتحدث . حيث قمت سابقاً بتنفيذ الفكرة لمشروع آخر ليرسل الإيميلات من بريده في Gmail إلى أي ايميل تريده ؛ دون إدخال أي وسيط أو موقع خارجي . حيث سيكون تعاملك مع خدمات جوجل مباشرة قمت بإنشاء جدول جديد باسم tbl_EmailSettings . ويحتوي الحقول التالية :- IDMail = حقل ترقيم تلقائي . SenderEmail = حقل نصي ، ويمثل أيميلك الذي تريد استخدامه كإيميل مرسل . SMTPServer = حقل نصي ، ويمثل الخدمة المستخدمة في Gmail لإرسال البريد الإلكتروني . وتكون عادة = smtp.gmail.com SMTPPort = حقل رقمي ، ويمثل المنفذ الذي سنستخدمه للإيميلات الصادرة . وهو عادة لـ Gmail يكون 465 . SMTPPassword = حقل نصي ، وهو الحقل المهم جداً هنا والذي ستكون قيمته كلمة مرور التطبيق الذي سنقوم بإنشائه من خلال بريدك الإلكتروني الذي سجلت به في الحقل SenderEmail . أما كيف نحصل عليه فسيكون الشرح تالياً . UseSSL = حقل من نوع Yes/No . وهو مهم إلى حد ما . والسبب أنه جميع خدمات البريد الحديثة (Gmail, Yahoo, Hotmail) تشترط وجود تشفير SSL . لذا فقيمته بالنسبة لك ستكون دائماً True . الآن كيف نحصل على SMTPPassword المقدم من Gmail ؟ إليك الطريقة خطوة بخطوة ببساطة . في متصفحك ، ادخل إلى ( إعدادات حساب Google ) . تحقق أولاً وقبل كل شيء من تفعيل ميزة ( التحقق بخطوتين ) أو ( 2-Step Verification ) في حسابك . ابحث في خانة البحث عن ( كلمة مرور التطبيق ) أو ( كلمات مرور التطبيقات )، او ( App Password ) ، حسب لغة الموقع لديك . ادخل كلمة المرور الخاصة بالإيميل الذي تريد استخدامه كإيميل مرسل . في خانة ( اسم التطبيق ) أو ( App Name ) ، أدخل اسم للتطبيق ، مثلاً ( SenderMailer ) . ثم انقر زر ( إنشاء أو Creat ) . الآن سيزودك الموقع بكلمة من 16 حرف ، انسخها والصقها في الحقل SMTPPassword . الآن في الجدول المخصص للأعدادات ، سيكون لديك الحقول المهمة وقيمها كالتالي :- SMTPServer = عنوان الخادم وهو smtp.gmail.com SMTPPort وهو المنفذ = 465 SMTPPassword = كلمة المرور التي حصلنا عليها من 16 حرف ( يفضل بدون مسافات ) UseSSL = نعم أو علامة صح SenderEmail = إيميلك الذي سجلت به والذي ستستخدمه للإرسال الآن في زر الإرسال المخصص لكل ايميل بشكل فردي ، سنستخدم الكود البسيط التالي :- Dim result As String Dim strRecipient As String Dim strMessageBody As String strRecipient = Trim(Nz(Me.B2.Value, "")) strMessageBody = Nz(Me.Fonda.Value, "") If strRecipient = "" Then MsgBox "يرجى إدخال إيميل المستلم أولاً", vbExclamation + vbMsgBoxRight, "" Me.B2.SetFocus Exit Sub End If result = SendSmartEmail(strRecipient, "رسالة تجريبية", strMessageBody) If result = "Success" Then MsgBox "تم الإرسال بنجاح", vbInformation + vbMsgBoxRight, "" Else MsgBox "فشل في الإرسال", vbCritical + vbMsgBoxRight, "خطأ" End If وفي زر الإرسال الجماعي ، سنستخدم الكود التالي :- Dim rs As DAO.Recordset Dim result As String Dim counter As Integer Dim strTo As String Dim strMsg As String Set rs = Me.RecordsetClone If rs.RecordCount = 0 Then MsgBox "لا توجد سجلات للإرسال إليها في هذا النموذج", vbInformation + vbMsgBoxRight, "" Exit Sub End If If MsgBox("هل أنت متأكد من إرسال إيميلات لجميع السجلات الحالية؟", vbQuestion + vbYesNo + vbMsgBoxRight, "تأكيد الإرسال") = vbNo Then Exit Sub counter = 0 rs.MoveFirst Do Until rs.EOF strTo = Nz(rs!Gmail, "") strMsg = Nz(rs!Fonda, "") If strTo <> "" Then result = SendSmartEmail(strTo, "تنبيه بريدي", strMsg) If result = "Success" Then counter = counter + 1 End If End If rs.MoveNext Loop MsgBox "تمت عملية الإرسال بنجاح" & vbCrLf & _ "عدد الإيميلات المرسلة: " & counter, vbInformation + vbMsgBoxRight, "" Set rs = Nothing وملاحظة بسيطة ، وهي تستطيع تغيير موضوع عنوان البريد الذي سيصل لأي شخص ترسل له ( بشكل منفرد ) بتغيير قيمة "رسالة تجريبية" داخل زر الإرسال . أو من خلال الزر المخصص للإرسال الجماعي بتغيير قيمة "تنبيه بريدي" ليكون هو العنوان لموضوع البريد . وهذا ملف تجريبي بعد الإضافات التي ذكرتها . فقط يرجى ملئ الجدول بالإيميل و كلمة المرور التي تتكون من 16 حرف فقط . Nouveau.zip الفكرة و المشاركة كانت تتبع الموضوع التالي هنا ، وتم فصلها لإفرادها وكي تعم الفائدة على من يمر باحثاً عن فكرة إرسال بريد من آكسيس دون قيود .
    4 points
  3. الفكرة الجديدة قيد التطوير في مراحلها الأخيرة
    4 points
  4. الطرح مبهم يجب عليك الشرح بتفصيل على النحو التالي : 1- نوع العمل او المشروع الذي تعمل عليه 2- نوع البيانات المدخلة بكل شيت 3- ما هي البيانات الثابتة تقريبا 4- ما هي البيانات المتجددة التي يتم ادخالها بانتظام 5- ارفاق الشيتات بلمف مضغوط بشرط ان تشتمل على بيانات حتى لو كانت هذه البيانات وهمية 6- ما المطلوب في المخرجات .. اي : ما التقارير التي تريد اخراجها وطباعتها هنا يمكن للاخوة هنا مساعدتك في بناء برنامجك
    2 points
  5. ولماذا لا نجمع بين مزايا كل حل كما بالمرفق هنا؟ ولكن لاأدري إذا ما كان ماكرو البيانات يندرج ضمن المحضورات المذكورة في التحدي Challange_01_03.accdb
    2 points
  6. شكرا تم الحل ج مساعدة.xlsm
    2 points
  7. 2 points
  8. وعليكم السلام ورحمة الله وبركاته أهلا بك أخي أسمح لي أن أقول لك وبكل احترام وتواضع السبب هو : أنت كتبت في الكود وقة5 بدون راء والصحيح ورقة5 بحرف الراء
    2 points
  9. السلام عليكم وتماشيا مع روح الشروط (وليس تماشيا مع الشروط 🙂 ) ، وهي ثغرة قانونية استندت عليها في المرفق 🙂 هممم ، اعتقد هذه العبارة ذو اكثر من تأويل ، فإذا استعملناها بحذافيرها ، فيمكن ان نعمل المطلوب ولكن الكود سيكون غير واضح بسبب إستعمال عدد كبير من iif في بعضها البعض !! ولذلك من مرفقات الشباب اعلاه ، ارى انهم لم يلتزموا بالعمل على مستوى إعدادات الجدول فقط ، وانما انتقلوا الى إعدادات الحقول ايضا 🙂 Challange_01_02.zip
    2 points
  10. وعليكم السلام ورحمة الله وبركاته نستخدم دالة Abs في VBA. هذه الدالة تقوم بتحويل أي رقم سالب إلى موجب مع تغيير اسماء التكست لديك TextBox3.Value = Abs(Val(TextBox1.Value) - Val(TextBox2.Value))
    2 points
  11. وهذي مشاركتي المتواضعة 🙂 التحدي 1 - التعامل مع الجداول وخصائصها - موسى.accdb
    2 points
  12. لديك مشكلة اساسية وهي ربط تاريخ الكمبيوتر بالتنفيذ يعني لا يمكن التنفيذ حتى تغير تاريخ الجهاز الى شهر 3 وهذا خطأ يجب معالجته حسب الطرق الصحيحة المتبعة وهذا ما سأقوم بتعديله لك مع الأخذ بالاحترازات اللازمة وبناء على هذا التعديل يجب التعامل مع القيم حسب تاريخ التنفيذ وتعديل جميع التواريخ في الكود بمعنى اليوم الموافق 15/2/2026 سوف اجري اقتطاع لشهر 3 فيجب ان يرصد وقت التنفيذ تاريخ اليوم في الجدول ويتم رصد تاريخ 1/3/2026 بمعنى انه يعتمد اليوم الأول من شهري 3 و 7 كتاريخ للدفع
    1 point
  13. الله يبارك في عمرك ويعطيك الصحة والعافية أخي الكريم
    1 point
  14. بعد تجربة الجزء الأول من المشروع ، تم الإرسال بنجاح ولله الحمد 👍🙂 وننتظر الجزء الثاني بشوق 😊👌
    1 point
  15. اعرض الملف أداة إنشاء مربعات التحرير والسرد المتتالية {سلسلة الأدوات المساعدة المخصصة} لا يخفى على أي شخص تعامل مع مربعات التحرير والسرد المتتالية مقدار العمل والوقت الذي يحتاجه في - تحديد معايير تصفية البيانات الخاصة بكل مربع تحرير وسرد وفقاً لما تم تحديده في المربعات التي تسبقه بناءً على مرجعية إسم مربع التحرير والنموذج - عند تغيير إسم النموذج قد يؤدي ذلك إلى ضرورة تعديل جملة الإستعلام الخاصة بكل مربعات التحرير والسرد - الأكواد التي يجب كتابتها لحدث بعد التحديث لكل مربع تحرير وسرد ليتم تصفية أي قيم في المربعات التالية وتحديث القوائم بناءً على ماسيتم إختياره هذا هو بالضبط ما ستقوم هذه الأداة بمعالجته وبطريقة سهلة للغاية فلن يتطلب الأمر إلى أي معرفة برمجية مجرد نسخ سطرين (سطرين فقط) وتعيين معايير تصفية بشكل بسيط كل مانحتاجه للتعرف على خطوات الإستفادة من الأداة سنجده في الملف المرفق أرجو أن يتم قراءة جميع الملاحظات بتمعن وفي حال وجود أي أسئلة أو إستفسارات فباب النقاش مفتوح تحياتي,,, صاحب الملف منتصر الانسي تمت الاضافه 02/10/26 الاقسام قسم الأكسيس  
    1 point
  16. اهاااا نعم هذا صحيح وهنا يكمن جمال ماتقوم به الأداة فهي تختصر الكثير من الجهد والوقت وتريل أي مخاوف من ظهور الأخطاء التي قد نتفاجأ بها نتيجة أننا قمنا ولأي سبب بتعديل بسيط في إسم النموذج أو إسم مربع التحرير الذي يعتمد عليه لتصفية مربع التحرير الذي يليه
    1 point
  17. مقصدي أن الطريقة التقليدية التي نستخدمها عادةً بوضع Me.Combo2.Requery في حدث AfterUpdate . ولكن بعد مراجعة الكلاس وتحفته الفنية ، لاحظت أنه يقوم بأكثر من مجرد Requery ؛ فهو يقوم بمسح القيم القديمة وبناء جملة SQL ديناميكية لفك الارتباط باسم النموذج .
    1 point
  18. وعليكم السلام ورحمة الله وبركاته .. جرب هذا التعديل أخي الفاضل ، لأنني أستخدم تطبيق واتس اب سطح المكتب ، وليس واتس اب ويب .. كود إرسال مرتبات.xlsm
    1 point
  19. .. ما شاء الله ، فكرة جميلة ونظيفة ولا تشوبها شائبة في التنفيذ . بس استخدام Requery الشيء الجميل في الموضوع هو أنك إذا أردت تغيير المنطق ، ففقط تغيره في مكان واحد وهو الكلاس ، وليس في 50 نموذجاً مثلاً . جزاك الله خيراً لهذه المشاركة الجميلة والقيمة ..
    1 point
  20. شكرا الف استاذنا المبدع الكريم على هذا الاثراء اداة جميلة احترافية تختصر الكثير من الوقت والجهد .. خاصة الأحداث الخاصة بالمربعات المعاناة .. هي في كثرة الحاجة اليها وتكرارها في كثير من النماذج
    1 point
  21. لا ابدا ليس هناك ضرر .. الاختصار والاحكام نلجأ اليه غالبا في حالات منها ان تكون داخل اجراء أو حدث واحد .. وتكون الاكواد فيه طويلة وكثيرة جدا ويمكن اختصارها الى الأفضل .. بشرط ان تكون افضل في السرعة والأداء او ربما عدة احداث طويلة ومكررة يمكن جمعها في دالة واحدة ومناداتها بسطر واحد والفائدة من هذه هي سهولة التعديل مستقبلا او التطوير حيث سيكون التعديل في مكان واحد بدلا اماكن عديدة متفرقة .
    1 point
  22. شكرا جزيلا استاذنا .. معلومة جديدة .. وحقيقة ليتك تفرد هذه المشاركة بموضوع وعنوان جديد يخصها لتفردها ومن اجل سهولة البحث والوصول اليها على فكرة الباسوورد 16 حرف هو المتبع الآن في مواقع بوابات رسائل الـــ sms من اجل ربط التطبيقات بالبوابة للارسال من خلالها ويسمونه Token
    1 point
  23. عفوا .. اقصد ان الدالة تقوم بحماية الحقول بينما هي محمية بالفعل لجعل الحقول قابلة للتحرير اعتقد ستصبح الدالة هكذا Private Sub Add_New_Record() Me.comresearch_01 = Null dateoftrans.Locked = False Me.stat.Locked = False Me.F_DATAILS.Locked = False DoCmd.GoToRecord , , acNewRec End Sub
    1 point
  24. حلو قوى و عجبتنى جدا نكهتك الفوكشية
    1 point
  25. وعليكم السلام ورحمة الله وبركاته هناك امر لم استوعبه في ملفك هل المعادلة في N1 تتعامل مع الحلية C2 فقط ام مع كل العمود C2:C اذا كانت مع كل العمود فيفضل كتابتها في N2 ثم تسحب الى اسقل حتى تتعامل كل حلية في C مع ما يقابلها في N اما اذا كانت المعاملة محدودة C2 مع N1 فقط جرب الملف المرفق ج مساعدة.xlsm
    1 point
  26. نعم من خلال المديول انا لم ارفع المرفقات كاملة هنا في المرفق تجد الاصدار 2000 treeviewaccess.zip
    1 point
  27. وعليكم السلام ورحمة الله وبركاته .. شكراً لك على الهدية القيمة .. وخطر ببالي سؤال يخص التصميم . بأي إصدار تم إنشاء قاعدة البيانات في أساسها ؟؟؟ أم هي الفكرة من خلال المديول فقط !!!! وأقصد تحديداً النموذج ufTreeview
    1 point
  28. وعليكم السلام اخوي ابوخليل مايكروسوفت اوقفت او في طريقها لإيقاف: عن الاكسس كائنات ActiveX والذي يشمل على سبيل المثال: شجرة الحسابات ، والباركود ، عن الوندوز كود VBscript والذي يشمل على سبيل المثال: VBScript RegExp libraries على ان توفر مايكروسوفت بديل لهذه الجزئية. وعليه محتاجين الى بدائل اخرى ، مثل ما تفضلت به هنا ، شكرا جزيلا 🙂
    1 point
  29. فكرة جميلة جداً تجميع بين عدم ظهور الشروط في خصائص الحقول + القوة والمتانة + دعمها للرسائل العربية
    1 point
  30. تفضل استاذ المرفق بعد التعديل بطلبك . حتى لو فُعّل الزر بالخطأ الكود في Click ما زال يمنع الحذف ← أمان مضاعف وتم العمل للعداد لازم توحد اسم رقم الحساب بالجدولان لاتنسى تمت الاجابة ليستفيد غيرك . ACC_2026-2.rar
    1 point
  31. استاذى العزيز / خليفة اشكرك اولا : لسرعة الرد اشكرك ثانيا : للعناية لوضع اجابة اعتقد انها مثالية و متكاملة و اكثر مما كنت اطمع و ينطبق عليك المثل ( اذا اطعمت ابشع ) فالشكر لايكفى كرم اخلاقك و علمك ربنا يزيدك من فضلك و لكن لااملك سوى كل الشكر و التقدير و الاحترام
    1 point
  32. تفضل استاذ @AMINYOUSIF المرفق بعد التعديل بطلبك حسب ما فهمت . ووافني بالرد . ACC_2026-1.rar
    1 point
  33. استاذى الفاضل اللى اتغير حجم الابقونة ولكن الخط صغيركما هو
    1 point
  34. جرب تطبيق الخطوات التالية 1 - أنقر بالزر الأيمن على جزء التنقل 2- من القائمة إختار View By أو عرض بـ (غير متأكد من الترجمة) 3- من القائمة الفرعية حدد Icon أو أيقونة بهذا ستحصل على أكبر حجم لعناصر جزء التنقل
    1 point
  35. 1 point
  36. وبما ان لكل عضو عدد 3 محاولات انا سوف أكتفى بمحاولة أخرى جداول مصنع تقنى - 2.accdb
    1 point
  37. حاولت بقدر المستطاع الموضوع صعب بدون اكواد جداول مصنع تقنى.accdb
    1 point
  38. السلام عليكم السبب هو وجود مسافات قبل الارقام وهذا يحدث عادة عند نسح ارقام ناتجة عن معادلات الحل كل القيم تتحول إلى نصوص (CStr) وتُزال الفراغات (Trim) وهذا يضمن التطابق حتى لو كانت القيم أرقام أو نصوص أو ناتجة عن معادلات. اليك الكود المعدل Sub تحويل_اللجان_الى_اسماء_Turbo() Dim ws As Worksheet: Set ws = ActiveSheet Dim r As Long, c As Long Dim lastRowMain As Long, lastRowSearch As Long Dim رقم_اللجنة As String, اسم_اللجنة As String, اسم_المراقب As String Dim فارق_الاعمدة As Long: فارق_الاعمدة = 12 Dim cell As Range lastRowSearch = ws.Cells(ws.Rows.Count, "N").End(xlUp).Row ws.Range("P3:X" & lastRowSearch).ClearContents lastRowMain = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row lastRowSearch = ws.Cells(ws.Rows.Count, "N").End(xlUp).Row For r = 3 To lastRowMain اسم_المراقب = Trim(CStr(ws.Cells(r, "B").Value)) For c = 4 To 12 رقم_اللجنة = Trim(CStr(ws.Cells(r, c).Value)) If رقم_اللجنة <> "" Then For Each cell In ws.Range("C3:C" & lastRowMain) If Trim(CStr(cell.Value)) = رقم_اللجنة Then اسم_اللجنة = Trim(CStr(ws.Cells(cell.Row, "B").Value)) Dim صف_المراقب As Range For Each صف_المراقب In ws.Range("N3:N" & lastRowSearch) If Trim(CStr(صف_المراقب.Value)) = اسم_المراقب Then ws.Cells(صف_المراقب.Row, c + فارق_الاعمدة).Value = اسم_اللجنة Exit For End If Next صف_المراقب Exit For End If Next cell End If Next c Next r End Sub
    1 point
  39. تفضل استاذ almarwny طلبك حسب مافهمت اليك الشرح والمرفق . ووافني بالرد . Almarwny.rar
    1 point
  40. السلام عليكم ورحمة الله وبركاته اقدم لكم شرح مبسط لطريقة بحث احترافيه في شيت اكسل رابط الفيديو لتحميل ملف العمل https://www.mediafire.com/file/4t7skm26bdj2mhk/salloum.xlsx/file
    1 point
  41. تفضل أخي الكريم المرفق التالي يمكنك في الكود تغيير مسار الملفات ، وتغيير النطاق المراد نسخه في كل الملفات يتم نسخ النطاق المراد بشكل أفقي كما أرفقت في مثالك Merge Files.rar
    1 point
  42. السلام عليكم اخي اريد ان انزع قيمة ناقص في الصفر حيث لا تظهر بلون الاحمر ويظهر الصفر بقيمة( - )فق حيث يضهر لون الاحمر في قيم الاعداد ناقصة فقط يظهر الاحمر
    0 points
  43. بسيطة بدون خصائص الحقول ولو من الجدول فقط يكون Table Validation Rule كالتالى : (DateDiff("yyyy",[DOB],Date())>=18 Or [DOB] Is Null) And ([HireDate]>=#1/1/2020# And [HireDate]<=Date() Or [HireDate] Is Null) And ([JobGrade] In ("A","B","C") Or [JobGrade] Is Null) And ([JobGrade]="A" And [Salary]<=10000 Or [JobGrade]="B" And [Salary]<=7000 Or [JobGrade]="C" And [Salary]<=5000 Or [Salary] Is Null) يكون Table Validation Text كالتالى : خطأ في الحفظ: - العمر <18 سنة - HireDate قبل 1/1/2020 أو مستقبلي - Salary > حد الدرجة (A:10000 B:7000 C:5000)
    0 points
×
×
  • اضف...

Important Information