بحث مخصص من جوجل فى أوفيسنا
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 09/18/25 in all areas
-
السلام عليكم طبعا الفكره قديمه واحد الاخوه كان عامل مثلها ولاكن انا عدلت عليها بطريقه تكون سهلة وبسيطة وبدون اي شرح اليكم الببرنامج رسائل.zip3 points
-
وعيكم السلام ورحمة الله وبركاته ,, جرب هذه الفكرة البسيطة ، في زر داخل الورقة "2025" ، تم استخدام الكود التالي :- Sub Btn_Tr_Click() Dim wsSource As Worksheet Dim lastRow As Long, i As Long Dim cityName As String Dim wsTarget As Worksheet Dim sourceRow As Range Dim targetRow As Range Dim targetLastRow As Long Dim isDuplicate As Boolean Dim col As Variant Dim keyCols As Variant Dim copiedCount As Long, skippedCount As Long Dim skippedList As String Dim pasteType As XlPasteType Dim userChoice As VbMsgBoxResult Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.DisplayAlerts = False userChoice = MsgBox("هل ترغب في الترحيل مع التنسيق الكامل" & vbCrLf & _ "اضغط 'نعم' للترحيل مع التنسيق ، أو 'لا' للترحيل بالقيم فقط", vbYesNoCancel + vbQuestion + vbMsgBoxRight, "") If userChoice = vbCancel Then GoTo Cleanup If userChoice = vbYes Then pasteType = xlPasteAll Else pasteType = xlPasteValues End If Set wsSource = ThisWorkbook.Sheets("2025") lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row keyCols = Array(1, 2, 3, 4, 5, 6) For i = 3 To lastRow cityName = Trim(wsSource.Cells(i, 2).Value) If cityName <> "" Then On Error Resume Next Set wsTarget = ThisWorkbook.Sheets(cityName) On Error GoTo 0 If Not wsTarget Is Nothing And wsSource.Cells(i, 2).Value = wsTarget.Name Then Set sourceRow = wsSource.Range(wsSource.Cells(i, 1), wsSource.Cells(i, 10)) isDuplicate = False For targetLastRow = 3 To wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row Set targetRow = wsTarget.Range(wsTarget.Cells(targetLastRow, 1), wsTarget.Cells(targetLastRow, 10)) isDuplicate = True For Each col In keyCols If sourceRow.Cells(1, col).Value <> targetRow.Cells(1, col).Value Then isDuplicate = False Exit For End If Next col If isDuplicate Then Exit For Next targetLastRow If Not isDuplicate Then targetLastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1 sourceRow.Copy wsTarget.Range("A" & targetLastRow).PasteSpecial Paste:=pasteType Application.CutCopyMode = False copiedCount = copiedCount + 1 End If Else skippedCount = skippedCount + 1 skippedList = skippedList & "- " & cityName & vbCrLf End If End If Next i MsgBox "? تم الترحيل بنجاح" & vbCrLf & _ copiedCount & ":عدد الصفوف المنسوخة " & vbCrLf & _ skippedCount & ": عدد الصفوف التي تم تجاهلها " & IIf(skippedCount > 0, vbCrLf & ": المدن التي تم تجاهلها " & vbCrLf & skippedList, ""), vbInformation + vbMsgBoxRight, "" Cleanup: Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.DisplayAlerts = True End Sub TR 2025.zip3 points
-
هذا بيت القصيد لن يشعر بما صنعته له .. ولن يختلف عليه شيء المعنى ان التوقيع الأول حضور والثاني انصراف .. بناء على : معيار تاريخ اليوم .. ويمكننا جعل وقت الدوام مفتوح خلال اليوم ولا نحصره بين ساعات محددة ومنعا للتكرار الغير مقصود ( ودوما يحصل ) نجعل شرط فاصل وقت _ دقيقة مثلا _ بين التوقيع الأول والتوقيع الثاني2 points
-
وفيت وكفيت .. بارك الله فيك .. حل محكم شروحاتي ليست موجهة للسائل بعينه وانما اثراء للموضوع لمن يمر من هنا2 points
-
وعليكم السلام ورحمة الله وبركاته .. باعتقادي أن الطريقة التي تم تسجيل فيها وقت الحضور ، و وقت الخروج لكل موظف هي بحد ذاتها غير سليمة ( لم أقل غير صحيحة ) . فالأصل ان يتم تسجيل الحضور والخروج بشرطين . رقم الموظف وتاريخ اليوم . هذا اذا كان الموظف لا يسجل حضور في تاريخ ويسجل خروج في تاريخ اليوم التالي ( كأن يكون هناك شفت أو وردية ليلية ) . ولكن لتلبية طلبك ، جرب هذا الاستعلام :- SELECT T1.emp_name AS [اسم الموظف], T1.emp_ID AS السجل, T1.StartDate AS التاريخ, T1.StratTime AS [وقت الدخول], (SELECT EndTime FROM Tbl1 WHERE emp_ID = T1.emp_ID AND StartDate = T1.StartDate AND EndTime IS NOT NULL) AS [وقت الخروج], Format(DateDiff("n",T1.StratTime,(SELECT EndTime FROM Tbl1 WHERE emp_ID = T1.emp_ID AND StartDate = T1.StartDate AND EndTime IS NOT NULL))\60,"00") & ":" & Format(DateDiff("n",T1.StratTime,(SELECT EndTime FROM Tbl1 WHERE emp_ID = T1.emp_ID AND StartDate = T1.StartDate AND EndTime IS NOT NULL)) Mod 60,"00") AS [عدد ساعات العمل] FROM Tbl1 AS T1 WHERE (((T1.StratTime) Is Not Null)); عذراً ، معلمي الفاضل @ابوخليل ، صدقاً لم أنتبه الى ردك ، حيث كنت في الصفحة ولم ألحظ الإشعار بوجود رد .. لكن ما قمت بطرحه وهو جوهر السبيل الصحيح فقد كان تلخيصاً لخبرتك التي نتعلم منها فعلاً ..2 points
-
جزاك الله خير وبارك فيك استاذي الفاضل ابا خليل ملاحظاتك كلها بعين الاعتبار والتقدير والف شكر لك🌹 والف شكر لك استاذي الفاضل @Foksh تم تطبيق الكود كما طلبت جزاك الله خير وبارك فيك1 point
-
"ههههه والله صدقت، حتى أنا طعج مخي 😂 الله يبارك فيك أستاذي." سؤال طعج مخي حبة الدواء كيف تعرف مكان الوجع!! الملف الذي طعج مخك ومخي اعتقد ان الصفحات الخاصة بالمدن ليس لها علاقة بطلب صاحب السؤال واعتفد انه يريد ترحيل كل مسؤول الى صفحة مستقلة ننتظر صاحب الطلب الفاضل لزيادة التوضيح1 point
-
بارك الله فيك وجزاك الله خير استاذي الفاضل @Foksh سوف اجرب ماذكرت باذن الله والف شكر لك استاذي ماقصرت حفظك الله1 point
-
بارك الله فيك وجزاك الله خير استاذي الفاضل اباخليل نصحيتك مقبوله وعلى العين والراس وانت بمثابة الاب والاخ الكبير في هذا المنتدي جعلك تسلم لكن استاذي الغالي بالنسبه للتاريخ فعلا هذا خطا مني اني اجعله بهذا الشكل وسوف اتقيد بماذكرت والمشكله الكبيره هي ان العميل اللي يريد البرنامج بهذا الشكل هو عنده موظفين ويبي يسوي لهم حضور وانصراف بهذا الشكل لانه هو الي يدخل التحضير والانصراف الموظفين ماعنده احد منهم هم بمكان وهو بمكان اخر وبناء على فكرته سويت له جدول بهذا الطريقه على اساس سرعة التحضير اليدوي من قبله وعنده باركود لكل موظف مبطوع بكشف للموظفين فهو الصباح يحضرهم عن طريق الباركود ونهاية الدوادم نفسه ايضا ويرسل الكشف للاداره حقته فقط يعني كل فنيات برامج الحضور والانصراف ماهو محتاجها في الغالب هو يحتاج هذه الجزئيه فقط وهذا ترا اجتهاد منى حتي يتناسب البرنامج مع فكرة العميل جزاك الله وبارك فيك استاذي وكل نصائحك الكريمه بعين الاعتبار والتقدير🌹🌹1 point
-
مرحبا اخي العزيز انت من المحاربين القدامى .. عمرك في هذا المنتدى اكثر من عشرين عاما وعادتي اني لا اعطي حلولا فورية اذا لم تعجبني طريقة السائل في التنفيذ وانما استبدل ذلك بالنصيحة والتوجيه الى الطريقة السليمة الصحيحة . أولا : وهو المهم .. لا تستخدم تنسيقات الوقت بتاتا في عملية التوقيع بمعنى يجب ان يكون حقل الحضور تاريخا تاما ( Now ) تاريخ ووقت ستكتشف مستقبلا فائدة ذلك وستدعو لي . ثانيا : عملية الحضور والانصراف هي عملية واسعة وعلى المصمم ان يأخذ بعين الاعتبار القابلية للتطوير لو طلب منه ذلك مثل اتاحة الاستئذان والعودة لأكثر من مرة في الجلسة الواحدة نأتي لطلبك : من اجل تجعل الحضور والانصراف في حقلين ضمن سجل واحد .. هذا يتم من خلال فورم التوقيع بمعنى يتم عمل الضوابط اللازمة .. هذه الضوابط يدخل فيها : 1- المصدر استعلام معياره تاريخ اليوم 2- تفحص الوقت وهل هو ضمن وقت الجلسة ام ان الوقت خارج وقت الدوام 3- وجود توقيع حضور في حقل الحضور .. ويكون حقل الانصراف خاليا .. وإلا سيتم تسجيل حضور جديد في سجل جديد هذا ما يحضرني الآن من هذه الضوابط .. علما اني سأعمل لك استعلاما وقد يسبقني احد الأخوة لما يحقق مطلوبك حسب مثالك المرفق ان شاء الله1 point
-
السلام عليكم اخي الفاضل (منتصر الانسي) كل الشكر والاحترام لشخصك الكريم على مرورك لسؤولي.. بارك الله بك1 point
-
1 point
-
1 point
-
تم اكتشاف السبب الرئيسي للمشكلة التي يعاني منها الكثير من المطورين ، في هذا الرد هنا .1 point
-
بفضل الله وكرمه ،تم اكتشاف السبب الرئيسي لمشكلة فرض لوحة المفاتيح عند فتح معظم مشاريع آكسيس على أجهزة المطورين . السبب وعن تجربة مؤكدة هو استخدام المصمم لخيار لمربعات النص عند تصميمه لقاعدة بياناته . فيضطر آكسيس للإحتفاظ بأصل اللغة التي تم تعريفها حسب لغة الترميز في نسخة الويندوز المشغل كما في الصورة :- وتأكيداً على ما تم اكتشافه :- أولاً ، قم بتغيير هذه الخاصية لمربعات النص ، من :- إلى :- ، وهو الخيار الإفتراضي في آكسيس لمربعات النص والعناصر التي تقبل الإدخال . ثانياً ، قم بحذف اي لغات مفاتيح باستخدام الأداة المرفقة في هذا الموضوع هنا ، وتأكد من أنه يوجد لديك لغتين فقط ( العربية حسب دولتك ، والإنجليزية ) ، ثم قم بفتح نفس النموذج الذي تم تغيير الخاصية من العربية إلى System ، وستجد أنه لن ولن ولن يقوم بإضافة أي لغات تخطيط مدمجة في ملف قاعدة البيانات . وإلى هنا وأترك لك التجربة . والنتيجة ستكون مرضية لك بعد معرفة السبب . فإذا عُرف السبب .. بطُل العجب اما عن إزالة لوحات المفاتيح ، فالأداة وبعد تجربتها مراراً وتكراراً تعمل لكفاءة باسترجاع اي لغة عربية قمت باختيارها بمجرد أن تعيد تشغيل الويندوز .1 point
-
1 point
-
السلام عليكم ورحمة الله وبركاته يمكن الاستغناء عن العمود المساعد واستبدال المعادلات في العمود v باخرى ولكنها ستكون طويلة الملف ارقام النتائج عربي2.xlsm1 point
-
رغم أني لم أجرب هذه الطريقة من قبل ولكني وبنظرة سريعة على الملف المرفق أعتقد أنه لاتوجد مشكلة فيها فقد قمت بتجربة إضافة أكثر من مليون سجل ولم يتأثر كلا من الترقيم التلقائي و حجم القاعدة بعد أن قارنت الحجم بوجود التنسيق وبدونه هناك طرق أخرى لتطبيق نفس التنسيق على أي رقم بإستخدام دالة Format فلو إفترضنا أن الحقل ID هو ترقيم تلقائي بدون اي تنسيق إضافي يمكنك الحصول على نفس النتيجة هذه في الاستعلام أو النماذج بهذا السطر Format([ID];"0000000") ويوجد هناك طرق أخرى لتخصيص الترقيم التلقائي يمكنك التعرف على بعضها في هذا الموضوع هنا وقد تجد أيضا الكثير من الطرق بالبحث في المنتدى1 point
-
معذرة خطأى فى نسخ بيانات Bad Rev Report لكن لاحظ أن عمود B أصبح معادلة فى ملف ALL Rev Report تفضل للتعديل وإضافة أية بيانات V2 Monthly Review Report.xls1 point
-
Private Sub txtserch_Change() Dim r As Long, lastRow As Long, txt As String, ColArr, i As Integer Dim tmps As Double, xPrice As Double, xPieces As Double If ComboBox1.Value = "" Or ComboBox2.Value = "" Or Trim(txtserch.Value) = "" Then ListBox1.Clear Exit Sub End If txt = UCase(Trim(txtserch.Value)) TextBox1 = "": TextBox2 = "": TextBox3 = "" ListBox1.Clear ColArr = Array("التاريخ", "اللون", "كيلو", "متر", "قطع", "العميل") With ListBox1 .AddItem ColArr(0) For i = 1 To UBound(ColArr) .list(.ListCount - 1, i) = ColArr(i) Next i End With lastRow = WS.Cells(WS.Rows.Count, "A").End(xlUp).Row For r = 2 To lastRow If UCase(Left(WS.Cells(r, criterion).Text, Len(txt))) = txt Then With ListBox1 .AddItem WS.Cells(r, "A").Text .list(.ListCount - 1, 1) = WS.Cells(r, "D").Text .list(.ListCount - 1, 2) = WS.Cells(r, "E").Value .list(.ListCount - 1, 3) = WS.Cells(r, "G").Value .list(.ListCount - 1, 4) = WS.Cells(r, "H").Value .list(.ListCount - 1, 5) = WS.Cells(r, "I").Text End With tmps = tmps + Val(WS.Cells(r, "E").Value) xPrice = xPrice + Val(WS.Cells(r, "G").Value) xPieces = xPieces + Val(WS.Cells(r, "H").Value) End If Next r TextBox1 = Format(tmps, "#,##0.00") TextBox2 = xPrice TextBox3 = Format(xPieces, "#,##0") End Sub mohamed1 V3 .xlsm1 point
-
نعم استاذى الفاضل Foksh صدفت وشكرا لتنبيهك كما اشكر صاخب السؤال الفاضل soik225998 على تنبيهنا للامر تم معالجة الامر ان شاء الله المرشحين2.xlsb1 point
-
الاستاذ الكريم/ عباس إليك برنامج كامل و بسيط لشئون الطلاب و به طلبك و كل شيء يخص التعليم الابتدائي و البرنامج مجاني للأستاذ / سالم بدوي جزاه الله خيرا كلمة السر 1 اسم المستخدم 1 البسيط لشئون الطلاب 01-03-2025.zip1 point