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

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

  1. kkhalifa1960

    kkhalifa1960

    الخبراء


    • نقاط

      3

    • Posts

      2102


  2. محمد هشام.

    محمد هشام.

    الخبراء


    • نقاط

      3

    • Posts

      1795


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

    Foksh

    الخبراء


    • نقاط

      2

    • Posts

      3551


Popular Content

Showing content with the highest reputation on 04/20/25 in مشاركات

  1. وعليكم السلام ورحمة الله تعالى وبركاته هذا يتطلب ببساطة تحديد حجم ثابت للدوائر بدلا من حسابه بناء على حجم الخلايا يمكنك تغيير هذه القيمة حسب الحجم الذي ترغب فيه tmp = 10 Option Explicit Sub DrawCircles() Const SROW As Long = 6, EROW As Long = 10, SCOL As Long = 2, ECOL As Long = 9 Dim ws As Worksheet, sColName As String, i As Long, j As Long, n As Long, tmp As Double Application.ScreenUpdating = False Call DelShap Set ws = ActiveSheet tmp = 10 For i = SROW To EROW With ws n = .Range("k" & i).Value For j = ECOL To SCOL Step -1 If .Range(.Cells(i, j).Address).Value <> Empty And n > 0 Then sColName = Split(.Cells(1, j).Address, "$")(1) With ActiveSheet.Shapes.AddShape(msoShapeOval, _ .Range(sColName & i).Left + 0.5 * (.Range(sColName & i).Width - 2 * tmp), _ .Range(sColName & i).Top + 0.5 * (.Range(sColName & i).Height - 2 * tmp), _ 2 * tmp, 2 * tmp) .Line.Weight = 2 .Line.ForeColor.RGB = RGB(10, 10, 10) .Fill.Visible = msoFalse End With n = n - 1 End If If n = 0 Then Exit For Next j End With Next i Application.ScreenUpdating = True End Sub
    2 points
  2. وعليكم السلام ورحمة الله وبركاته لا اعلم رأي المشرفيين واعتقد يمكنك وضع استفسارك هنا مع تعديل عنوات الموضوع من النقاط الثلاتة الافقية يسارا ان امكنك ذلك
    1 point
  3. وعليكم السلام ورحمة الله وبركاته أهلا بك أخي إذا كان الموضوع قديما فيمكن أن يكون العضو قد ترك هذا المنتدى وعلى العموم : إذا أردت إرسال رسالة خاصة له ضع مؤشر الماوس على أيقونة العضو سينبثق مربع حوار في أسفله ثلاث خيارات من ضمنها (رسالة) اضغط عليه واكتب رسالتك الخاصة به
    1 point
  4. وعليكم السلام ورحمة الله وبركاته الاستاذ الفاضل / algammal غلق الموضوع من صلاحيات المشرفين ويتم عادة بعد اختيار تمت الاجابة على كل حال يمكنك فتح موضوع جديد موضحا فيه طلبك او استفسارك وستجد ان شاء الله جوايا لاستفسارك لك كل التقدير والاحترام
    1 point
  5. اولا الكود يعمل لدي بشكل جيد ......... لكن هذا غير مجدي العمل الذي ارسلته لك سابقاَ عمل أكسس .............
    1 point
  6. تفضل استاذ @Abdelaziz Osman محاولتي حسب مافهمت .اليك المرفق . Mismatch (1).rar
    1 point
  7. زودت جدول يحفظ النتائج تراكمياً (tbl_AllTemp) وباقي الاعمال التي زودتها امشي حسب الترتيب وانت ستفهم الباقي ....... لكن لي ملاحظة لما تزود ممتحن زوده عن طريق الرقم 1 علشان بيختار رقم الموظف الجديد تلقائياً . أي لستفسار أنا حاضر ز ووافني بالرد . SamerFinal_2.rar
    1 point
  8. نعم أخي @نبا زيد يمكننا فعل دالك لاكن لدي إقتراح أعتقد أنه أفضل بدلا من تعديل الألوان مباشرة في الكود كل مرة يمكنك تحديد ألوان الخلفية ولون الخط بسهولة من داخل ورقة تمت إظافتها للملف بإسم الإعدادات كما هو موضح في الصورة التالية كل ما عليك فعله هو 1) تحديد اسم الحالة في العمود A مثل غائب - متأخر - مجاز - عطلة - حاضر - نهاية الأسبوع 2) اختيار اللون المناسب للخلفية في العمود B 3) اختيار اللون المناسب للخط في العمود C كل حالة سيتم تلوينها تلقائيا بناء على الألوان التي تحددها في ورقة الإعدادات مما يتيح لك تعديل الألوان في أي وقت بما يتناسب مع احتياجاتك دون التأثير على الكود أتمنى أن تجد هذه الفكرة مفيدة بالتوفيق Option Explicit Sub Remplissez() On Error GoTo SupApp Const FontName As String = "Arial" Const StartCol As Long = 5, TimeCol As Long = 4, NamArr As Long = 2 Const StartRow As Long = 7, LastCol As Long = 34 Dim xTime As String, Snt As String, Key As String, Icon As String Dim tmp As Object, tbl As Object, xColor As Object, xFont As Object Dim xAbsen As String, xName As String, DayName As String, Status As String Dim LastRow As Long, i As Long, col As Long, r As Long, n As Long, xDate As Date Dim f As Boolean, sWeekend As Boolean, a As Variant, b As Variant, c As Variant, j As Range Dim dest As Worksheet: Set dest = Sheets("الاستمارة") Dim CrWS As Worksheet: Set CrWS = Sheets("التواريخ") Dim WsSet As Worksheet: Set WsSet = Sheets("الإعدادات") Icon = ChrW(&H2714): xAbsen = ChrW(&H274C) Set tmp = CreateObject("Scripting.Dictionary") Set tbl = CreateObject("Scripting.Dictionary") Set xColor = CreateObject("Scripting.Dictionary") Set xFont = CreateObject("Scripting.Dictionary") For r = 2 To WsSet.Cells(WsSet.Rows.Count, "A").End(xlUp).Row Dim OnRng As String: OnRng = Trim(WsSet.Cells(r, 1).Value) If OnRng <> "" Then xColor(OnRng) = WsSet.Cells(r, 2).Interior.Color xFont(OnRng) = WsSet.Cells(r, 3).Interior.Color End If Next r SetApp False For r = 4 To CrWS.Cells(CrWS.Rows.Count, "A").End(xlUp).Row If Trim(CrWS.Cells(r, 3).Value) = "عطلة" Then tmp(CLng(CrWS.Cells(r, 1).Value)) = True Next r For r = 4 To CrWS.Cells(CrWS.Rows.Count, "E").End(xlUp).Row If CrWS.Cells(r, 5).Value <> "" And IsDate(CrWS.Cells(r, 6).Value) Then xName = Trim(CrWS.Cells(r, 5).Value) xDate = CrWS.Cells(r, 6).Value xTime = Trim(CrWS.Cells(r, 9).Value) Status = Trim(CrWS.Cells(r, 7).Value) Key = xName & "|" & CLng(xDate) & "|" & xTime tbl(Key) = Status If xTime = "صباحي/مسائي" Then tbl(xName & "|" & CLng(xDate) & "|صباحي") = Status tbl(xName & "|" & CLng(xDate) & "|مسائي") = Status End If End If Next r LastRow = dest.Cells(dest.Rows.Count, 4).End(xlUp).Row a = dest.Range(dest.Cells(StartRow, 1), dest.Cells(LastRow, LastCol)).Value b = dest.Range(dest.Cells(5, StartCol), dest.Cells(5, LastCol)).Value c = dest.Range(dest.Cells(6, StartCol), dest.Cells(6, LastCol)).Value For i = 1 To UBound(a, 1) If Trim(a(i, NamArr)) <> "" Then xName = Trim(a(i, NamArr)) For col = StartCol To LastCol n = col - StartCol + 1 If IsDate(b(1, n)) Then xDate = b(1, n): DayName = c(1, n): f = tmp.exists(CLng(xDate)) sWeekend = (DayName = "الجمعة" Or DayName = "السبت") xTime = Trim(a(i, TimeCol)) Key = xName & "|" & CLng(xDate) & "|" & xTime Status = IIf(tbl.exists(Key), tbl(Key), "") a(i, col) = IIf(f Or sWeekend Or Status = "غائب" Or _ Status = "مجاز" Or Status = "متأخر", xAbsen, Icon) End If Next col Next i dest.Range(dest.Cells(StartRow, 1), dest.Cells(LastRow, LastCol)).Value = a With dest.Range(dest.Cells(StartRow, StartCol), dest.Cells(LastRow, LastCol)) .Font.Name = FontName: .Font.Bold = True .Font.Color = vbBlack: .Interior.ColorIndex = xlNone For Each j In .Cells If j.Value = Icon Then If xColor.exists("حاضر") Then j.Interior.Color = xColor("حاضر") If xFont.exists("حاضر") Then j.Font.Color = xFont("حاضر") ElseIf j.Value = xAbsen Then Dim ColArr As Long: ColArr = j.Column - StartCol + 1 Dim RowArr As Long: RowArr = j.Row - StartRow + 1 xDate = b(1, ColArr) If Trim(a(RowArr, NamArr)) <> "" Then xName = Trim(a(RowArr, NamArr)) xTime = Trim(a(RowArr, TimeCol)) Key = xName & "|" & CLng(xDate) & "|" & xTime Status = IIf(tbl.exists(Key), tbl(Key), "") Snt = IIf(tmp.exists(CLng(xDate)), "عطلة", IIf(c(1, ColArr) = "الجمعة" Or _ c(1, ColArr) = "السبت", "نهاية الأسبوع", Status)) If xColor.exists(Snt) Then j.Interior.Color = xColor(Snt) If xFont.exists(Snt) Then j.Font.Color = xFont(Snt) End If Next j End With ExitSub: SetApp True MsgBox "تم تحديث البيانات بنجاح", vbInformation Exit Sub SupApp: Resume ExitSub End Sub Private Sub SetApp(ByVal enable As Boolean) On Error Resume Next Application.ScreenUpdating = enable Application.EnableEvents = enable Application.DisplayAlerts = enable Application.Calculation = IIf(enable, xlCalculationAutomatic, xlCalculationManual) End Sub استمارة-بعض النتائج المطلوبة v3.xlsb
    1 point
  9. مشاركة مع استاذى الجليل و معلمى القدير الاستاذ @ابو عارف وبعد إذن أستاذى هناك بعض الحالات التي قد تستوجب تعديلات إضافية لضمان التوافق بين الأنوية المختلفة (32 بت و 64 بت) وكذلك بين إصدارات الويندوز وأوفيس المختلفة عند التعامل مع دوال الـ API في VBA و يجب الانتباه لها: في النظام 32 بت، النوع Long يستخدم بشكل طبيعي لتخزين المؤشرات (pointers)، لكن في النظام 64 بت، يجب استخدام LongPtr بدلاً من Long لتخزين المؤشرات. المشكلة: إذا لم تستخدم LongPtr في النظام 64 بت، فقد تحدث أخطاء في الحسابات التي تتعلق بالحجم أو العناوين، لأن الـ Long لا يدعم العناوين الأكبر في الأنظمة 64 بت. ملاحظة: في الأنظمة 64 بت، LongPtr قادر على التعامل مع الأرقام التي تتجاوز سعة الـ Long العادية (التي تصل إلى 2,147,483,647). في الأنظمة 32 بت، LongPtr يتم تحديده تلقائيًا ليكون Long. التعامل مع السلاسل النصية (Strings) في بعض الأحيان، قد تحتاج إلى تعديل طريقة تعريف السلاسل النصية المستخدمة مع الـ API إذا كنت تستخدم سلاسل نصية مع الـ API، تأكد من إضافة ByVal و ByRef بشكل صحيح استخدم String * n بدلاً من String في بعض الحالات التي تتطلب أن تكون السلسلة ثابتة الطول التعامل مع الهياكل (Structures) في بعض الأحيان، تستخدم الهياكل (مثل Type في VBA) مع دوال الـ API. إذا كنت تستخدم هياكل كبيرة، فقد تحتاج إلى التأكد من أن الأنواع داخلها متوافقة مع النظام 64 بت تأكد من أن جميع الهياكل تتعامل بشكل صحيح مع الأنواع مثل LongPtr بدلاً من Long أو Integer عندما يتعلق الأمر بالمؤشرات لأنه قد يتغير حجم الحقول في الهيكل بين الأنوية 32 و 64 بت، مما يسبب أخطاء في التعامل مع الذاكرة أو المؤشرات التأكد من استخدام #If و #ElseIf بشكل مناسب عند التعامل مع دوال API في VBA وتحديد التوافق بين الأنظمة 32 بت و 64 بت، تأكد من استخدام #If, #ElseIf و #End If بشكل صحيح عند تخصيص الوظائف للأجهزة ذات الأنوية المختلفة. الشرح السابق يوضح الفرق فى التعامل مع النواتان و كتابة الكود بشكل صحيح ليصبح الكود متوافقا بين النواتان لانه لو قمت بالاستبدال لن يعمل على النواة 32
    1 point
  10. عين الصواب ، واعتقد انه حل مثالي .. وتطبيقاً كما أشار معلمنا الجليل @ابوخليل ، قمت بانشاء 4 حقول في الجدول Tbl_saf كالآتي :- EnteredBy SpellingReviewedBy WrittenBy WritingReviewedBy حقول نصية ، وقمت باضافة 4 مربعات نص في التقرير في الجزء PageFooterSection ، وتم استخدام الدالة Dlookup كالآتي :- Tx05 : =DLookUp("EnteredBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx06 : =DLookUp("SpellingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx07 : =DLookUp("WrittenBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx08 : =DLookUp("WritingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") حيث تم الاعتماد على الكومبوبوكس Combo5 كشرط لمعرف الصف Database35.zip
    1 point
  11. السلام عليكم 🙂 فيه خطوط جاهزة تعمل مثل خطوط شاشات العرض LCD ، مرفق احدها ، واليك طريقة استعمال الخط Font : أ. قم بتنصيب الخط في الوندوز ، ثم في الاكسس استعمله كأي خط عادي ، وفي حالتك ، استعمله للارقام 🙂 ، او ب. او اذا لا تريد ان تنصب الخط في الوندوز (قد لا تستطيع الوصول لحاسبة جميع المستخدمين) فيمكنك ان تجعل برنامجك يستعمله لبرنامجك فقط (في احد برامجي ، استعمل خط الباركود code39.ttf ويجب ان يكون في البرنامج علشان ينتج الباركود ، فاستعمل هذه الطريقة) : 1. ضع الخط في نفس مجلد برنامجك ، 2. اعمل وحدة نمطية مستقلة ، احفظها باسم mod_AddFonts ، واضف فيها هذا الكود: Option Compare Database Option Explicit Private Declare PtrSafe Function AddFontResource Lib "gdi32.dll" Alias "AddFontResourceA" ( _ ByVal lpFileName As String) As Long Public Function AddFonts(Font_Name_Path As String) Dim result As Long result = AddFontResource(Font_Name_Path) 'MsgBox Result & " fonts added" End Function 3. في حدث "عند تحميل" اول نموذج في برنامجك ، نادي الدالة اعلاه هكذا (طبعا تكتب اسم الخط ومساره في مجلد برنامجك) : 'Code39.ttf Font, install it, just in case it is not installed before Call AddFonts(CurrentProject.Path & "\Barcode_Font\code39.ttf") 4. بس على كمبيوترك (كمبيوتر المبرمج) ، يجب ان تنصب الخط في الوندوز لأول مرة ، ثم تعمل برنامجك ، ولما كل شيء يكون تمام ، تقدر تحذف الخط من الوندوز ، وتستعمل الطريقة اعلاه 🙂 وبما انه خط عادي ، فما فيه داعي لكود خاص علشان تعرض الارقام ، والتعديل والالوان وحجم الخط ووووو ، يكون بكل سهولة ، لأنه مجرد خط 🙂 جعفر digital-7.zip
    1 point
  12. السلام عليكم ورحمة الله وبركاته أخيراً وبعد أن أزعجتكم بأسئلتى واستفساراتى انتهيت من تصميم استمارة 132 ع ح الخاصة بالمرتبات الحكومية المصرية خاصة أننى مجدت ان كثيرر من المنتديات يفتقر إلى مثل هذه الأعمال ، وأشهد أنكم لم تبخلوا على بالنصح والإرشاد وأخص بالذكر العمالقة أم عبد الله والأستاذ / جمال عبد السميع وغيرهم الكثيرين أرفق لكم الملف مفتوح بعد تصميمه بشكل بسيط وبدائى ، وأرحب بشدة أن يتدخل خبرائكم وأساتذتى بالتعديل عليها بما يرونه وأن يدلوا بدلوهم فيها حتى تخرج بأحسن صورة لائقة يفيد منها أعضاء هذا المنتدى العزيز على فكرة ، أنا عملت كل الأكواد المطلوبة ما عدا الدمغة مش عارف أحسبها كما كنت أتمنى فمرحباً لمن ليه الحل أيضاً . إستمارة 132 ع ح open.rar
    1 point
×
×
  • اضف...

Important Information