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

كل الانشطه

هذه الصفحة تحدث تلقائياً

  1. الساعة الأخيرة
  2. السلام عليكم ورحمة الله وبركاتة الرجاء مساعدتى فى هذه المشكلة يوجد اعمدة بأسماء الاصناف لكل بلد وتم عمل المطلوب من خلال معادلة اكسيل ومعادلة VBA من خلال المعادلة المرتبطة بالكود VBA =GetUniqueColumns(C3:I3) اريد تنسيق العمود O3 الاعمدة المختلفة كل الخلية باللون الاصفر و الحروف باللون الاحمر كما هو مدرج فى الصورة Sub FormatUniqueColumnsDirectly() Dim ws As Worksheet Dim DataRange As Range Dim uniqueColsCollection As New Collection ' This will store the unique column letters Dim cell As Range Dim count As Long Dim colLetter As String Dim targetColumn As Excel.Range Dim i As Long ' --- إعداداتك --- ' 1. تأكد من أن اسم الورقة صحيح Set ws = ThisWorkbook.Sheets("Sheet1") ' غيّر "Sheet1" إلى اسم ورقتك الفعلي ' 2. تأكد من أن نطاق البيانات صحيح ' هذا النطاق هو الذي سيتم البحث فيه عن القيم الفريدة. ' على سبيل المثال، إذا كانت بياناتك في الأعمدة من A إلى Z، ومن الصف 1 إلى الصف 100 Set DataRange = ws.Range("A1:Z100") ' اضبط هذا على نطاق بياناتك الفعلي Debug.Print "Worksheet Name: " & ws.Name Debug.Print "Data Range to check for uniqueness: " & DataRange.Address ' --- الخطوة 1: تحديد الأعمدة الفريدة بناءً على القيم الفريدة داخل النطاق --- ' (هذا هو جوهر ما كانت تفعله دالة GetUniqueColumns) For Each cell In DataRange ' تأكد من أن الخلية ليست فارغة، وإلا فقد يتم عد الخلايا الفارغة كقيم فريدة If Not IsEmpty(cell.Value) Then ' حساب عدد تكرارات القيمة في النطاق الكلي count = Application.WorksheetFunction.CountIf(DataRange, cell.Value) If count = 1 Then ' إذا كانت القيمة فريدة (تظهر مرة واحدة فقط) ' الحصول على حرف العمود من عنوان الخلية (مثال: من $C$5 نحصل على C) colLetter = Split(cell.Address(True, False), "$")(0) Debug.Print "Found unique value: " & cell.Value & " in column: " & colLetter On Error Resume Next ' لتجنب الأخطاء إذا تم إضافة نفس حرف العمود بالفعل uniqueColsCollection.Add colLetter, CStr(colLetter) ' إضافة حرف العمود إلى المجموعة On Error GoTo 0 End If End If Next cell Debug.Print "Number of unique columns identified: " & uniqueColsCollection.count ' --- الخطوة 2: تطبيق التنسيق على الأعمدة الفريدة التي تم تحديدها --- If uniqueColsCollection.count > 0 Then For Each columnLetter In uniqueColsCollection Debug.Print "Attempting to format column: " & columnLetter ' الحصول على كائن العمود بالكامل باستخدام حرف العمود On Error Resume Next ' في حالة كان حرف العمود غير صالح أو فارغ Set targetColumn = ws.Columns(columnLetter) On Error GoTo 0 If Not targetColumn Is Nothing Then Debug.Print "Applying formatting to column: " & columnLetter ' تطبيق التنسيق على العمود المحدد With targetColumn.Interior .Color = RGB(255, 255, 0) ' تعبئة صفراء End With With targetColumn.Font .Color = RGB(255, 0, 0) ' خط أحمر .Bold = True ' خط عريض .Size = 12 ' حجم الخط End With ' إضافة حدود للعمود With targetColumn .Borders(xlEdgeLeft).LineStyle = xlContinuous .Borders(xlEdgeRight).LineStyle = xlContinuous .Borders(xlEdgeTop).LineStyle = xlContinuous .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders.Weight = xlThin ' حدود رفيعة End With targetColumn.ColumnWidth = 15 ' ضبط عرض العمود targetColumn.HorizontalAlignment = xlCenter ' محاذاة النص في المنتصف Else Debug.Print "Error: Could not set targetColumn for letter: " & columnLetter & ". It might be an invalid column letter." End If Set targetColumn = Nothing ' إعادة تعيين المتغير للتكرار التالي Next columnLetter Else MsgBox "لا توجد أعمدة فريدة لتنسيقها في النطاق المحدد.", vbInformation End If ' --- تنظيف المتغيرات --- Set ws = Nothing Set DataRange = Nothing Set uniqueColsCollection = Nothing End Sub ' Keep your GetUniqueColumns function if you still need it for displaying the message Function GetUniqueColumns(DataRange As Range) As String Dim cell As Range Dim uniqueCols As New Collection Dim tempArr() As String Dim result As String Dim i As Long Dim colLetter As String Dim count As Long For Each cell In DataRange count = Application.WorksheetFunction.CountIf(DataRange, cell.Value) If count = 1 Then colLetter = Split(cell.Address(True, False), "$")(0) On Error Resume Next uniqueCols.Add colLetter, CStr(colLetter) On Error GoTo 0 End If Next cell If uniqueCols.count = 0 Then ReDim tempArr(0 To 0) Else ReDim tempArr(1 To uniqueCols.count) For i = 1 To uniqueCols.count tempArr(i) = "العمود " & uniqueCols.Item(i) & " مختلف" Next i End If If UBound(tempArr) = 0 Or uniqueCols.count = 0 Then result = "" ElseIf UBound(tempArr) = 1 Then result = tempArr(1) Else For i = 1 To UBound(tempArr) If i = 1 Then result = tempArr(i) Else result = result & " و " & tempArr(i) End If Next i End If GetUniqueColumns = result End Function 2025 اسم التوكيل.xlsm
  3. بسم الله مشاء الله تسلم ايدك استاذ محمد دا المطلوب بعينه ... الله ينور عليك واسف جدا علي تعب حضرتك جعله الله في موازين حسناتك ان شاء الله
  4. Today
  5. اهلا وسهلا وصباح جميل باطلالة الفوكش قرأت شرحك اعلاه واطلعت على المرفق عمل ولا اجمل .. فشكرا لك توضيح : حقول السماح ليس لها دور في عمليات واجراءت الحضور والانصراف ، وانما ينحصر عملها عند حصر ساعات العمل في الاستعلامات .. مثلا الفترة الصباحية 4 ساعات ومجموع فترات السماح ( الحضور والانصراف )=30 دقيقة هنا يكون ساعات العمل النظامية المطالب بها الموظف ولا يعتبر متأخر هي 3:30 دقيقة من هنا يجب ضبط وقت التوقيع والانصراف فلا يسمح له بالتوقيع قبل الوقت المحدد باكثر من 5 الى 10 دقائق وكذلك الانصراف يجب ضبط وقت ما بعد التوقيع الرسمي ملاحظاتي : 1- اضافة حقل يبين الفترة في جدول الحضور جميل جدا .. سيساعد مستقبلا على سهولة ويسر التصفية حسب الفترات 2- حقل نوع الحضور : ارى ان حضور وانصراف ( 1 ، 2 ) كافيا ولا حاجة لنوع دخول متأخر .. ( سوف ابين ذلك) بالنسبة للدخول المتأخر فلسنا بحاجة الى اظهاره عند الاجراء .. وسوف يظهر في الاستعلام بناء على المعطيات لأن كل توقيع مستقل بذاته .. ايضا وجوده في الجدول يسبب اضطراب .. لأن المطلوب هو هل هذا التوقيع دخول ام خروج ؟ اذا ترى ان بيان حالة الحضور مهمة فالافضل يخصص لها حقل مستقل .. ويضاف ايضا حالة خروج مبكر ( لاحظ هناك يوجد خروج الاستئذان) .. لذا ارى انه بلاش منها كلها 3- يسمح بالتوقيع المتكرر التوقيع الأول حضور والثاني انصراف خلال الجلسة الواحدة لاحتمال تفعيل نظام الاستئذان .. وكما هو معلوم يتم لاحقا حصر التوقيعات حسب اليوم والفترة 4- يلزم عمل ضابط وقت بين كل توقيعين دقيقة واحدة على الأقل ( بحيث لا يسمح بالتوقيع الثاني الا بعد انقضاء الوقت المحدد ... وذلك تلافيا للخطأ غير المقصود) ................................ بناء على الملاحظات اعلاه نحن بحاجة الى جدول كنترول يرصد فيه : 1- الوقت المتاح قبل موعد الحضور الرسمي 2- الوقت المتاح بعد موعد الانصراف الرسمي 3- ضابط وقت بين كل توقيعين وغيرها من ادوات التحكم التي قد نحتاجها وتظهر لنا اثناء التصميم اكرر شكري وامتناني ..
  6. وعليكم السلام ورحمة الله وبركاته تم رفع الملف بالمشاركه الاولي في الموضوع جزى الله عنا خيرا استاذنا الغالي ياسر خليل
  7. السلام عليكم استاذى العزيز Hegazee شكرا جدا لحضرتك ومجهودك وافى وعرضك رائع وارجوا ان تتقبل تحياتى وان يتقبل الله دعواتى لشخصكم الكريم السلام عليكم
  8. Yesterday
  9. وعليكم السلام ورحمة الله وبركاته ،، موضوع ثري وجميل للنقاش ، ويستحق فعلاً أن يُبنى على تصور شامل ودقيق من البداية . وبحسب ما فهمت من تصوركم – وهو تصور متطور ومرن – لدي نقطة بسيطة أحب أن أطرحها للنقاش :- هل سيُؤخذ بعين الاعتبار مسألة ( التأخيرات المسموحة ) ؟ يعني مثلاً :- إذا تأخر الموظف عن وقت حضوره بـ 5 دقائق ، هل يُعتبر (حاضراً ضمن الوقت أم متأخراً ) ؟؟؟؟ لهذا أعتقد أنه من المفيد – وربما الضروري 😅 – أن تكون هناك حقول مثل :- StartTime و EndTime لكل وردية . وحقل إضافي مثل AllowedDelayMinutes ( الحد الأقصى للتأخير المقبول ) . هذا يُسهل مستقبلاً حساب التأخير والانصراف المبكر ، ويجعل النظام أكثر دقة وواقعية ، خاصة إذا تم استخدام البيانات لاحقاً في تقييم الأداء أو إعداد تقارير زمنية . مجرد وجهة نظر قابلة للنقاش 🌷 ، ومتابع معكم للإستفادة من الآراء والتجارب . وهو فعلاً ما تم إدراجه في مرفق معلمنا أبو خليل ، ولكن جاء ردي قبل أن أرى المرفق في آخر مشاركة له 👌 وبناءً على الملف المرفق ، قمت بإضافة حقل جديد نصي = "FtraID" ، في الجدول "tblcomIn" ، وقيمته يتكون رقم الفترة التي سجل فيها الموظف حضور أو انصراف . وتم اعتماد القيم ( 1 = حضور ، 2 = انصراف ، 3 = حضور متأخر ) في الحقل chekType داخل نفس الجدول . بحيث نعالج :- التأكد من إدخال رقم الموظف وعدم تركه فارغاً . التحقق من وجود الموظف في جدول الموظفين tblNames . تحديد الفترة الزمنية المناسبة (الفترة الحالية) حسب الوقت الآن من حقول start_work وend_work في جدول الفترات tbl_Ftrat . إذا لم تكن الفترة الحالية ضمن أي فترة معرفة ، يتم تسجيل حركة دخول متأخر ( chekType = 3 ) . إذا كانت الفترة الحالية معروفة :- * حساب عدد حركات الدخول ( chekType = 1 أو 3 ) والخروج ( chekType = 2 ) للموظف في نفس الفترة واليوم الحالي. * منع تسجيل دخول جديد في نفس الفترة واليوم إذا كان الموظف قد أكمل دورة دخول وخروج ( أي أن عدد الدخول أقل أو يساوي عدد الخروج ) . * تحديد نوع الحركة القادمة ( دخول أو خروج ) حسب آخر حركة مسجلة للموظف في نفس الفترة واليوم . * تسجيل الحركة الجديدة (دخول ، خروج ، أو دخول متأخر) في جدول tblcomIn مع ربطها بالفترة . * إعلام المستخدم برسالة تأكيد نوع الحركة والفترة . وهذا ملف التعديل ، لإجراءاتكم بالنتيجة اذا كانت غير مطابقة أو يوجد احتمالات لم تخطر لي حالياً .. comOutDb.zip
  10. كيف يمكن لي ان اطلب خدمة وتعديل على قاعدة بيانات خاصة بي اكسس واضافة صلاحيات المستخدمين فقط وتشفير وحماية النظام برقم القرص الصلب هل يمكن لاخد مساعدتي بمقابل مادي ويتم التواصل معي لو سمحتوا لي مشاريع كثيرة واريد احد يساعدني بارك الله فيكم كيف يمكن الوصول الى شخص فاهم بشكل غير عادي معه مبلغ مادي وينجز طلبي خلال ايام وهل يسمح لي بطرح رقم هاتفي واتساب في المنتدى ؟ تواصل معي واتساب / 00967784455777
  11. هذا مثال لعرض ما تم نقاشه نريد اجراء العمليات عليه والضبط حسب جدول الفترات الحقلان : startWithFree و endWithFree ستختفي من الفورم مستقبلا ولكني وضعتها للاستئناس والتأكد من النتيجة comOutDb.rar
  12. تسلم كتر خيرك وانا اسف لتعبك معايا شكرا
  13. استدراك : الدوام الخاص الافضل ان يكون متاح له اكثر من تبويب مثل : خاص1 ، خاص2 ، خاص3 وهكذا ... وبرمجيا فعلا هو متاح الى مالا نهاية والسبب انه قد يوجد اكثر من موظف خاص اوقاته تختلف عن الآخر وهنا يتبين اننا بحاجة الى جدول فرعي واحد فقط .. يتم تسجيل الفترات وأسماءها من قبل المستخدم حسب تصوري الآن اصبح المشروع اكثر مرونة من حيث تحديد الفترات هل هذا التصور سليم ؟
  14. تمام بارك الله فيك بالنسبة لجدول الورديات ( من تاريخ الى تاريخ ) لسنا بحاجته .. والسب ان العمل مدني مستمر اذا سيكون الجدول الفرعي : صباحية / مسائية / دوام كامل/ دوام خاص وامام كل وردية بياناتها : وقت الحضور ووقت الانصراف .. والسماح وفي جدول الأسماء حقل (x) لاختيار الوردية المناسبة للموظف عند التوقيع حقل(x) سيحمل البيانات والمواصفات الخاصة به الموجودة في جدول الورديات ويتم تعامل الاجراءات الخاصة في فورم التوقيع بناء على ذلك صح؟ ما رأيك
  15. بسيطه نعمل لها فكره يا سلام مش عارف كلمة حضرتك والتعامل برسميات ده مش مريحنى حاسس انى مش قادر افهمك كده
  16. حركة الإرباك هذه تحصل حتى عندما يكون لديك نموذج آخر وهو مفتوح وعليه تايمر .. وأنت تشتغل على نموذج آخر مش عليه تايمر .. أو حتى وأنت تكتب أكوادك في موديول عام .. هذا ما كان يقصده المعلم العود @jjafferr ... ويظهر أن الكود اللي عملته حضرتك يتصرف بنفس الطريقة التي يتصرفها التايمر المضمن في نماذج الأكسس (حسب ما أفاد المعلم العود ) 🙂
  17. وعليكم السلام ورحمة الله وبركاته معلمنا القدير .. 🙂 🌹 وأنا أحد تلاميذك أسمحلي بأن أطرح فكرتي في هذا الموضوع ( وقد عملت على مشروع مشابه) .. 🙂 أولا : نفترض أن الموظف له فترة دوام محددة (من ضمن القائمة التي ذكرتها) بين تاريخين محددين مثال : 1- شهر رمضان له أوقات دوام مختلفة عن باقي الشهور. 2- الموظف أنتقل من موقع عمل لموقع آخر له فترة دوام مختلفة. 3- الموظف تغيرت ورديته من صباحية إلى مسائية أو العكس. 4- والأمثلة كثيرة ..... ثانيا : نقوم بتصميم جدول فرعي لجدول الموظفين (جدول الورديات) يتم فيه إضافة سجل لكل نوع دوام للموظف حسب نوع الوردية وتحديد الفترة الزمنية (من تاريخ) ---> (إلى تاريخ). ثالثا : تصميم نموذج فرعي يضاف لنموذج الموظفين يتم فيه تعبئة هذه البيانات التي ذكرناها في جدول الورديات . رابعا : يتم احتساب مدة العمل والتأخير والانصراف المبكر وعدد ساعات العمل التي أداها الموظف بناءً على فترة دوامه المذكورة في جدول الورديات . وهذه صور توضيحية حسب المشروع الذي عملت عليه وهو خاص ببرنامج لأحد الاخوة 🙂 : جدول الورديات : نموذج بيانات الموظفين + النموذج الفرعي للورديات ( الورديات التي ليس لها تاريخ نهاية هي ورديات مستمرة حتى تاريخ اليوم ولها اعتبار في كود الحسابات) : صورة مقربة للنموذج الفرعي : القائمة المنسدلة للورديات تأخذ بياناتها من جدول فرعي آخر يتم فيه تسجيل أنواع الورديات والبيانات المتعلقة بها : بعد هذا قمنا بتصميم جملة من الدوال الخاصة بجلب البيانات الخاصة بتفاصيل الورديات من الجداول وتطبيقها على الموظفين وحساب ما يطلب حسابه .. هذا باختصار وسلامتكم 🙂
  18. أستاذي الفاضل / Foksh اشكر لك سرعة تفاعلك نعم هذا المطوب وجزاك الله خير
  19. المفروض ان الكود يحتوى على StopSystemClock عند الاغلاق يتوقف تحديث التيمر الا اذا انت بقه استخدمت ازرار لوحة المفاتيح لفتح المحرر اثناء عمل النموذج ؟؟
  20. سنأخذ الجداول واحد واحد : الأول : جدول رصد الحضور والانصراف : ( الحقل الواحد) المعرف / حقل رصد وقت الحضور والانصراف Now / حقل النوع : ( O/I) ما رأيكم ؟؟
  21. هذي مشكلة شائعة .. وهي لما تكتب الكود ويكون النموذج اللي عليه التايمر مفتوح يتم عمل مثل ال Requery حتى على صفحة تحرير الأكواد .. وهذا يحدث نوع من الإرباك والتقطيع المزعج للمبرمج . وللتخلص من هذا التقطيع يجب عليك إما أن تغلق النموذج المعني أو فتحه في وضع التصميم .
  22. السلام عليكم ورحمة الله احبتي واخوتي الخبراء وكافة اعضاء هذا المنتدى المبارك اريد ان اشارككم عقولكم .. ونضيف الى المنتدى دروسا جديدة مفيدة وحيث ازعم اني معلم في هذا المنتدى .. فأنا اعطي درسا للمبتدئين .. ولمن يريدون انشاء مشاريعهم .. ان الاستشارة ودراسة المشروع من جميع جوانبه اهم شيء في العمل .. لا بد من استشارة اهل الخبرة قبل البدء في اول خطوة . وعن نفسي لا اجد غضاضة في الاستشارة في امور تبدو بديهية للمبتدىء وأول خطوة هي اعداد الجداول .. ومازلت عند رأيي ان ضبط الجداول بالشكل الصحيح عبارة عن تنفيذ 80% من المشروع .. ندخل لصلب الموضوع : صاحب العمل طلب ان تكون الاجراءات كخطوط عريضة على النحو التالي : ١- امكانية تحديد وقت دوام الموظف لفترة صباحية. ( 4 ساعات) ٢- امكانية تحديد وقت دوام الموظف لفترة مسائية. ( 4 ساعات) ٣- امكانية تحديد وقت دوام الموظف فترتين صباحية ومسائية. ٤- امكانية تحديد وقت دوام الموظف فترة دوام كامل ٨ او ٩ ساعات. 5- امكانية تعديل وقت دوام موظف فترة مختلفة مؤقته مثل المحاسب يكون البرنامج مرن بحيث يخدم في برمضان ( عند تغير وقت العمل ) هذه الطلبات اخذتها نسخ لصق المطلوب .. ما الجداول التي احتاجها لهذه الجزئية .. التي هي التحكم بهذه المتطلبات علما ان العملية مطلوب ان تكون آلية من غير تدخل المستخدم المستخدم فقط يقوم باعداد هذه الضوابط من خلال جدول التحكم
  23. السلام عليكم ورحمة الله تعالى وبركاته استاذى الجليل ومعلمى القدير و والدى الحبيب الاستاذ @jjafferr ممكن أعرف إيه هى المشكله اللى حضرتك حصلت عليها
  24. جرب هدا في الخلية E2 = D2 - PRODUCT(C2, 10) أو =SUM(D2, -C2*10) المعدات v3.xlsx
  25. السلام عليكم اما انا فما احب استعمال Timer في نماذجي ، لأنها تؤذيني لما اشتغل في الكود !! واعتقدت ان كود اخوي ابو جودي سيحل المشكلة ، ولكن للأسف ، حصلت على نفس المشكلة في الكود !!
  26. السبب هو أنه يوجد خلايا مدمجة ، فكيف سيتم تمييز في اي خلية سيتم ادراج التاريخ و الوقت !!!!! قمت بتعديل مواضع الـ CheckBox في ملفك ، وتعديل الدالة بحيث تتعامل مع الخلايا المدمجة ، لتصبح كالتالي :- Sub FokshCheckBox() Dim chk As CheckBox Dim rng As Range Dim rowNum As Long, colNum As Long Dim targetCell As Range Dim cbValue As Long On Error GoTo SafeExit Set chk = ActiveSheet.CheckBoxes(Application.Caller) cbValue = chk.Value If chk.TopLeftCell Is Nothing Then Exit Sub Set rng = chk.TopLeftCell rowNum = rng.Row colNum = rng.Column Set targetCell = Cells(rowNum, colNum + 1) If targetCell.MergeCells Then Set targetCell = targetCell.MergeArea.Cells(1, 1) End If If cbValue = xlOn Then If IsEmpty(targetCell.Value) Then targetCell.Value = Now End If ElseIf cbValue = xlOff Then targetCell.MergeArea.ClearContents End If SafeExit: End Sub اختيار التاريخ.xlsm
  1. أظهر المزيد
×
×
  • اضف...

Important Information