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

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

  1. Ali Mohamed Ali

    Ali Mohamed Ali

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


    • نقاط

      29

    • Posts

      11,630


  2. حسين مامون

    حسين مامون

    الخبراء


    • نقاط

      10

    • Posts

      1,284


  3. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      7

    • Posts

      9,814


  4. Moosak

    Moosak

    أوفيسنا


    • نقاط

      4

    • Posts

      1,997


Popular Content

Showing content with the highest reputation on 05 ماي, 2022 in all areas

  1. تفضل هناك العديد من الأكواد لتنفيذ طلبك منها : Sub PDF_Show() ActiveWorkbook.FollowHyperlink "C:\Users\Ali\Downloads\ÚÞÏ ÇáÊÃÓíÓ-ãÍæá.pdf" 'يجب عليك تغيير وتعديل عنوان ومكان ملف البى دى اف بما يتوافق عندك بين علامتين التنصيص End Sub وهذا كود ثانى Sub OpenPDF() Dim pdf As String On Error Resume Next pdf = "C:\Users\Ali\Downloads\عقد التأسيس-محول.pdf" 'يجب عليك تغيير وتعديل عنوان ومكان ملف البى دى اف بما يتوافق عندك بين علامتين التنصيص ActiveWorkbook.FollowHyperlink pdf End Sub واليك الملف اوراق الشركة.xlsm
    6 points
  2. وهذه تجربتي مع أخي المهندس قاسم @Eng.Qassim ومستندا على ملفه 🙂 طبعا سوف نحتاج لجدول خاص بقائمة الأسماء فيه عمودين 1 - الاسم أو القبيلة(اسم العائلة) و 2- النوع وهو حقل رقمي أن كان اسم فالنوع 1 وإن كانت قبيلة فالنوع 2 نحتاجه للفصل بين الأسماء . بعدها قمت بتطوير دالة تقوم بفحص كلمات الفقرة كلمة كلمة وتقارنها بالأسماء الموجودة في الجدول ، فإن عثرت على الاسم في الجدول تختزله من الفقرة وتضيفه إلى المصفوفة ثم تنتقل للكلمة التالية وهكذا .. 🙂 وهذه هي الدالة : Public Function LoopThroughText(TXT As String) As String Dim LookInHere As String Dim Counter As Integer Dim SplitCatcher As Variant Dim Finaltxt As String LookInHere = TXT SplitCatcher = Split(LookInHere, " ") For Counter = 0 To UBound(SplitCatcher) If SplitCatcher(Counter) = DLookup("[PerName]", "[NamesT]", "[PerName] Like '*" & SplitCatcher(Counter) & "*'") Then If DLookup("[Type]", "[NamesT]", "[PerName] Like '*" & SplitCatcher(Counter) & "*'") = 1 Then Finaltxt = Finaltxt & " " & SplitCatcher(Counter) Else Finaltxt = Finaltxt & " " & SplitCatcher(Counter) & "،" End If End If Next LoopThroughText = Finaltxt End Function بعدها تنادي على الدالة في استعلام أو نموذج كما تشاء هكذا : LoopThroughText(TXT) AAA.accdb
    3 points
  3. السلام عليكم 🙂 علاقة الجدولين عندك: . 1. تفرض ان جميع بيانات الحقل ProductBarcode يجب ان تكون موجودة مسبقا في الحقل Items_Code ، 2. ولكنك لم تفرض تغيير/تحديث بيانات الحقل ProductBarcode عندما تتغير/تتحدث بيانات الحقل Items_Code ، 3. ولم تفرض حذف بيانات الحقل ProductBarcode عندما تحذف بيانات الحقل Items_Code ، لذلك ، فلما يكون عندك سجل في الجدول inventory Transaction ، ولا توجد بيانات في الحقل ProductBarcode : أ. فهذا لا يعني ان الحقل ProductBarcode لا توجد به قيمة ، بل ان قيمته Null او لا شيء (وهي قيمة في وجهة نظر قاعدة البيانات) ، ب. ولما تُدخل سجل جديد في الجدول Items ، وتترك الحقل item_code بدون قيمة (بل ان قيمته Null او لا شيء في وجهة نظر قاعدة البيانات) ، ج. وبسبب علاقة الجدولين ، تتم مقارنة بيانات الحقلين ، ويكونان متساويين ، ويكون هناك ارتباط بينهم ، د. فقيمة هذا الحقل لا يمكن تغييرها في اي من الجدولين ، لأنك لم تطلب ذلك في العلاقات (انظر رقم 2 اعلاه) (جرب واعمل سجل فارغ في الجدولين ، وبدون اي قيمة في الحقلين ، ثم حاول تغيير قيمة productBarcode او قيمة Item_Code ، فستحصل على نفس رسالة الخطأ التي كانت تأتيك سابقا. اذن الحل: اولا: عدم ترك اي سجل في الجدولين، تكون قيمة الحقلين اعلاه فارغة 🙂 ثانيا: الحل الآخر هو تغيير نوع العلاقة ، بحيث تسمح لتغيير/تحديث بيانات الحقلين: . وبهذه الطريقة ، سيمكنك مواصلة العمل في برنامجك كما هو ، ولكن انتبه ، وبسبب العلاقة الجديدة ، فلما تُدخل قيمة في الحقل الفارغ items_code ، فستقوم بتعبئة جميع الحقول الفارغة في ProductBarcode ، وهذه كارثة !! . في الواقع الحل الوحيد هو اولا ، لأنه حتى ولو انك تستطيع ان تسيطر على الحل ثانيا ، ولكن اذا استعملت البرنامج في شبكة ولأكثر من مستخدم ، فستتلخبط الارقام 🙂 هذا بالنسبة للعلاقة ، والآن فلنرى لماذا تكون لدينا حقول فارغة : الكود خلف زر الحفظ هو السبب ، فلم تكن تحفظ رقم الباركود مع السجل ، لهذا السبب ، يجب حذف زر "انشاء باركود" ، وضم كوده الى كود الحفظ ، ليصبح كود زر الحفظ كالتالي: Private Sub P4_Click() [Items_Code] = DLookup("[باركود]", "barcodeOnSName", "[Items_ID]=[Item_Supplier_ID]") DoCmd.RunCommand acCmdSaveRecord '<== احفظ البيانات فقط 'DoCmd.Save <== هذا الامر معناه احفظ تصميم النموذج، وليس حفظ البيانات 'DoCmd.RefreshRecord <== يمكن استعمال هذا الامر للحفظ ، ولكنه يحفظ البيانات ، ثم يقرأها من الجدول مرة اخرى ، لهذا السبب يحدث وميض في النموذج Ms$ = "تم التسجيل الصنف بنجاح" Ti$ = "رسالة تنبيه اضافة صنف جديد" Re = MsgBox(Ms$, 64, Ti$) End Sub جعفر
    3 points
  4. السلام عليكم 🙂 اذا عملنا برنامج على الاكسس 32بت ، وفيه مكتبات الوندوز الـ 32بت (لاحظ الرقم 32 في اسم المكتبة: comdlg32.dll) ، ثم شغلنا البرنامج على اكسس 64بت ، فنحصل على هذا الخطأ : . يوجد ملف في موقع مايكروسوف (مرفق نسخة Win32API_PtrSafe.zip) ، وفيه طريقة عمل مناداة النواتين : https://www.microsoft.com/en-us/download/details.aspx?id=9970 وتوجد مواقع مجهزة الكود للنواتين ، مثل (فقط ابحث عن الدالة ، واعمل نسخ/لصق للكود) : http://www.jkp-ads.com/articles/apideclarations.asp ------------------------------------------------------------------------------------------------------------------ ولكني هنا سأناقش كيف يمكننا تعديل المكتبة بدون الرجوع لهذه الروابط (للأسف ، سنضطر للرجوع لهذه الروابط لبعض المكتبات) !! والدوال التي استعملها هنا ، هي كأمثلة فقط ، والطريقة التي سنعمل بها هي ، ان نضع برنامج 32بت فيه الدالة ، ثم نفتح البرنامج بالاكسس 64بت ، ونبدأ نلاحق الاخطاء ونصلحها. وهناك 3 احتمالات فقط ، وسنناقشها جميعا ان شاء الله 🙂 الخطوة الاولى والاهم هي اضافة كلمة PtrSafe بعد كلمة Declare ، للنواتين 32بت و 64بت. أ. الدالة : Sleep نناديها بنواة 32بت هكذا : Private Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) وهنا مثال لعملها : 1.Sleep.32bits.accdb.zip عندنا الطرق التالية (وجميعها تعمل وصحيحة) لنبدا العمل لجعل المكتبة تعمل على النواتين 32بت و64بت (وستكون طريقة عملنا بأحد هذه الطرق لجميع المكتبات) : نلاحظ ان الفرق بين كود 32بت (اعلاه) ، واول كود 64بت (ادناه) هو اضافة كلمة PtrSafe بعد كلمة Declare ، والتي يقبلها نظام 32بت كذلك ، وفي الطرق الثلاثة التالية ، نستخدم نفس الكود رقم 1 ، ولكننا نغلفه بالامر IF# ، ولهذا المثال ، سوف استخدم الطريقة رقم 3 : '1 'Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '2 '#If VBA7 Then ' Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#Else ' Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#End If '3 #If VBA7 And Win64 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #Else Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) #End If '4 '#If Win64 Then ' Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#Else ' Public Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long) '#End If . ولكن ، لما نفتح الكود في الاكسس 64بت ، نلاحظ انه جعل كود 32بت باللون الاحمر : . على الرغم من البرنامج عمل لنا هذا السطر باللون الاحمر ، إلا ان الكود يعمل بطريقة صحيحة ، فلا تهتم به ، وبعد كل خطوة نعملها ، يجب ان نعمل Compile : حتى نعرف الخطأ التالي ، ونعدل عليه 🙂 ولما ما نحصل على خطأ ، فهنا نبدأ بتجربة البرنامج (على والاكسس 64بت ، والاكسس 32بت) ، حتى نتأكد بأنه يعمل بالطريقة الصحيحة ، والحمدلله ، هذه الدالة اصبحت جاهزة للعمل بالنواتين بهذا التغيير ، وتم تجربة الملف المرفق على النواتين🙂 وهذه النسخة بعد تحديثها للعمل على النواتين 32بت و64بت : 1.Sleep.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ ب. الدوال: GetSystemDirectory ، GetWindowsDirectory ، GetTempDir نواة 32بت : Private Declare Function apiGetSystemDirectory& Lib "kernel32" _ Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare Function apiGetWindowsDirectory& Lib "kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare Function apiGetTempDir Lib "kernel32" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long والبرنامج : 2.System_Directories.32bits.accdb.zip 64بت، خطوات التعديل ، بإضافة PtrSafe فقط: Private Declare PtrSafe Function apiGetSystemDirectory& Lib "kernel32" _ Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare PtrSafe Function apiGetWindowsDirectory& Lib "kernel32" _ Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) Private Declare PtrSafe Function apiGetTempDir Lib "kernel32" _ Alias "GetTempPathA" (ByVal nBufferLength As Long, _ ByVal lpBuffer As String) As Long وعمل البرنامج بشكل صحيح للنواتين : 2.System_Directories.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ ج. الدالة: EnumFontFamilies عرض الخطوط fornts في مربع تحرير وسرد في الاكسس - قسم الأكسيس Access - أوفيسنا (officena.net) لأخونا @kanory 🙂 32بت : Private Declare Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, lParam As Any) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Declare Function GetFocus Lib "user32" () As Long والبرنامج: 4.Kan_Fonts.32bits.accdb.zip 64بت، خطوات التعديل ، بإضافة PtrSafe فقط: Private Declare PtrSafe Function EnumFontFamilies Lib "gdi32" Alias "EnumFontFamiliesA" (ByVal hdc As Long, ByVal lpszFamily As String, ByVal lpEnumFontFamProc As Long, lParam As Any) As Long Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Declare PtrSafe Function GetFocus Lib "user32" () As Long - لما نعمل Compile نحصل على الخطأ في السطر التالي: . اذن الخطأ في المتغير الثالث من الدالة EnumFontFamilies ، والذي نوعه Long ، فيجب تغييره في الدالة الى LongPtr ، الخطوة الثانية تغيير النوع Long الى LongPtr في الدالة وطبعا اذا عملنا التغيير على السطر اعلاه، فالنواة 32بت ستعطيك خطأ هنا ، لذا يجب تغليف الدالة بالامر IF# ، هكذا : . وعند عمل Compile مرة اخرى ، لا نحصل على خطأ ، والبرنامج يعمل بطريقة صحيحة ، البرنامج يعمل بطريقة صحيحة : 4.Kan_Fonts.64bits.accdb.zip ------------------------------------------------------------------------------------------------------ د. دعوة لتجربة الاصدار الثالث من برنامج القران الكريم - صفحه 2 - قسم الأكسيس Access - أوفيسنا (officena.net) برنامج الذكر الحكيم لأخونا @ابا جودى 🙂 برنامج 32بت: 5.الذكر الحكيم V. 3.0.2.32bits.mdb.zip وقبل تشغيله على 64بت ، نضيف الامر PtrSafe الى جميع الدوال ، سواء لنواة 32بت او 64بت (ومنها تم عمله) ، ومنهم : Private Declare Sub ChooseColor Lib "msaccess.exe" Alias "#53" (ByVal hwnd As Long, clr As Long) '---color Picer الى Private Declare PtrSafe Sub ChooseColor Lib "msaccess.exe" Alias "#53" (ByVal hwnd As Long, clr As Long) '---color Picer والنتيجة تمام : 5.الذكر الحكيم V. 3.0.2.64bits.mdb.zip ------------------------------------------------------------------------------------------------------ هـ. عندما يعطي برنامج الاكسس اخطاء - النسخة رقم 3 - قسم الأكسيس Access - أوفيسنا (officena.net) مع ان الوحدة النمطية Shell_n_Wait تم اخذها من هذا الموقع : https://github.com/xxdoc/vb6-Shell-Wait/blob/master/Shell %26 Wait v2/modShellWait.bas والتي تم عملها للنواتين 32بت و64بت ، ولكن لايزال البرنامج يعطي اخطاء في بيئة 64بت ، فنفتحة في برنامج 64بت ، نضيف الامر PtrSafe الى جميع الدوال ، ونعمل Compile ، وجدنا خطأ ، ونلاحظ اننا ننادي الدالة MoveWindow والتي تعطي قيمتها الى المتغير retval : . والآن لنرى الدالة نفسها ، ولكن الدالة جاهزة من الاصل للنواة 64بت ، ولا تحتاج الى تعديل : . وبعد التمعن ، نرى ان الخطأ موجود في نوع المتغير retval ، حيث اننا اعلنا انه Long ، بينما في بيئة 64بت نلاحظ انه LongPtr ، فالحل يكون ، اما ان نعمل IF# في الكود الاول ، واما ان نوقف الاعلان في الكود الاول ، ونضيفه في الكود الثاني ، كل حسب نوعه ، وانا سأعمل المقترح الثاني: #If VBA7 Then Declare PtrSafe Function MoveWindow Lib "User32.dll" (ByVal HWnd As LongPtr, ByVal X As LongPtr, ByVal Y As LongPtr, ByVal nWidth As LongPtr, _ ByVal nHeight As LongPtr, ByVal bRepaint As LongPtr) As LongPtr Public retval As LongPtr #Else Declare Function MoveWindow Lib "User32.dll" (ByVal HWnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal bRepaint As Long) As Long Public retval As Long #End If . نعمل Compile مرة اخرى ، لنحصل على الخطأ التالي: . والدوال: . فالحل هو ان نغلف الدوال بالامر IF# ، ونجعل بيئة 64بت ان يكون LongPtr ، فقط للمتغير الاول لهذه الدالة ، . نعمل Compile مرة اخرى ، لنحصل على الخطأ التالي: . والتعديل : . وهكذا الى بقية الاخطاء المشابهة ..... الخطأ التالي ، والغير عن الاخطاء اعلاه : . بالبحث ، لا نجد له دالة ، وانما نجد انه تم الاعلان عنه: . فيجب حذفه من هذا الاعلان ، وإضافته الى التغليف IF# ، فيكون اعلاه للبيئة 32بت ، واما للنواة 64بت فيكون LongPtr ، وبعد جميع التعديلات ، تكون النسخة تعمل على النواتين ، كما في المرفق: عندما يعطي برنامج الاكسس اخطاء - النسخة رقم 4 + عمل نسخ احتياطية - قسم الأكسيس Access - أوفيسنا (officena.net) ------------------------------------------------------------------------------------------------------ واخيرا: و. دالة فتح نافذة اختيار/حفظ الملف: GetOpenFileName و GetSaveFileName والتعديل على هذه الدوال لا يعتمد على التغليف IF# ، وجعل الاعلان عن المتغير فيه ، ونما نحتاج الى تغيير Len الى LenB ، ونحتاج الى تعديل هذه الجزئية كذلك: . وهذا الملف للنواتين: 9.Allow_ByPass_Key.64bits.mdb.zip بهذه الطرق ، نستطيع ان نحول برامجنا لتعمل على نواتي اكسس 32بت و64بت 🙂 الموضوع فني بحت ، وتحتاج ان يكون عندك نواتي اكسس ، حتى تعدل على النواتين ، ثم تجربهم الاثنين 🙂 ------------------------------------------------------ وهناك طريقة ثانية ، اعتقد بأنها اسهل واستعملها دائما : جعفر 1.Sleep.64bits.accdb.zip 1.Sleep.32bits.accdb.zip Win32API_PtrSafe.zip
    2 points
  5. لا يمكن استخدام معادلة subtotoal لعد النصوص بدون فراغات الا بهذه الطريقة =SUBTOTAL(3,$E$1:$E$12)-COUNTBLANK($E$1:$E$12) أو بهذه المعادلة =SUMPRODUCT(SUBTOTAL(3,OFFSET($E$1:$E$12,ROW($E$1:$E$12)-MIN(ROW($E$1:$E$12)),,1))*($E$1:$E$12<>"")) او استخدام هذه المعادلة مباشرة وشكراً وبكده يجب غلق المشاركة =SUMPRODUCT(--(LEN($E$1:$E$12)>0)) خلايا فارغة1.xlsx
    2 points
  6. وانا كذلك اوافق اخي واستاذي @احمد الفلاحجي الفرق بين 7-9 الي 30-9 سيتم حسابه بالشهور بالتأكيد ولكن تلك الفترة لم تكتمل 30 يوم لذلك لم يتم حسابها شهرا كاملا حسب المعادلة وحسب العرف فالفترة عبارة عن 23 يوم فقط جرب زيادة 7 ايام لشهر 10 وستجد ان الناتج اصبح 88 اسبوع و 1 شهر. جرب هذا المرفق قمت بالتعديل علي الدالة واصبحت الآن تعمل داخل الاستعلام بدون وسيط وابقيت علي الدالة القديمة لتري الفرق جرب ووافنا بالنتائج Database1.rar
    2 points
  7. بالنسبة للعد يمكنك استعمال هذه =COUNT(E1:E12) الطلب الثاني لم اتوصل بما تريد باستخدام التنسيق الشرطي ربما تكون فكرة اخرى من احد الاساتذة
    2 points
  8. بعد ادن استادي Ali Mohamed Ali واتراء للموضوع هذه طريق اخرئ 1- حمل الملف وفك الضغط 2 بعد فتح ملف اكسيل حدد اسم ملف بدف واضغط الزر ملاحظة: يجب ان تخزن الملفات ب د ف في نفس الفولدر"oqoud" مع ملف اكسيل و اسمارها ايضا في الصفحة كما في المرفق oqoud.rar
    2 points
  9. 2 points
  10. وعليكم السلام 🙂 غالبا هي مشكلة في اعدادات لغة unicode الوندوز . فإذا كان برنامجك بالعربي ، فاختار احد الدول العربية ، واذا كان البرنامج بالفرنسي ، فاختار فرنسا ، وهكذا ... جعفر
    2 points
  11. بعد اذن الاستاذ محسن واتراء للموضوع طباعة نمودج1 Option Explicit Sub printCART() Dim WS As Worksheet: Set WS = Sheets("Feuil1") Dim WS1 As Worksheet: Set WS1 = Sheets("نموج1") Dim lr, x Dim rng1, rng2: Set rng1 = WS1.Range("d2:f22"): Set rng2 = WS1.Range("j2:l22") Dim C1, C2, C3, C4 Set C1 = WS1.Range("d2"): Set C2 = WS1.Range("d13") Set C3 = WS1.Range("j2"): Set C4 = WS1.Range("j13") Application.ScreenUpdating = False lr = WS.Cells(Rows.Count, "b").End(xlUp).Row rng1.ClearContents rng2.ClearContents If MsgBox("هل تريد طباعة المحتوى", vbInformation + vbYesNo) = vbYes Then For x = 2 To lr If C1 = "" Then WS1.[d2] = WS.Cells(x, 2) WS1.[d4] = WS.Cells(x, 3) WS1.[d6] = WS.Cells(x, 4) WS1.[d8] = WS.Cells(x, 5) WS1.[d10] = WS.Cells(x, 6) GoTo 1 End If If C2 = "" Then WS1.[d13] = WS.Cells(x, 2) WS1.[d15] = WS.Cells(x, 3) WS1.[d17] = WS.Cells(x, 4) WS1.[d19] = WS.Cells(x, 5) WS1.[d21] = WS.Cells(x, 6) GoTo 1 End If If C3 = "" Then WS1.[j2] = WS.Cells(x, 2) WS1.[j4] = WS.Cells(x, 3) WS1.[j6] = WS.Cells(x, 4) WS1.[j8] = WS.Cells(x, 5) WS1.[j10] = WS.Cells(x, 6) GoTo 1 End If If C4 = "" Then WS1.[j13] = WS.Cells(x, 2) WS1.[j15] = WS.Cells(x, 3) WS1.[j17] = WS.Cells(x, 4) WS1.[j19] = WS.Cells(x, 5) WS1.[j21] = WS.Cells(x, 6) WS1.Range("a1:l24").PrintOut: rng1.ClearContents: rng2.ClearContents GoTo 1 End If 1: Next x If C1 > 0 Or C2 > 0 Or C3 > 0 Or C4 > 0 Then WS1.Range("a1:l24").PrintOut End If End If Application.ScreenUpdating = True End Sub طباعة اللاصقات1.xlsm
    2 points
  12. وعليكم السلام-فقط عليك استخداك هذا الكود Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, Range("E5:AB80")) Is Nothing Then Range("A" & Target.Row) = Date End If End Sub Ech1.xlsm
    2 points
  13. اعرض الملف الكاتب الذكي لدوال المجال :::: Dloockup وأخواتها 😊 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته يسرني اليوم أن أقدم لكم هذه الهدية المتميزة والرائعة 😊 ( الكاتب الذكي الآلي لدوال المجال في أكسس ) Dloockup, DCount, DMax, DMin, Dfirst, DLast , DSum, DAvg هذه الأسطورة هي عبارة عن أداة صممتها في أكسس ( بفضل الله وحمده ) تقوم بكتابة دوال المجال نيابة عنك بشكل آلي .. وتعطيك النتيجة بشكل مباشر 😉👌🏼 لن يخطيء أحد بعد اليوم في كتابة جملة هذه الدوال إن شاء الله 😁 كل ما عليك فعله هو استيراد هذه الأداة لبرنامجك ثم اختيار الجدول أو الاستعلام المطلوب والحقل المراد وبعدها سترى العجب العجاب 🙂 ✨ ومن مزاياها :✨ 1 - تسهل عليك كتابة أسماء الجداول والحقول ( فقط تختارها من القائمة المنسدلة ) . 2- يحل مشكلة تداخل النصوص عند استخدامها مع الجداول والحقول المكتوبة باللغة العربية . 3- تفحص لك النتيجة مباشرة للتأكد من أنك ستحصل على البيانات التي تريدها . 4 - سهلة الاستخدام فقط اتبع الخطوات الموضحة وتأكد من اختيار نوع البيانات الصحيح . 5 - يمكنك عمل دالة بأربعة 4 معايير بكل سهولة ويسر . 6 - يمكنك عمل تعديلاتك الخاصة على الدالة مباشرة وفحص النتيجة مباشرة بعد التعديل على النتيجة النهائية . 7 - إمكانية الحصول على الصيغة الخاصة بمحرر الأكواد VBA أو الصيغة المستخدمة في الاستعلامات ومنشيء التعبير . 8- إمكانية استخدام الأداة بشكل مستقل من غير الحاجة لنقلها إلى برنامجك . 9- وغيرها الكثير مما سيفتح الله عليكم اكتشافه بأنفسكم إن شاء الله 😅 طريقة الاستخدام : سهلة يسيرة بحمد الله .. فقط قم بسحب النموذج المسمى SmartDomainFunctionsBuilder_F إلى برنامجك عن طريق السحب والإفلات .. ثم قم بفتح النموذج عندك وسوف يقوم هو آليا بالتعرف على الجداول والاستعلامات الخاصة ببرنامجك بدون الحاجة إلى جهد يذكر 🙂 ( مع إمكانية استخدام الأداة بشكل مستقل من غير الحاجة لنقلها لبرنامجك ولكنك ستفقد الكثير من المميزات 😉 ) الأداة تم عمل الكثير من التجارب عليها وتم تلافي العديد من الأخطاء وإصلاحها بحمد الله وفضله... ولكن لا زلت لا أستغني عن آراءكم وملاحظاتكم من خلال استخدامكم لها 😉 الشرح بالتفصيل : 🙂 وهنا قمت بشرح الأداة بشكل مفصل نوعا ما في مقطع فيديو مدته نصف ساعة تقريبا : وأهم من الأداة نفسها 😉 لا تنسوني من صالح دعائكم لي ولوالدي .. ولا تحرموني من آرائكم ومقترحاتكم ونصحكم وإرشادكم 🙂 أخوكم ومحبكم موسى الكلباني 😊 صاحب الملف Moosak تمت الاضافه 05 ماي, 2022 الاقسام قسم الأكسيس  
    1 point
  14. سألني صديق عن اعداد ماكرو يساعده فى توفير وقت عدة جمل يحتاج لكتابتها كثيرا فى الوورد واول ما خطر ببالي أن أبدأ كما طلب فى كتابة بعض الاكود، و تطرق ذهني أيضا لاعداد نموذج يحوي الجمل المتكررة، ليختار منه و لكن بفضل الله تذكرت حل يعرفه الكثير ، و لكن ربما لا يستخدمه الكثير، فاحببت مشاركتكم به ساضيف حلان الاول فى هذه المشاركة يخص الاستبدال الالى دون تدخل منك و الثاني ساضيفه فى مشاركة تالية هنا فى نفس الموضوع يخص الاستبدال يدويا اولا الاستبدال الالي فعلى سبيل المثال مثلا بدلا من كتابة جملة "هذا للعلم و اتخاذ ما ترونه مناسباً من إجراءات مناسبة، مع وافر الشكر و التقدير" اريد ان اختصر كتابتها على سبيل المثال ، و عليه فاختار كلمة لا تحتاج كتبتها كثيرة و يحبذ كونها مزيج من كلمة و حرف مثلا نختار هنا هذ1 لنكتبها كمفتاح للحصول على الجملة أو أي عبارة يسهل عليك استخدامها على الا تكون عبارة يتوقع استخدامها فى الكتابة العادية. مع ملاحظة أن الحد الاقصى لعدد حروف الجملة هو 255 حرف و الخطوات كالتالي: File Options ثم اتباع الخطوات التالية: 1- Proofing 2- Auto correct 3- نكتب هنا هذ1 4- نكتب الجملة الكاملة : "هذا للعلم و اتخاذ ما ترونه مناسباً من إجراءات مناسبة، مع وافر الشكر و التقدير" 5-add و نكرر ذلك لما نرغب من حالات ثم 6- ok و الان فى الوورد اذا كتبت هذ1 يليها مسافة أو Enter ستستبدل اليا ب "هذا للعلم و اتخاذ ما ترونه مناسباً من إجراءات مناسبة، مع وافر الشكر و التقدير" و هذا طبعا يوضح لماذا اخترنا جملة عبارة غير معتادة مثل هذ1 حتي لا يتم عمل استبدالات غير مرعوب بها اذا اخترنا جملة عادية و في المشاركة التالية ساضيف الطريقة الثانية
    1 point
  15. السلام عليكم و رحمة الله تعالى وبركاته نعاني دائما من تصدير البيانات إلى الوورد للتعديل عليها أو لأي غرض آخر و خاصة الجداول أقدم لكم هذا المثال البسيط الذي يقوم بتصدير البيانات لملف وورد معد مسبقا و يقوم بملئها في أماكنها و كلما زاد سجل زاد له سطر في جدول الوورد و هذا هو المثال فيه نسختين 2003 و نسخة 2010 التصدير لملف وورد معد مسبقا.rar
    1 point
  16. @ناقل كل الشكر والتقدير لشخصك الكريم ياطيب الحل راقي جدا مودتي.
    1 point
  17. لست ادري ان كان الامر مرتبط بالموضوع السابق ام لا ولكن انظر الي هذه المشاركة
    1 point
  18. بارك الله فيك استاذ حسين عمل رائع -أما بالنسبة للطلب الثانى بخصوص التنسيق الشرطى -فيمكنك استخدام هذه المعادلة =AND($E1<>"",COUNTIF($E$1:E1,E1)>1) خلايا فارغة1.xlsx
    1 point
  19. الله الله الله عليك استاذى وفعلا معلمى القدير / ابو بسملة كل عام وانت بخير وصحة وسعادة فعلا هذا هو المطلوب جزاكم الله خيرا وجعلكم خير مساعد لنا
    1 point
  20. وعليكم السلام ورحمه الله وبركاته اتفضل يادكتور محمد وكل عام وانتم بخير Private Sub list1_AfterUpdate() If Me.list1.Value = 3 Then Me.x.RowSource = "SELECT suppliers.suppliername, suppliers.kind FROM suppliers;" ElseIf Me.list1.Value = 1 Then Me.x.RowSource = "SELECT suppliers.suppliername, suppliers.kind FROM suppliers WHERE (((suppliers.kind)='ãæÑÏ'));" ElseIf Me.list1.Value = 2 Then Me.x.RowSource = "SELECT suppliers.suppliername, suppliers.kind FROM suppliers WHERE (((suppliers.kind)='Úãíá'));" End If End Sub بالتوفيق تصفية.accdb
    1 point
  21. جزاك الله الف خير اخي حسين مامون ...هل يمكن معاينة قبل الطباعة ؟
    1 point
  22. شكر وتقدير وفائق الاحترام من اخيك بارك الله فيك اخي بصراحة رائعة جدا جدا جدا جدا تقبل تحياتي اخيك
    1 point
  23. لا اجد رد يعبر عن مدى احترامى وشكرى لكل من اعضاء هذا المنتدى المحترم الذى تعلمت منه الكتير والكثير شكرا لك ا/ على محمد على
    1 point
  24. ان لم تستطيع اليك هذا Sub test() Dim lr, f, f2, f3, f4, f5, f6 f = "=IF(ISERROR" & "(MATCH($A3,OFFSET" & "(INDIRECT(ADDRESS" & "(1,1,,,B$2)),,,1000,1),0))" & "," & """لم يدخل""" & "," & """دخل""" & ")" f2 = "=IF(ISERROR" & "(MATCH($A3,OFFSET" & "(INDIRECT(ADDRESS" & "(1,1,,,C$2)),,,1000,1),0))" & "," & """لم يدخل""" & "," & """دخل""" & ")" f3 = "=IF(ISERROR" & "(MATCH($A3,OFFSET" & "(INDIRECT(ADDRESS" & "(1,1,,,D$2)),,,1000,1),0))" & "," & """لم يدخل""" & "," & """دخل""" & ")" f4 = "=IF(B3=""دخل"",INDIRECT(ADDRESS(MATCH($A3,OFFSET(INDIRECT(ADDRESS(1,1,,,F$2)),,,1000,1),0),2,,,F$2)),"""")" f5 = "=IF(C3=""دخل"",INDIRECT(ADDRESS(MATCH($A3,OFFSET(INDIRECT(ADDRESS(1,1,,,G$2)),,,1000,1),0),2,,,F$2)),"""")" f6 = "=IF(D3=""دخل"",INDIRECT(ADDRESS(MATCH($A3,OFFSET(INDIRECT(ADDRESS(1,1,,,H$2)),,,1000,1),0),2,,,F$2)),"""")" lr = Cells(Rows.Count, 1).End(xlUp).Row Range("b3:b" & lr).Formula = f Range("C3:C" & lr).Formula = f2 Range("D3:D" & lr).Formula = f3 Range("f3:f" & lr).Formula = f4 Range("g3:g" & lr).Formula = f5 Range("h3:h" & lr).Formula = f6 Range("b3:h" & lr).Value = Range("b3:h" & lr).Value End Sub
    1 point
  25. هذا الكود يعمل على العمود B حاول تطبيقه على الاعمدة الاخرى Option Explicit Sub test() Dim lr, f f = "=IF(ISERROR" & "(MATCH($A3,OFFSET" & "(INDIRECT(ADDRESS" & "(1,1,,,B$2)),,,1000,1),0))" & "," & """لم يدخل""" & "," & """دخل""" & ")" lr = Cells(Rows.Count, 1).End(xlUp).Row Range("b3:b" & lr).Formula = f End Sub ربط جداول من اوراق اخرى.xlsm
    1 point
  26. كل سنة والجميع بخير وصحة وسعادة
    1 point
  27. كان عليك استخدام خاصية البحث بالمنتدى , فطلبك تكرر كثيراً هنا وشوف بنفسك : مساعدة في طباعة ملف اتوماتيكي كود طباعة
    1 point
  28. اسف على التاخير بسبب وعكة صحية ...ولو انك نبهتني من البداية لكان ايسر انظر للتعديل عسى انه يلبي طلبك مساعدات مرضية تعديل 1(1).rar
    1 point
  29. لا اجزم باني فهمت السؤال بالكامل انظر لهذه المحاولة عسى انها تقرب المسافات لما تريد AAA.accdb
    1 point
  30. حاولت استخدامها من قبل لكن لا اعلم لماذا التنازلي لايعمل
    1 point
  31. بالتاكيد غلطان اخى محمد 🙂 لانها صفر ?DateDiff("m"; #9-7-2016#;#9-30-2016#) جرب المعادله السابقه فى استعلام وشوف هيعطيك 1 ولا 0 بالتوفيق اخى
    1 point
  32. الشكر لله ثم لاخواننا واساتذتنا جزاهم الله عنا كل خير والشكر موصول لاخى واستاذى محمد الحلوانى طيب وضحلى الخطا فين وطريقه الحساب والنواتج الصحيحه وسوف اقوم بالمراجعه بالمساء ان شاء الله بعد الانتهاء من بعض الاعمال بالتوفيق
    1 point
  33. وعليكم السلام-بسيطة كان عليك رفع الملف لتجربته ..فعموماً مخزى هذه الرسالة ان لديك معادلات طويلة جداً فعليك بتغيير حفظ امتداد ملف الإكسيل الى Xlsb
    1 point
  34. 1 point
  35. تفضل لك ما طلبت .. تـــم تنظيم الملف وعمل قائمة منسدلة بأسماء جميع صفحات الملف.. وهذه هى المعادلة المستخدمة لجلب البيانات من كل صفحة بمعلومية اسم الصفحة =INDIRECT("'"&$A$1&"'!"&CHAR(64+COLUMNS($A$1:A1))&""&ROWS($A$1:A3)) testttt1.xlsx
    1 point
  36. كل عام وانتم بخير وعيد سعيد عليكم
    1 point
  37. بارك الله فيك استاذنا الكبير أبو خليل ... عمل رائع جعله الله فى ميزان حسناتك وتقبل الله منكم سائر الأعمال
    1 point
  38. السلام عليكم-تفضل يمكنك استخدام هذه المعادلة للأدنى =MINIFS(SHEET1!E$10:E$250,SHEET1!$C$10:$C$250,$A$1) وهذه للمتوسط =Iferror(AVERAGEIF(SHEET1!$C$10:$C$250,$A$1,SHEET1!E$10:E$250),"") وأخيراً معادلة الأعلى .. وبارك الله فيك =MAXIFS(SHEET1!E$10:E$250,SHEET1!$C$10:$C$250,$A$1) TEST568.xlsx
    1 point
  39. وذلك لأنك استخدمت الكود بعد تكويد الموردين ,, ومن فضلك لا تتأخر بالرد هكذا فكنت قد نسيت الموضوع ...فقط عليك تفعيل الكود مرة واحدة عند الطلب وذلك عندما تريد تصفير كل البرنامج وادخال بيانات حديثة وجديدة غير القديمة ... ولكم جزيل الشكر
    1 point
  40. أحسنت استاذ محمد عمل ممتاز جعله الله فى ميزان حسناتك
    1 point
  41. الطريقة الثانية هنا الاستبدال بالاختيار ، عن طريق بلوكات يتم حفظها و تستدعي يدويا او كما يسمي Building Block و الطريقة كالتالي لنفرض أنك تريد توفير وقت كتابة جملة السلام عليكم و رحمة الله وبركاته اكتبها فى الملف لاول مرة ثم اخترها و اضغط ALT+F3 سيظهر لك المربع التالي و سنحفظها باسم السلام ضمن العبارات المحفوظة Building Block و هكذا تم حفظها و لاستدعاءها من قائمة Insert اختار Quick Parts Building Blocks organizers ثم اختار الجملة التي تريد ادراجها و سيتم ادراج الجملة المحفوظة المطلوبة و طبعا يمكنك اختصار الخطوات عن طريق اضافة ال quick Parts الى قائمة الاختصارات السريعة فتظهر كايقونة يمكن الوصول اليها سريعا و اختصار الخطوات السابقة كما هو مبين فى الصورة التالية ثانياً : من ناحية اخرى ستجد الوورد يقترح عليك الاستبدالات المسجلة عندما تكتب بعض الجروف دون الحاجة لادراج المكونات يدويا مثلما هو مبين فى الصورة التالىة و كل ما عليك هو ضغط Enter ليتم ادراج الجملة بالكامل 😄 ثالثاً: أيضا هناك حل آخر اذا لم يظهر لديك الاقتراح كما سبق ان تكتب كلمة السلام ثم تختارها دون زيادة مسافات فى النهاية ثم تضغط F3 و سيتم الاستبدال مباشرة من القائمة المخزنة
    1 point
  42. السلام عليكم ورحمة الله وبركاته تانية طريقة هنشرحها باذن الله هى طريقة .. شرح تصدير البيانات من الاكسس الى ملف ورد معد مسبقا عن طريق الاشارة المرجعية الفيديو https://youtu.be/VtPEat0Qkqo MS_Export data to Word file.rar
    1 point
  43. السلام عليكم كما خدمتمونا نحن الاعضاء الذين لا نعرف مثل المبدعين وكما تعاونتم معنا وكما افدتمونا وكما رحبتم بنا في هذا الموقع العزيز والغالي على قلوبنا من مدير الموقع ومراقبيه ومشرفيه وخبرائه واعضائه الاعزاء فإنني ولرد قليل من جميل الموقع العزيز قمت بتجميعية من احد المواقع الاجنبية به اكواد جاهزة وبإمكان المحترفين التعديل عليها والاضافة اوالحذف او عمل كود مشابه فيما يرونه مناسبا وكما بإمكان المبتدئين التعلم منها ولا أرجو منكم سوى الدعاء لي بكل ما تريده انت أيها القارئ "واعلم بأنك إن دعوت لي سترد الملائكة اللهم آمين ولك بالمثل " حجم الملف :4.87 MB لذا قمت برفعه على ميديا فاير وان لم يعمل لدى البعض بسبب حجبه في بعض الدول فليخبرنا هنا كي أرفعه على موقع آخر اضغط بارك الله فيك هنا اعتذر لقد تكرر الموضوع مرتين بسبب خللل في تحميل الموقع عندما توقف عملت اعادة تحميل الصفحة فكرر الموضوع مرتين ولا اعرف كيف احذف احدهما
    1 point
  44. السلام عليكم جميعا في مشاركة سابقة للاخ حلمي فؤاد بعنوان "طريقة اظهار QR CODE في تقارير اكسيس " وبعد تطبيق ماورد في المشاركة بكل نجاح عند ادخال البيانات باللغة الانجليزية الا اني فوجئت بعد ادخال بيانات باللغة العربية وعند قراءته بقارئ كيو ار كود فانها تظهر على شكل رموز غريبة وهنا كان هناك عدة احتمالات لمثل هكذا ظهور مثلا : ان يكون خط QR CODE المستخدم فيه وهو MW6 MatriX لايدعم اللغة العربية او المكتبة التي تم ثتبيتها لكل يعمل الكيواركود لاتدعم اللغة العربية او ان اللغة العربية المثبتة في نظام الويندوز المستخدم لدي وهو W7 SP1 32BIT لايدعم هكذا ظهور حاولت وبكل السبل - لايتسع المجال لحصرها - حل هذه المعضلة عل مدى سنتين ولكن لم اوفق اخيرا خطرت لي فكرة على هيئة سؤال " لما لاتكون المشكلة في نسخة الويندوز الموجودة لدي نفسه اي انه مثلا ملفاته ناقصة او لايدعم هكذا عمليه" هنا لي رجاء عندكم اخواني لطفــــــــــــــــــا محاولة الاطلاع على المشاركة للاخ حلمي رفلة في الرابط المبين ادناه و ان تجربوا البرنامج لمعرفة هل يدعم اللغة العربية او لا وهل سيظهر عند قراءته بقارئ كيو ار كود رموز غريبة او يظهر عندكم باللغة العربية سليما معافا والســـــــــــــــــــــــــــــــــــــــــــــلام عليكم
    1 point
×
×
  • اضف...

Important Information