بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 04/05/25 in all areas
-
1 point
-
1 point
-
الصف الثالث مشاغب لذا .. وعقابا له .. جعلته في تبويب لوحده جرب الآن اعمل من النموذج فقط وانظر وابحث عن الثغرات والملاحظات الحضور حتى الآن خارج المنظومة Database23.rar1 point
-
🔹 قبل أن نصل إلى نقطة إدخال البيانات ، هناك بعض الأمور التي من الأفضل تجنبها لضمان تصميم سليم وقابل للتطوير . 1️⃣ استخدام مربعات التحرير والسرد داخل الجداول بشكل مباشر ليس فكرة جيدة ( من وجهة نظري وهي غير ملزمة طبعاً ) . 🔴 لماذا ؟ عند تخزين قيمة مثل "مصري" مباشرة داخل الجدول ، فإن أي استعلام أو كود VBA سيتعامل مع النصوص بشكل مباشر ، مما قد يبطئ عمليات البحث والاستعلامات . والأسباب التالية كفيلة بتغيير وجهة نظرك 😉 :- 1️⃣ يؤدي إلى تخزين القيم النصية بدلاً من القيم الرقمية المترابطة الى عدة مشاكل منها :- عند إدخال "مصري" مباشرةً داخل الحقل ، يصبح التعامل مع البيانات أبطأ عند تنفيذ الاستعلامات ، مقارنةً بتخزين رقم معرف (ID) وربطه بجدول منفصل يضم الجنسيات . فالأفضل هو تخزين القيم كأرقام مرجعية ( مثلاً ، 1 = مصري ، 2 = غير مصري ... إلخ ) وجلب النص عند الحاجة عبر الاستعلامات . 2️⃣ صعوبة في عمليات الفلترة والاستعلامات المتقدمة فعند الحاجة إلى إجراء استعلامات تعتمد على الجنسية ، مثلاً "كم عدد الموظفين المصريين؟" ، سيكون من الأفضل البحث باستخدام القيمة الرقمية (مثلاً gnsya = 1) بدلاً من البحث عن النصوص ( gnsya = "مصري" ) . فالبحث بالأرقام أسرع وأكفأ مقارنة بالبحث باستخدام النصوص . 3️⃣ تقييد التحديثات وإدارة البيانات عند الحاجة إلى تعديل اسم جنسية معينة ( مثلاً تغيير "مصرى" إلى "مصري" ) ، سيكون عليك تحديث جميع السجلات في الجدول ، مما يزيد من مخاطر الأخطاء . أما عند استخدام جدول منفصل للجنسيات ( كما فعلت ) ، فيكفي تحديثه في مكان واحد فقط وسينعكس التغيير تلقائيًا على جميع السجلات . 🎯 الخلاصة باختصار :- 1️⃣ التعامل مع الأرقام أكثر كفاءة في العمليات الحسابية ، الفلترة ، والبحث ... إلخ 2️⃣ عند الحاجة إلى تغيير اسم جنسية ، يتم تعديله في مكان واحد فقط وليس في جميع السجلات . 3️⃣ يتيح لك إنشاء علاقات أكثر قوة بين الجداول ويسهل بناء التقارير المستقبلية .1 point
-
إتفاديا للتعديل أخي @Abaas يرجى ارفاق نفس الملف به مثال لشكل البيانات لديك على الملف الاصلي من النطاق A:U مع توضيح هل سيتم عرض جميع الأعمدة على الليست بوكس أي 21 عمود أو سيتم إظهار أعمدة معينة فقط لنتمكن من تحديد عرض الأعمدة و عدد Textbox المطلوب إظافتها بشكل دقيق1 point
-
السلام عليكم كل الشكر للاخ محمد هشام على سعة صدره .. وكذلك للاخ محمود نصر ... الشرح داخل المرفق جزاكم الله خيرا ارجو ان اكون وفقت لشرح المطلوب ,, تحياتي للجميع تعديل فورم.rar1 point
-
بعد اذن استاذنا المتألق دائما / محمد هشام. تم اضافة المسلسل تلقائى وتم تسجيل تاريخ ووقت التعديل واسم المستخدم تلقائيًا عند تعديل أي سجل في جدول البيانات الخاص بك. فى العمود 8 والعمود 9 منظومة-الشؤون-الادارية - Copy.xlsm1 point
-
أخي لقد سبق تدكيرك بإرفاق ملفك ليس هدا مع بعض البيانات الوهمية للتوضيح عمود التسلسل - عمود وضع الصورة -شكل أسماء الفولدرات هل هي موجودة ام يتم إنشائها -عمود الموظف -اظافة ورقة المحذوفات- هل سيتم عرض جميع الأعمدة على الليست بوكس أو أعمدة معينة !!!! هده تفاصيل يجب توضيحها ضمن الملف الخاص بك بشكل دقيق لا يمكننا الإشتغال على التخمين فقط1 point
-
Dim Sh As Boolean Public Property Get f() As Worksheet Set f = Sheets("Sheet1") <========= إسم ورقة العمل المرغوب جلب إسم المصنف الجديد منها End Property Private Sub UserForm_Initialize() Dim WS As Worksheet, CrWS As Variant, i As Integer ' قم بتعديل أسماء أوراق العمل المرغوب إظهارها CrWS = Array("Sheet1", "Sheet2", "Sheet3") For Each WS In ThisWorkbook.Worksheets For i = LBound(CrWS) To UBound(CrWS) If WS.name = CrWS(i) Then ListBox1.AddItem WS.name Exit For End If Next i Next WS HideBar Me End Sub Private Sub CommandButton1_Click() Dim i As Integer, ShName As String, newWb As Workbook, sPath As String Dim tmps As Integer, shArr As String, sCount As Integer, WBname As String WBname = f.[R2].Value <======= قم بتعديل عنوان خلية الإسم بما يناسبك If WBname = "" Then: MsgBox "الرجاء إدخال إسم المصنف ", vbExclamation, "إنتباه": Exit Sub 'Code........ .............. End Sub Private Sub CommandButton2_Click() On Error GoTo SupApp Dim arr As New Collection, TempWb As Workbook, WS As Worksheet Dim i As Integer, sMsg As Integer, tbl As Boolean Dim WBname As String, sPath As String, shArr As String WBname = Trim(f.Range("R2").Value) If WBname = "" Then MsgBox "الرجاء إدخال اسم المصنف", vbExclamation, "تنبيه": Exit Sub tbl = Me.CheckBox1.Value For i = 0 To Me.ListBox1.ListCount - 1 If tbl Or Me.ListBox1.Selected(i) Then arr.Add Me.ListBox1.List(i) shArr = shArr & Me.ListBox1.List(i) & "- " sMsg = sMsg + 1 End If Next If sMsg = 0 Then MsgBox "الرجاء تحديد ورقة عمل واحدة على الأقل", vbExclamation, "تنبيه": Exit Sub If Len(shArr) > 0 Then shArr = Left(shArr, Len(shArr) - 2) End If If MsgBox("هل أنت متأكد أنك تريد حفظ الأوراق التالية؟" & _ vbNewLine & vbNewLine & shArr, vbYesNo + vbQuestion, "PDF" & " تأكيد الحفظ") = vbNo Then Exit Sub With Application .ScreenUpdating = False: .EnableEvents = False: .DisplayAlerts = False: .Calculation = xlCalculationManual End With Set TempWb = Workbooks.Add(xlWBATWorksheet) For i = 1 To arr.Count ThisWorkbook.Sheets(arr(i)).Copy After:=TempWb.Sheets(TempWb.Sheets.Count) Next sPath = ThisWorkbook.path & "\" & WBname & ".pdf" If Dir(sPath) <> "" Then Kill sPath TempWb.ExportAsFixedFormat Type:=xlTypePDF, fileName:=sPath, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False TempWb.Close False MsgBox "تم حفظ الملفات بنجاح", vbInformation, "PDF حفظ" Unload Me CleanUp: With Application .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True: .Calculation = xlCalculationAutomatic End With Exit Sub SupApp: On Error Resume Next: If Not TempWb Is Nothing Then TempWb.Close False Resume CleanUp End Sub تصدير صفحات v3.xlsm1 point
-
تفضل تم تعديل النسخ بداية من الصف 10 اما بخصوص التنسيق في الصورة فوق ليس له اي علاقة بالبيانات الخاصة بك اظافة اخي الفاضل انت تشتغل على يوزرفورم بمعنى التعامل و الترحيل يكون على حسب البيانات الموجودة في الليست بوكس لا اقل ولا اكثر ملاحظة تمت اظافة المعادلة المقترحة من طرف الاخ إيهاب عبد الحميد في اخر مشاركة لك للتجربة مستخلصات الاعمال الجنوبية- V4.xlsm1 point
-
السلام عليكم و رحمة الله ضع الكود الاول فى موديول عادى Sub HidColmns() Dim ws As Worksheet, SRng As String Dim FrRng As Range, SeRng As Range, ThRng As Range Dim LR As Long Set ws = Sheets("ورقة1") LR = ws.Range("B" & Rows.Count).End(3).Row SRng = ws.Range("C2").Text Set FrRng = ws.Range("F5:H" & LR) Set SeRng = ws.Range("I5:K" & LR) Set ThRng = ws.Range("L5:N" & LR) Application.ScreenUpdating = False Select Case SRng Case "الأول" FrRng.Columns.Hidden = False SeRng.Columns.Hidden = True: ThRng.Columns.Hidden = True Case "الثاني" SeRng.Columns.Hidden = False FrRng.Columns.Hidden = True: ThRng.Columns.Hidden = True Case "المجاميع" ThRng.Columns.Hidden = False FrRng.Columns.Hidden = True: SeRng.Columns.Hidden = True Case Else End Select Application.ScreenUpdating = True End Sub اما الكود الثانى فضعه فى حدث الورقة Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$C$2" Then Exit Sub HidColmns End Sub1 point
-
السلام عليكم ورحمة الله وبركاته أعزائي الأساتذة الكرام أنا سعيد بالانضمام إلى أسرتكم، أسأل الله أن يجعلنا ممن ينفع وينتفع بإخوانه... أنا مسؤول في مدرسة عن 5 مشرفين كل مشرف عنده 5 صفوف وفي كل صف 15 طالب. عندي ملفات إكسل لكل واحد منهم، يسجل فيه الحضور والغياب وفي نهاية الملف يوجد شيت للإحصائية. يوميا هم يعيدون إرسال الملف لي مرة ثانية حتى استخرج الإحصائية الموجود في ملف الإكسيل وأنسخ البيانات يدويا لوضعها في ملف الإحصائية الشهرية. الموضوع متعب نوعا ما، وأنا متأكد أني سأجد الحل الوافي والجواب الشافي لديكم. وأحتاج كذلك تكرما منكم تطوير هذا الملف، خاصة وقد بحثت في هذا المنتدى ووجدت ملف للأستاذ الكبير بن علية وسأرفقه لكم كذلك. الذي أعجبني في ملفه هو المجموع الغياب السنوي للطلاب وكذلك اختيارك للشهور وأيضا أعجبني نظام إذا تغيب الطالب لأكثر من 3 أيام فستنتقل بياناته إلى شيت جديد. أتمنى تطبيق كل ذلك في ملفي الذي سأقوم بإرفاقه، وأيضا أحبتي الكرام أنا نهاية كل شهر أقوم بإعادة صياغة الملف لتعديل التواريخ وغيرها وهذا أيضا شاق علي. وبالنسبة للشير بين الملفات سأقوم هذه السنة إن شاء الله بالعمل مع المشرفين عن طريق الون درايف أسأل الله أن يبارك فيكم والمعذرة أطلت كثيرا، لكن أحببت التفصيل للوصول إلى الغاية والسبيل. دمتم على طاعة الله ورعايته. إحصائية الغياب اليومي.xlsx مارس - الفصل الثاني B.xlsx ملف بن علية جزاه الله خيرا استفدت من فكرته الجميلة.xlsm1 point
-
1 point
-
الله يرحمك ويحسن اليك .. بحق الله يدخلك فسيح جناته كنت حقا فارسا للاكسيل وخلوقا الله يرحمك استاذ الحسامي لم تغلق اعمالك وتركتها لنا مفتوحه لنتعلم وندعو لك Sub Macro1() SpreadsheetPassword = 123 ActiveSheet.Unprotect Password:=SpreadsheetPassword Rows("10:15").EntireRow.Hidden = True ActiveSheet.Protect Password:=SpreadsheetPassword, UserInterfaceOnly:=True ActiveSheet.EnableOutlining = True End Sub Sub Macro2() SpreadsheetPassword = 123 ActiveSheet.Unprotect Password:=SpreadsheetPassword Rows("10:15").EntireRow.Hidden = False ActiveSheet.Protect Password:=SpreadsheetPassword, UserInterfaceOnly:=True ActiveSheet.EnableOutlining = True End Sub كود الحسامي رحمة الله عليه1 point
-
أخي العزيز الأستاذ / أبو صلاح الشكر موصول لأستاذنا الكبير سليم حاصبيا حفظه الله أمين جرب التعديل التالي في الكود إن شاء الله يحقق المطلوب تحياتي لكم ولأستاذنا سليم حاصبيا Sub اخفاء() Application.ScreenUpdating = False Range("c1:bd1").EntireColumn.Hidden = True My_Match = Application.Match(Range("a1"), Range("c1:bd1"), 0) + 2 Cells(3, My_Match).Resize(1, 3).EntireColumn.Hidden = False Application.ScreenUpdating = True End Sub اخفاء واظهار بحسب عدد معين.rar1 point
-
بسم الله الرحمن الرحيم الاخ الفاضل ابو حنين جزيل الشكر والتقدير لاكتشافك هذة الثغرة فهي فعلا نقطه هامه لذلك قم باستبدال كود اظهار الفورم بالكود التالى Sub Show_F2() If Sheets("My Account").Range("iv1").Value = "الدعم الفني" Then UserForm2.Show Else MsgBox " ليس لديك الصلاحيه " End If End Sub1 point
-
أخي العزيزalfahad أولا : اعتذر عن تأخري في الرد ثاانيا : نعم أقصد زيادة عمود فارغ في ورقة البيانات ثالثا : السبب أخي العزيز هو تكرار عنواين الأعمد في القادمين والمغادرين ماعدا ( من) في القادمين و( إلى ) في المغادرين فالتصفية تعتمد العنوان في العمود الأول ترتيبا وإذا تكرر نفس العنوان في عمود آخر يتم تجاهله وبما أن العناوين موجودة في بيانات القادمين ومجودة أيضا في بيانات المغادرين فعند التصفية يتم جلب بيانات القادمين ومن ثم أيضا يتم جلبها مرة أخرى في أعمدة بيانات المغادرين ولكن يمكن التخلص بزيادة حرف أو رقم في بيانات المغادرين للعناوين المكررة تفادياً للتكرار أو يمكن تسجيل كود تصفية لبيانات القادمين على حدة وكود آخرلتصفية بيانات المغادرين ويمكن في ما بعد دمج الكودين معا من محرر الأكواد وهذا ما فعلته في ملفك لاحظ الملف المرفق بيانات السائق (1).rar1 point