نجوم المشاركات
Popular Content
Showing content with the highest reputation on 28 ديس, 2022 in all areas
-
ممكن Sub protect_sh() Dim i For i = 1 To Sheets.Count Sheets(i).protect "ggg" '<<< كلمة السر Next End Sub Sub unprotectsh() Dim i For i = 1 To Sheets.Count Sheets(i).unprotect "ggg" '<<< كلمة السر Next End Sub4 points
-
وعليكم السلام ورحمة الله تعالى وبركاته تفضل اخي Private Sub UserForm_Initialize() Me.ListBox1.List = [liste].Value End Sub ''''''''''''''''''''''''''''''''''''''''' Private Sub TxtSearch_Change() Me.ListBox1.Clear i = 0 For Each c In Application.Index([liste], , 1) If UCase(c) Like UCase(Me.TxtSearch) & "*" Then Me.ListBox1.AddItem Me.ListBox1.List(i, 0) = c.Value i = i + 1 End If Next c End Sub اسماء العاملين.xlsm3 points
-
2 points
-
أه الآن دارت الفكرة آسف لم استوعب الفكرة عذراً منك جرب هذا واعتذر مرة أخرى عن سوء الفهم kutub20-23 -222.xlsm2 points
-
السلام عليكم 🙂 مسمى نوع حقل DataType الجدول يختلف عن ذلك في الكود ، فكما في الجدول ، نوع DatType النص هو Text (او Short Text للاكسس 2013 فما فوق) ، ففي الكود فيتم تعريفه بـ Dim myText as String ، نفس الشيء بالنسبة للارقام الكبيرة ، في الجدول يسمى Large Number ، وفي الكود LongLong : 1. https://support.microsoft.com/en-us/office/data-types-for-access-desktop-databases-df2b83ba-cef6-436d-b679-3418f622e482 . https://support.microsoft.com/en-us/office/using-the-large-number-data-type-5b623f6e-641d-4e97-8bdf-b77bae076f70 . https://learn.microsoft.com/en-us/office/vba/Language/Reference/User-Interface-Help/longlong-data-type . رجاء قراءة الموضوع التالي ، حيث شرحت فيه بعض هذه الدوال للنواتين: الكثير من دوال Api ستعمل اذا اضفنا PtrSafe في سطر مناداة الدالة ، ولا نحتاج الى تغيير Long الى LongPtr ، ويمكنك قراءة بعض هذه الدوال من السطر التالي في الموضوع اعلاه : . والآن الى الرابط التالي: . فمنه نرى انه لا يوجد قانون ثابت في تغيير جميع دوال/متغيرات Long الى LongPtr ، فبعض الاحيان نحتاج الى تغيير نوع الدالة ، وبعض الاوقات نحتاج الى تغيير نوع المتغير في الدالة ، وبعض الاحيان نحتاج الى تغيير الاثنين معاً 🙂 جعفر2 points
-
أشكركم على المشاركات الكريمة والساهمة في إثراء الموضوع معلومات التي من حفظي 🙂 ولم أراجعها: rst.Close set rst = Nothing set dbs = Nothing هذا أكثر احترازا وما عليها زود أما هذه: set rst = Nothing set dbs = Nothing أما هذه ففيها الكفاية وتقوم بنفس الخيار السابق تماما، حيث تمرير "Nothing" لمجموعة السجلات تقوم بالإغلاق والإفراع بمعنى 2 في واحد. أما هذه: rst.Close set dbs = Nothing فهي محل شك بالنسبة لي وكنت أمارسها سنين طويلة وكان بخلدي أن لغة الفجوال تتكفل بعملية الإفراع بمجرد الخروج من الإجراء أو الدالة لكل محتواه وإلى الآن لم أتأكد ولكن هو سلوك للغة نفسها بعض اللغات تترك عملية التحكم بالذاكرة للمبرمج كاملة وعليه أن يتعامل معها بكل حذر حتى عند الإعلان عن متغير سوف تراه يحمل قيمة عشوائية ولا بد قبل التعامل معه من "تصفيره" وإلا سترى نتائج غير متوقعة بعكس الفجوال فكل المتغيرات تراها ابتداء "نظيفة" لا تحتاج إلى "تصفير". وقياسا على أن "الحاوية" تشمل المحتويات في عملية الإغلاق والتفريغ فكنت أعتقد أن تمرير "Nothing" إلى قاعدة البيانات سوف يقوم بتفريغ مجموعة السجلات أيضا ولكن بعد التجربة الشخصية تبين خطأي ويمكنكم أن تجربوا فأنا قمت بإفراغ القاعدة وظلت المجموعة نشطة. عليه أرى أن خيار الإغلاق Close خياريا لاحترازية أكبر ويكفي عملية التفريغ ولكن عند إعادة استعمال المجموعة لابد من اغلاقها أولا وقبل فتحها من جديد لمجموعة سجلات جديدة. والخلاصة فأنا سأعتمد هذه: set rst = Nothing set dbs = Nothing وتحياتي لكم.2 points
-
تصحيح للمعلومات السابقة 1- عدم تفريغ المتغيرات ليس له تأثير فى تفريغ الذاكرة العشوائية او سرعة التعامل مع قاعدة البيانات ولكن فى حالة عدم تفريغها ومحاولة استخدامة نفس المتغير مرة أخرى باسناد قييمة جديدة لو اغفل المبرمج اسناد القيمة الجديدة سوف يحصل على القيمة السابقة 2- اما ال RS والتى تخص الـ Recordset عند استدعائها تقوم بفتح الجدول او الاستعلام حسب ما تسنده اليها وفى حالة عدم اغلاقها يظل الجدول او الاستعلام مفتوح وقد يحدث ذلك خطأ عند استدعاء نفس الجدول او الاستعلام مرة أخرى على اعتبار انه بالفعل مفتوح2 points
-
2 points
-
في شيت يومي يمكن نسخ أي جدول واقحامه بين جدولين باستخدام "Insert Coped Cells" في الكود المرفق يمكنك إضافة أو إقحام صفوف و عليك أن تضيف الصفوف كما ذكرت سابقاً بنفس ترتيب الجدول عسى ولعل يرضيك هذا الحل ايجاد كود للتوزيع3.xlsm2 points
-
البرنامج لارشفة السجلات وحفط المستندات يحقظ المستندات داخل البرنامج بدون مسار للمحفوظات يمكن نقل البرنامج لائي برتشن او مجلد او اي جهاز دون فقد المحفوظات المحفوظات.accdb1 point
-
السلام عليكم ورحمة الله وبركاته اساتذتى الكرام ،، تحية طيبة عطرة من باب الطمع فى تحصيل العلم إن قدر الله الخير وسمح لى وقتكم وجهدكم الثمينين اتمنى على الله تعالى ثم عليكم ان تتفضلوا بطرح أفكاركم النيرة وتنيروا ظلمات الجهل لى ولكل طلاب العلم جزاكم الله خيرا السؤال كان لاخت لنا فى المنتدى وتم الإجابة عليه وأعجبتنى الفكرة الى ان توسعت فتعثرت اولا الموضوع الأصلى ارفق لكم قاعدة جديدة والتى تحمل تساؤلاتى المرفق الجديد يعتمد فى عمله على العناصر الثلاث الاتيه جدول tblRegVacation >>---> جدول يتم فيه تسجيل اول تاريخ بدء الأجازة ,اخر تاريخ لنهاية الأجازة , وطبعا كود الموظف qrySysSourc >>---> استعلام سحرى يعتمد على جدول من جداول النظام وهذا اول تساؤلاتى أريد فهمه وفيما يمكن الاستفادة منه أكثر qryVacationsDetailed >>---> استعلام يعتمد على الاستعلام السابق والجدول يسجل التاريخ متسلسلا ومفصلا بناء على أول تاريخ وأخر تاريخ المطلوب كيفية استثناء العطل الأسبوعيه ( الجمعة و السبت - أو أى أيام أخرى تبعا للحاجة ) وكذلك التواريخ للعطلات الرسمية والمحجوزة ومسجلة فى الجدول tblHolidays وذلك كما تم عمله فى الحل بالمرفق الأصلى للموضوع الأساسى جزاكم الله خير Daynamic Gnrate Date.zip1 point
-
وعليكم السلام ورحمة الله وبركاته بعد اذن استاذنا الاستاذ محمد بالمرفقات محاولة لعلها المطلوب باستخدام الدالة (DateDif) ارجو التجربة. حساب مدة اخر ترقية.xlsx1 point
-
1 point
-
من تساهل الفجوال قبول تمرير هذه القيم بين الأنواع بدون دوال التحويل مع أنها مع أكثر اللغات أخطاء ومرفوضة حتى قبل التشغيل. Sub TypesTest() Dim L As Long Dim B As Byte Dim S As String L = 255 B = L S = B B = S End Sub1 point
-
السلام عليكم جزاك الله كل خير البرنامج يعمل 100% بفضلك جزاك الله كل خير و رزقك الله من حيث لا نحتسب @محي الدين ابو البشر1 point
-
...الملف المرسل يعمل لدي جيداً اذ كنت تستخدم ملف اخر فعليك ارسالة ليتم عمل الازم عليه1 point
-
أمتلك الجواب ولكني أود السماح لمعلوماتكم وخبراتكم كما أو منكم لا يذهب أحدكم للبحث عن المعلومة ، اكتبوا فقط ما هو عالق في ذاكرتكم. والخيارات هي لإقفال الـ Recordset هكذا: rst.Close set rst = Nothing set dbs = Nothing أو هكذا: rst.Close set dbs = Nothing أو هكذا: set rst = Nothing set dbs = Nothing وإذا كانت الخيارات كلها سليمة فأيها الخيار الأمثل؟1 point
-
وعليكم السلام ورحمة الله وبركاته أخي الحبيب الفاضل أستاذ / محمد في البداية أشكر حضرتك جدا جدا وربنا يجعل اعملك كلها في ميزان حسناتك وزادك الله من علمه وفضله تقبل خالص تحياتي1 point
-
السلام عليكم ورحمة الله وبركاته 💐 أخي الحبيب م. ياسر ❤️🌺 أولاً أعتذر عن التأخر في الرد بسبب ضغط العمل ثانيا: حاولت أن أجمع لك كل ما طلبت في المشاركة الأولى وفي ملفك الذي أدرجته أرجو أن تنتفع به سائلا إياكم الدعاء والسلام عليكم ورحمة الله وبركاته Sales Commission.xlsx1 point
-
أولا هذا تصوري اما طلبت ثانيا هناك طرق أخرى للربط بين الجداول وافني بالرد1 point
-
السلام عليكم ورحمة الله جرب المرفق لعلك تجد فيه ما تريد.... نتائج الموسم الاول11.xlsx1 point
-
استخدم هذا الإجراء بدلا من الأصل (من جلب الأستاذ جعفر) ولن تشاهد هذه المشكلة مرة أخرى. Sub mySendKeys(String_ As String, Optional Wait As Boolean = False) Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys String_, Wait Set WshShell = Nothing End Sub1 point
-
وعليكم السلام ورحمة الله وبركاته لطباعة الصفحة الاولى فقط من جميع الأوراق في الملف جرب الكود: Sub Print1() Dim WS As Worksheet For Each WS In ActiveWorkbook.Sheets WS.PrintOut From:=1, To:=1 Next End Sub1 point
-
السيد المهندس / محمد حسن المحمد تحية طيبة وبعد تم مراجعة الشيت فكرة ممتاذة جدا وهو المطلوب مرفق شيت أرجو النظر إليه وتقبل فكرتى لو أمكن ويوجد ملحوظة بسيطة لو لها حل بالنسبة للمندوب لو حقق مثلا 84.5 % بيعطى عمولة صفر وأيضا لو حقق 90.5% أو 90.7 أ 90.9 مثلا يعطى صفر وهل يمكن عمل معادلة واحدة IF تقوم بجميع الشروط وتستعين بخانة النسبة المحققة فى الشيت المرفق ( دون الإستعانة بجدول إضافة لتحقيق شروط النسب المشروطة ) تقبل خالص تحياتى وتقديرى لشخصكم الكريم Sales Commission.xlsx1 point
-
السلام عليكم 🙂 اعتقد السؤال الاصح هو: الاكسس الافضل اليوم 🙂 في هذا الرابط تم نقاش معظم النقاط في موضوعك ، وفيه رابط آخر لتكملة النقاش : . وختاما ، هذا ما قاله اخي خالد @مبرمج متقاعد : . في كمبيوتري الجديد اتمنى ان يكون آخر اصدار الوندوز بنواة 64بت ، والاوفيس Microsoft 365 نواة 64بت 🙂 اذا لم تستعمل الازرار والاشكال الجديدة في النسخة الحديثة من الوندوز الاكسس ، فأعتقد بإمكان برنامجك العمل على معظم نسخ accdb 🙂 جعفر1 point
-
اولا فى ظل تقدم تكنولجيا الحواسيب والمعلومات وايقاف الدعم من ميكروسوفت لويندوز7 هجرع الكثيرون ثانيا تصحيح صغير ببعض الحيل يمكن تنصيبع على ويندوز 7 وقنت بذلك قبل فترة لاستاذ @ابوبسمله تقريبا لوم لم تخوننى الذكرة للعلم إن أردت المقارنة حقا بين الاصدارات 2010 اسرع وأكثر أستقرار من 2013 و 2016 و 2019 2021 تقريبا ابطئ قليلا بدرحة غير ملحوظة من 2010 لكنه أكثر إستقرار لو أردت الإحتيار لا تخرج عن 2010 , 2021 ملاحظة الأكسس 64 بت أسرع من 32 سواء استخدمت قاعدة البيانات على جهاز منفردا بنفسه أو عبر الشبكة المحلية وتتم ملاحظة الفرق بدرحة كبيرة جدا لو ان تتعامل مع هارد SSD or MM2 طيب للعلم كذلك قبل سبتمبر 2018 ، أوصت Microsoft بالإصدار 32 بت كتثبيت افتراضي لـ Access ، إلى جانب برامج 32 بت الأخرى من Office. في الوقت الحاضر ، يعد الإصدار 64 بت هو الافتراضي الموصى به ، كما هو الحال بالنسبة لجميع برامج Microsoft 365 الخاصة بهم وأعتقد استاذى الجليل ومعلمى القدير و والدى الاستاذ @jjafferr قد تطرق الى تلك الجزئية وأوضحها بعد ذلك الوصول و SQL Server أحد الأسباب التي تجعلك مضطرًا للذهاب إلى 64 بت Access هو أن قاعدة البيانات الخاصة بك بها نهاية خلفية لـ SQL Server والجداول الموجودة في تلك النهاية الخلفية تحتوي على حقول من نوع بيانات bigint. تم تجهيز إصدارات 64 بت من Access ، بدءًا من الإصدار 2007 ، بنوع بيانات رقم أكبر ، مما يوفر التوافق المطلوب. لا يمكن أن تدعم إصدارات 32 بت من Access نوع بيانات "الرقم الكبير". هذه بعض الاعتبارات الخاصة بترقية الكمبيوتر من 32 إلى 64 بت Access: هل تفي أجهزة الكمبيوتر بالحد الأدنى من المتطلبات لنظام التشغيل Windows 64 بت و 64 بت من Office 365؟ دون الخوض في التفاصيل ، فإن الحد الأدنى من المتطلبات هو معالج أسرع من 1.6 جيجا هرتز ، و 4 جيجا بايت من ذاكرة الوصول العشوائي ، و 4 جيجا بايت مساحة خالية على القرص الصلب وشاشة بدقة 1280 × 768. راجع https://products.office.com/en-gb/office-system-requirements هل الكمبيوتر مزود بنظام Windows 64 بت؟ (لا يمكنك تثبيت Office 365 64 بت على جهاز كمبيوتر يعمل بنظام Windows 32 بت) لا يمكنك مزج 32 بت و 64 بت Access على نفس الكمبيوتر إذا كنت تنوي تشغيل قاعدة بيانات متعددة المستخدمين على أجهزة كمبيوتر بمزيج من 32 بت و 64 بت Access فهناك اعتبارات إضافية قد تحتاج إلى القيام بها عند التعامل فقط مع دوال API لتوافر العمل على كلا النظامين مكاسب في الأداء مع 64 بت الآراء المعبر عنها على الويب حول مكاسب الأداء المنسوبة فقط إلى ترقية تطبيقات 32 بت إلى 64 بت من المستخدمين منقسمة ولكن الأغلب يفضل التعامل مع 641 point
-
1 point
-
1 point
-
1 point
-
ممكن يكون هذ هو المطلوب معاينة طباعة مع امكانية الطباعه.xls1 point
-
وعليكم السلام ورحمة الله وبركاته ما شاء الله تبارك الله استاذنا محي الدين كود جميل وممتع التأمل والاستفادة فشكراً لكم. ولكن بعد اذنكم استاذي اقدم فكرة بان يكون عرض التوزيع وفق خليه تخصص لاختيار الصف بعدها ينعكس المعلمين والدروس على جدول الصف حسب الاختيار. ويمكن اضافة صف جديد وفق الخطوات في الملف. ارجو تجرب الملف المرفق، وهي فكرة من خارج الصندوق لعلها تناسب المطوب. التوزيع الحصص الدراسية بدون كود .xlsx1 point
-
أخي مرفق برنامج جاهز مجمعه من منتدانا أفيسينا وأنا بستخدمه في جميع برامجي أدرسه جيداً واستخدمه كما تشاء ووافني بالنتيجة MahdiPermissions.rar1 point
-
السلام عليكم ورحمة الله تنويه: المعادلة التي وضعتها بالأعلى (في ردي السابق) تبحث عن الكلمة حتى وإن كانت داخل نص طويل... بالتوفيق..1 point
-
وعليكم السلام ورحمة الله تعالى وبركاته تفضل اخي بالنسبة لطلبك اعتقد ان جواب استادنا الكبير بن علية حاجي يوفي بالغرض لاكن لاثراء الموضوع وتعميم الفائدة للجميع بالمعادلات يمكنك بهده الطريقة =SI(ESTNA(EQUIV("ALI";$S$9:$S$25;0));"غير موجود";"موجود") او =SI(ESTNA(RECHERCHEV("ALI";$S$9:$S$25;1;FAUX));"غير موجود";"موجود") او =SI(ESTNA(EQUIV(A9;$S$9:$S$25;0));"غير موجود";"موجود") ملاحظة: المعادلات تمت كتابتها على اوفيس فرنسي .كما سبق الدكر اتجنب اعادة صيغتها تفاديا للاخطاء .يمكنك تحميل الملف من المرفقات سيتم ترجمتها تلقائيا على جهازك اما بالنسبة للاكواد هناك عدة طرق منها لنفترض انك ترغب ظهور النتيجة في الخلية ("A5") Sub test1() Dim code As String Dim Trouve As Range With Sheets("Sheet1") Set Trouve = .Range("S:S").Find(what:="ALI", LookIn:=xlValues, lookat:=xlWhole) If Trouve Is Nothing Then Range("A5") = " غير موجود" Else Range("A5") = "موجود" End If End With End Sub وبهده الطريقة ادا كانت لك رغبة بالبحث بقيمة خلية معينة ولنفترض انها M4 Sub test2() Dim code As String Dim Trouve As Range With Sheets("Sheet1") ' تحديد العمود ورقم الخلية Set Trouve = .Range("S:S").Find(what:=Range("M4"), LookIn:=xlValues, lookat:=xlWhole) If Trouve Is Nothing Then 'M6 ظهور التنيجة في الخلية Range("M6") = " غير موجود" Else 'في حالة عدم العثور على القيمة Range("M6") = "موجود" End If ''''''''''''''''''''''''''''''''''''''''''' Sub test4() Dim MH As Range Set MH = Range("S9:S25").Find(What:=Range("M4").Value, LookIn:=xlValues, LookAt:=xlWhole) If Not MH Is Nothing Then Range("M6").Value = "موجود" Else Range("M6").Value = " غير موجود" MsgBox " غير موجود" End If End Sub End With End Sub اما في حالة الرغبة في البحث وتنفيد نفس الامر على عدة قيم في نطاق معين يمكنك بهده الطريقة Sub test3() Dim X As Variant Dim Rng As Range 'تحديد نطاق القيم المبحوث عنها ' مثال من الصف 9 الى 13 For i = 9 To 13 'تحديد رقم العمود X = Cells(i, 11) 'تحديد نطاق القيم المبحوث عنها With Sheets("sheet1").Range("S9:S25") Set Rng = .Find(what:=X, After:=.Cells(.Cells.Count), _ LookIn:=xlValues, lookat:=xlWhole, _ SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) If Not Rng Is Nothing Then 'في حالة العثور على القيمة Cells(i, 10).Value = "موجود" Else 'في حالة عدم العثور على القيمة Cells(i, 10).Value = "غير موجود" End If End With Next i End Sub قد تم اضافة الاكواد والمعادلات للملف المرفق بالتوفيق........... التحقق من وجود قيمة معينة.xlsm1 point
-
وعليكم السلام ورحمة الله وبركاته * حل بالمعادلات: إذا فرضنا أن الخلية C1 تحوي كلمة ALI التي تبحث عنها... المعادلة تكون على الشكل التالي: =IF(COUNTIF($S$9:$S$25;"*"&$C$1&"*");"موجود";"غير موجود") * الحل نفسه بـ VBA : Sub Test() If Application.CountIf(Range("S9:S25"), "*" & [C1].Value & "*") <> 0 Then MsgBox "موجود" Else MsgBox "غير موجود" End If End Sub في انتظار حلول أخرى...1 point
-
نفسي اساعدك لكن ماعندي جهاز قاريء اكواد اجرب عليه واشوف الية العمل تبعه اكتبلي موديل الجهاز يلي عندك واشوف علي النت برمجته وان شاء الله خير1 point
-
1 point
-
1 point
-
في الخلية G8 استبدل المعادلة الموجودة بهذه رجاء أن تكون النتيجة كما طلبت =URL_QRCode_SERIES("qr_code_1";CONCATENATE(B2;"-";C2;"-";D2;IF(E2<>"";"-";"");E2;IF(F2<>"";"-";"");F2; IF(F4<>"";"-";"");F4;IF(E4<>"";"-";"");E4;IF(D4<>"";"-";"");D4;IF(C4<>"";"-";"");C4;IF(B4<>"";"-";"");B4;"-";B5;"-";B6);;"qrCode") تمت التجربة على هذه المشاركة وكانت ناجحة بفضل الله.1 point
-
1 point
-
السلام عليكم أخي الكريم ..باستخدام المصنف ذاته لأنه يحتوي على أكواد تتعلق بالـ QR CODE يمكنك وضع المعادلة التالية للحصول على النتيجة المطلوبة (( والله أعلم)). =URL_QRCode_SERIES("qr_code_1";CONCATENATE(B2;"-";C2;"-";D2;IF(E2<>"";"-";"");E2;IF(F2<>"";"-";"");F2;"-";B4;"-";B5);;"qrCode") يمكنك التعديل عليها بما يناسب طلبك QR CODE.xlsm1 point
-
في هذه الحالة العملية متعلقة بجهاز قارئ الاكواد عند قراءة الكود يقوم بتعبئة البيانات اتوماتيكيا في الفورم . حقيقة لا اعتقد ان احد يمكن ان ينجح في مساعدتك بهذا الامر لان ليس لدى احد هذا الجهاز ليقوم باختبار اي حل قد لا يعمل معك .1 point
-
@goodlife اعتقد ان موضوعك خرج خارج السياق الاصلي لطلبك يبدو من الصورة البيانات يتم جلبها من موقع الانترنت وهذا موضوع بعيد كل البعد عن موضوعك الاصلي .1 point
-
1 point
-
1 point