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

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

  1. Amr Ashraf

    Amr Ashraf

    الخبراء


    • نقاط

      12

    • Posts

      946


  2. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      9

    • Posts

      9960


  3. lionheart

    lionheart

    الخبراء


    • نقاط

      8

    • Posts

      670


  4. د.كاف يار

    د.كاف يار

    الخبراء


    • نقاط

      6

    • Posts

      1681


Popular Content

Showing content with the highest reputation on 01/26/22 in مشاركات

  1. السلام عليكم .. اخوانى الكرام ,, بعد التحية موضوعنا اليوم عن النسخ الاحتياطى لمحتويات فولدر محدد فى وقت محدد من اليوم على اساس يومى او اسبوعى او شهرى كما تريد . قمت بتصميم نموذج فى القاعدة المرفقة يتم تحديد فيه الفولدر المطلوب نسخه و مكان حفظ النسخة والوقت الذى يتم فيه النسخ تلقائيا . كود النسخ المستخدم كالتالى : Public Sub Copy_Folder1() Dim FSO As Object Dim FromPath As String Dim ToPath As String FromPath = Forms!Frm!from 'ToPath = "D:\Old\test" '<< Change ToPath = Forms!Frm!To2 & Format(Now, "yyyy-mm-dd h-mm-ss") If Right(FromPath, 1) = "\" Then FromPath = Left(FromPath, Len(FromPath) - 1) End If If Right(ToPath, 1) = "\" Then ToPath = Left(ToPath, Len(ToPath) - 1) End If Set FSO = CreateObject("scripting.filesystemobject") If FSO.FolderExists(FromPath) = False Then MsgBox FromPath & "المسار المطلوب النسخ منه غير موجود" Exit Sub End If FSO.CopyFolder Source:=FromPath, Destination:=ToPath End Sub مميزات الكود : نسخ محتويات الفولدر بالكامل سواء ملفات او فولدرات فرعية . فى حالة عدم وجود المسار المطلوب وضع النسخة الاحتياطية فيه سيقوم بانشاءه تلقائياً. فى حالة وجود المسار وبه ملفات بنفس الاسم سيتم عمل Overwrite للملفات القديمة واستبدالها بالجديدة (وذلك فى حالة انك غيرت الاسم الذى يتم الحفظ به لأن الافتراضى يحفظ الاسم بالتاريخ ووقت الحفظ بالدقائق وبالتالى من الصعب تشابه الاسماء بين النسخ). شكل النموذج عند الضغط على تشغيل يقوم باستدعاء كود النسخ . فى حالة وصول وقت الجهاز الى الوقت المحدد بالنموذج يقوم باستدعاء كود النسخ . يمكنك كتابة المسار او اختياره عن طريق الازرار الموجودة بجوار الحقل النصى. لحد الآن موصلناش لجزئية التلقائى المذكورة فى العنوان 😅, من المعروف ان لازم تكون القاعدة مفتوحة حتى يعمل النسخ الاحتياطى وبالتالى فى حالة انك قمت بعمل استيراد للبرنامج ده داخل قاعدتك الاساسية المفتوحة طوال اليوم فلا مشكلة وعند وصول الوقت المحدد ستعمل بدون مشاكل .. ولكن ماذا لو اردت ان النسخ يتم حتى لو القاعدة مغلقة ؟ سنقوم بالاستفادة بخاصية مهمة موجودة فى الويندوز وبدون استخدام برامج خارجية تابع معى : فى قائمة Start ابحث عن Task Scheduler وهى خاصية تقوم بعمل مجموعة من الاوامر فى اوقات محددة مثل تشغيل برنامج او اغلاقه او ارسال ايميل مثلا الخ... هذه صورة الواجهة اضغط على Create Basic Task وستفتح لك الواجهة التالية : اكتب اسم المهمة المطلوبة ثم Next : هنا تكرار المهمة يوميا - اسبوعيا - شهريا - مرة واحدة - عند بداية التشغيل للجهاز - عندما اسجل دخول المستخدم - عند حدوث حدث معين . اختر ما يناسبك وفى حالتنا اخترت Daily يومياً . اختر تاريخ بداية العمل و الوقت المطلوب تشغيل المهمة فيه .التالى فى هذه الخطوة تختار ماهية المهمة فتح برنامج معين - ارسال ايميل - عرض رسالة محددة .. اختر Start Program فى حالتنا .. التالى فى هذه الخطوة تقوم باختيار مسار البرنامج المطلوب تشغيله وطبعا فى هذه الحالة البرنامج هو ميكروسوفت اكسس يتم تحديد مسار البرنامج من "C:" ثم تحديد القاعدة المطلوب تشغيلها فى Arguments بنفس الصيغة الموجودة بالصورة (بين علامتين تنصيص والمسار كامل بالامتداد ) #Program/Script "C:\Program Files\Microsoft Office\Office16\MSACCESS.EXE" #Arguments "C:\Users\Amr\Access\Backup\Tasker.Accdb" ثم اضغط على Finish. وبهذا قمنا بعمل مهمة للويندوز انه يفتح القاعدة الخاصة بنا فى وقت معين يومياً ,, باقى العمل داخل القاعدة نفسها كالتالى : فى حدث عند الفتح للنموذج ستجد الكود التالى : Private Sub Form_Open(Cancel As Integer) DoCmd.GoToRecord , , acFirst Me.To2 = [to] & "\" & [newnm] & " " Call SixHatHideWindow(SW_SHOWMINIMIZED) 'Call Copy_Folder1 '''' نقوم بتفعيل الخيار بعد تحديد الخيارات فى النموذج اول مرة لتعمل بتلقائية فيما بعد 'DoCmd.Quit '''' نقوم بتفعيل الخيار بعد تحديد الخيارات فى النموذج اول مرة لتعمل بتلقائية فيما بعد End Sub السطرين الغير مفعلين يتم تفعليهم بعد تحديد الخيارات الخاصة بيك من النموذج اول مرة وعند تفعيلهم بمجرد تشغيل القاعدة ستقوم بعملية النسخ وتغلق تلقائياً .. وبالتالى ملخص الفكرة ان القاعدة هتكون مغلقة وهتقوم مهمة الويندوز بتشغيلها وعند تشغيلها ستقوم بعمل النسخ الاحتياطى بالبيانات التى تم تحديدها اول مرة ثم تغلق تلقائياً وذلك فى اقل من ثانية قد لا تلاحظها من الاساس . مرفق القاعدة .. جرب ووافنى بالنتيجة .. دمتم بخير. ملحوظة : يمكن عمل المهمة الخاصة بالويندوز عن طريق اسكريبت VBS اختصارا للخطوات ولكن اردت شرح الفكرة من أساسها ويكون هناك مساحة للتطوير فيما بعد . BackupManual+Auto+Timer-AmrAshraf.accdb
    5 points
  2. عامة تفضل الحل الذى تريده . الشرح : كما قلت لا يمكن فتح نفس العنصر مرتين ولذلك نحتاج لعمل نسخة طبق الاصل منه كما يلى : Dim x, s As String s = Me.Name x = Me.Name & "NCpy" DoCmd.CopyObject , x, acForm, s DoCmd.OpenForm x الامر السابق سيقوم بنسخ النموذج الذى تم ضغط الزر فيه واضافة NCpy بجوار اسمه . ومطلوب عند الانتهاء حذف النسخ الوهمية التى تم انشاؤها والتى يحتوى اسمها على NCpy ولذلك يتم وضع هذا الحدث عند غلق النموذج On Close Dim obj As AccessObject On Error Resume Next For Each obj In CurrentProject.AllForms If obj.Name Like "*NCpy*" Then Debug.Print "Deleting " & obj.Name DoCmd.Close acForm, obj.Name, acSaveNo DoCmd.DeleteObject acForm, obj.Name End If Next يمكن وضع حدث حذف النموذج فى زر بدلا من عند الغلق لأنه بيقفل كافة النسخ ويحذفها ,, وفى النهاية لا أفضل هذه الطريقة اكيد هناك حلول اخرى للوصول الى الهدف الاساسى . مرفق القاعدة بالتوفيق . so - Amr.accdb
    3 points
  3. Sub Test() Dim m As Long m = Range("A" & Rows.Count).End(xlUp).Row Range("A1:A" & m).Value = Evaluate("=LEFT(A1:A" & m & ",FIND(""."",A1:A" & m & "))&ROW(A1:A" & m & ")") End Sub
    3 points
  4. ابشروا تبقى قليل للدورة لعمل تطبيق مربوط بالاكسس وعرض التقارير والمعلومات الاساسية به .
    2 points
  5. هذه احد ميزات المنتدى ، الإفادة والاستفادة ، لنا كلنا 🙂 جعفر
    2 points
  6. همممم يصير مع النماذج: http://allenbrowne.com/ser-35.html والمرفق من الرابط 🙂 جعفر MultiInstance2k.zip
    2 points
  7. السلام عليكم هل تعلم أخي الكريم أنك إذا اعتدت على كتابة أرقام عشرية محددة في صف أو عمود خلايا فإنه يمكنك تفعيل ميزة إدراج أرقام عشرية آلياً ثم تختار عدد الأرقام العشرية في كل خلية ولن تعود بحاجة إلى كتابة الفاصلة من لوحة المفاتيح بل سيحدد مايكروسوفت إكسيل العدد المطلوب للرقم العشري من كل رقم تكتبه ولذلك فإن أردت كتابة رقم صحيح مثلاً فعليك كتابة أصفار بعدد الأرقام المطلوبة بعد الفاصلة العشرية الطريقة: ملف >>> خيارات إكسيل >>> خيارات متقدمة >>> وضع علامة صح في خانة تحقق إدراج أرقام عشرية آلياً >>> ثم تحدد عدد هذه الأرقام بعد الفاصلة ولن تحتاج لكتابة الفاصلة حتى إزالة علامة الصح من خانة التحقق المذكورة أعلاه. والسلام عليكم
    2 points
  8. وعليكم السلام 🙂 اخي عمرو ، سبقتني لعرض الموضوع ، وهو موضوع جدا جميل 🙂 في الواقع طريقة استخدام "جدولة الوندوز" افضل طريقة للقيام بالاعمال المتكررة ، ومنها اخذ النسخ كما تفضلت ، واذا كان المطلوب عمل نسخ لمفات اكسس فقط ولأكثر من برنامج ، فاقترح انزال برنامج http://www.peterssoftware.com/cal.htm (الموقع به الكثير من البرامج المجانية المفيدة) ومن ثم نجعل "جدولة الوندوز" (حسب شرحك اعلاه) ، تفتح هذا البرنامج ، وهو يقوم بالباقي ، ويسمح لك بإختيار اي عدد من قواعد البيانات ، ويمكنك طلب ان يعمل ضغط واصلاح لهم ، وحفظهم بطريقة مضغوطة winzip كذلك 🙂 ويمكننا عمل ملفات bat. (اخف بكثير من تشغيل الاكسس) للقيام ببعض المهام ، ومناداة هذا الملف للقيام بالعمل ، مثل حذف ملف معين كل يوم او في تاريخ معين : ونعم ، نستطيع ان نعمل هذه الجدولة وجميع ما خطوات الجدولة برمجيا عن طريق اكسس كذلك 🙂 جعفر مرفق نسخة من الرابط اعلاه cal.zip
    2 points
  9. السلام عليكم ورحمة الله تفضل new-2 (1) (2).xlsm
    2 points
  10. السلام عليكم أخي الكريم يمكنك كتابة معادلة في الخلية A1 ثم اسحب نزولاً إلى آخر رقم تريده في حال الحذف ستأخذ الخلية الأدنى قيمة الخلية المحذوفة أما في حال الإضافة فأنت بحاجة لسحب المعادلة من جديد بعدد الصفوف المضافة ="*T900."&ROW() والسلام عليكم
    2 points
  11. 2 points
  12. السلام عليكم .. الاخوة الافاضل الموضوع حول فكرة سريعة لحماية البرنامج عند توزيعه وضمان توافقه مع جهاز العميل قد لا يعرفها الكثيرين , كما نعلم ان افضل طريقة لحماية البرنامج عن طريق تحويله الى ACCDE بالطبع لا يوجد حماية مثالية ولكنها الافضل حالياً , ولكن لكى تعمل نسخة ACCDE على جهاز العميل يجب ان تكون نواة اصدار الاوفيس الخاص به مثل الجهاز الذى قام بتحويل القاعدة الاساسية فإذا كان جهاز المصمم X64 يجب ان يكون جهاز العميل كذلك , الفكرة حول تخطى هذه العقبة . أولا اذا كان برنامج يحتوى على وحدات نمطية Modules يجب ان تتبع طريقة استاذنا @jjafferr فى جعل اكوادك تعمل على النواتين X64 & X86 من هنا : ننتقل للخطوة التالية وهى كيف نتأكد ان البرنامج سيعمل عند العميل ( يجب ان تكون نواة اصدار الاوفيس الخاص به مثل الجهاز الذى قام بتحويل القاعدة الاساسية فإذا كان جهاز المصمم X64 يجب ان يكون جهاز العميل كذلك , الفكرة حول تخطى هذه العقبة ) سنستفيد من جهاز العميل نفسه لتحويل القاعدة الى ACCDE وبالتالى ما سيتم اعطاؤه للعميل هى النسخة الAccdb وسيتم تحويلها على جهازه عن طريق قاعدة اخرى "Converter.Accdb" بها كود تحويل وهو كما يلى : Function Amr() Dim sourcedb, targetdb, nametargetdb As String Dim SDest, SFile, SFName As String SDest = CurrentProject.Path SFile = "MyProgram.Accdb" SFName = SDest & "\" & SFile sourcedb = SFName targetdb = SDest & "\" & "Ready.accde" nametargetdb = SDest & "\" & "Amr.accde" Dim accessApplication As Access.Application Set accessApplication = New Access.Application With accessApplication .SysCmd 603, sourcedb, targetdb End With Kill sourcedb Name targetdb As nametargetdb FollowHyperlink nametargetdb DoCmd.Quit End Function سنستفيد من برنامج Winrar لتحزيم البرنامج وتحويله الى EXE (ابحث فى المنتدى ستجد الكثير من المواضيع المتعلقة) وفى اعدادات التحزيم سنحدد القاعدة Converter.Accdb لتفتح بعد الانتهاء من فك الضغط وبالتالى عند الانتهاء من فك الضغط ستفتح القاعدة التى بها كود التحويل لتحويل برنامجك الى Accde , وفى الفورم الرئيسى لبرنامجك ضع هذا الكود لحذف قاعدة التحويل لمحو اثار الجريمة 😂 Public Function KillConverter() Dim SDest, SFile, SDlt As String SDest = CurrentProject.Path SFile = "Converter.Accdb" SDlt = SDest & "\" & SFile If Len(Dir$(SDlt)) > 0 Then Kill SDlt End Function استدعيها عن حدث فتح النموذج الرئيسى On Open KillConverter وبكده حولنا القاعدة الاساسية الى ACCDE ومسحنا قاعدة التحويل , قد يسأل البعض ماذا لو قام العميل بفك الضغط بدلا من تثبيت البرنامج 😅 فى هذه الحالة سيحصل على النسخة ACCDB وتفشل الخطة , فى هذه الحالة يمكن اضافة هذا الكود الى النموذج الرئيسى فى برنامجك Private Sub Form_Open(Cancel As Integer) Dim appPath, AppName, AppExt As String appPath = Application.CurrentDb.Name AppName = Application.CurrentProject.Name AppExt = Mid(AppName, InStrRev(AppName, ".") + 1) If AppExt = "Accdb" Then MsgBox ("لم يكتمل التثبيت , جارى الخروج"), vbCritical DoCmd.Quit Else DoCmd.OpenForm "Main" DoCmd.Close acForm, "FrmStart" End If End Sub وظيفة الكود هو التحقق من امتداد البرنامج ولن يعمل اذا كان ACCDB وبهذا ضمنت انه يمشى بالخطوات المحددة . ملاحظات عامة : يجب ان تكون قاعدة التحويل فى Trusted Location حتى تعمل بدون مشاكل وهذا هو الشئ الوحيد الذى سنطلبه من العميل وهو اضافة مسار ما الى الاماكن الموثوقة وليكن D:\. مرفق البرنامج المراد تحويله + أداة التحويل لتوضيح الفكرة اكثر. دمتم بخير MyProgram.accdb Converter.accdb
    1 point
  13. اعتقد انه مر علي بأحد المواقع شئ مثل هذا ولكن للأسف تلك النسخة الموجودة من الأكسس الذي يعمل علي الموبيل لا تقوم الا بفتح الجداول وفقط ولكن يمكنك استخدام قاعدة البيانات اكسس كقاعدة خلفية ورفعها علي سرفر محلي ومشاركتها - وستجد هنا بالموقع موضوعات مميزة تتحدث عن مشاركة الأكسس من أي مكان بالعالم فقط ابحث عنا - واستخدام لغة الـ HTML أو اي لغة أخري تفضلها يمكنها صناعة تطبيق يعمل علي الهاتف لتربطه بقاعدة البيانات التي تم مشاركتها منذ قليل آسف لاحباطك ولكن علي حد علمي ان الأكسس ضعيف في هذا المجال
    1 point
  14. هممم ، ولكن انت قلت سابقا : . تفضل، هذه الطريقة لتلوين اكثر من سجل ، وبمرفق : . جعفر
    1 point
  15. عملت حقل مؤقت مخفي . وفي حدث الحالي للنموذج ، اعطيته قيمة الحقل "رقم_التذكرة" كونه رقم مميز (غير متكرر) : Private Sub Form_Current() Me.tmp_ticket_No = Me.[رقم_التذكرة] End Sub . ثم عملت تنسيق شرطي لجميع الحقول ، اذا كانت قيمة الحقل المؤقت = قيمة الحقل "رقم_التذكرة" ، اجعل لون السطر أخضر : 1. نختار جميع الحقول ، 2. ننقر على زر التنسيق الشرطي . . والنتيجة . جعفر 1457.تلوين سجل محدد.accdb.zip
    1 point
  16. جربها بهذا الشكل اخى ضع هذه المعادله في c6 =IF(AND(ISNUMBER('شيت الرابع'!P12);ISNUMBER('شيت الرابع'!Q12));'شيت الرابع'!P12+'شيت الرابع'!Q12;IF(ISNUMBER('شيت الرابع'!P12);'شيت الرابع'!P12;'شيت الرابع'!Q12)) تغير العلامه , الى ;
    1 point
  17. اخى عمر ضع هذه المعادله =B2&C2 في العامود f في الخليه f2 في المخزن ثم اسحب المعادله الى اخر سطر في اكواد وهو f48 ثم اذهب الى الورقه باسم ورقه ١ ثم ضع الكود الخاص بالاستاذ @lionheart ستجد ان الرساله التى تريدها ستظهر لك ان شاء الله
    1 point
  18. C6=IF(AND(ISNUMBER('شيت الرابع'!P12),ISNUMBER('شيت الرابع'!Q12)),'شيت الرابع'!P12+'شيت الرابع'!Q12,IF(ISNUMBER('شيت الرابع'!P12),'شيت الرابع'!P12,'شيت الرابع'!Q12))
    1 point
  19. السلام عليكم تفضل يا اخى اتمنى ان اكون فهمت طلبك جمع بشروط معينة.xlsx
    1 point
  20. وعليكم السلام ورحمة الله وبركاته , من وجهة نظرى هيكلة جدول العملاء وكتابة اسماء المخازن فى اعمدة هو خاطئ و الانسب هو عمل التالى : فصل الجدول الى جدولين , الأول فيه العملاء وكل ما يتعلق بهم (يعنى نحذف اعمدة المخازن A , B , C , D وهكذا ) الجدول الثانى هيكون المخازن التى يتعامل عليها كل عميل ويكون هيكلته كالتالى ( اسم العميل - المخزن ) وبالتالى ممكن يتكرر اسم العميل 3 مرات مثلا اذا كان يتعامل على اكثر من مخزن . وفى النهاية يمكن بسهولة معرفة أى المخازن ليس عليها تعامل عن طريق استعلام مقارنة بين جدول المخازن و الجدول الجديد الخاص باستخدام العملاء للمخازن . اعتقد بهذه الطريقة لن تسبب مشكلة لك .. جرب ولو واجهتك مشكلة اذكرها هنا .. بالتوفيق
    1 point
  21. تفضل هذا الجزء من طلبك و مشاركتي مع اخي @Eng.Qassim انشء موديول جديد و الصقي التالي Public Function SetColNumber(SetText As String) As Variant Dim Number1 As Double, Number2 As Double, CulSum As Variant For i = 1 To Len(SetText) If Mid(SetText, i, 1) = "+" Or Mid(SetText, i, 1) = "-" Or _ Mid(SetText, i, 1) = "/" Or Mid(SetText, i, 1) = "*" Then CulSum = Mid(SetText, i, 1) End If Next i Number1 = Split(SetText, CulSum)(0) Number2 = Split(SetText, CulSum)(1) Select Case CulSum Case Is = "-" SetColNumber = Number1 - Number2 Case Is = "+" SetColNumber = Number1 + Number2 Case Is = "*" SetColNumber = Number1 * Number2 Case Is = "/" SetColNumber = Number1 / Number2 End Select End Function و في حدث لمربع النص بعد التحديث الصق التالي tot = SetColNumber(tot) تفضل الملف بعد التعديل 14.accdb
    1 point
  22. وعليكم السلام .. تفضل نتيجة البحث في الكومبو اما مطلبك الثاني بأن تجمع رقمين في حقل واحد فهذا لا يجوز في الاكسس..انما يصح في الاكسل 14.accdb
    1 point
  23. السلام عليكم اخي حسين 🙂 كنت اعمل على طريقة اوسع من طلبك ، والحمدلله اخونا عمرو افرد موضوع لهذه الطريقة ، هنا . فللقيام بما تريد ، اعمل ملف bat. ، واكتب فيه اسم الملف الذي تريد حذفه ، هكذا : del /f "D:\CBR\TST.txt" واستعمل طريقة اخونا عمرو كما هو في الرابط اعلاه ، ليقوم بتشغيل ملف bat. حسب الاوقات التي تحب 🙂 جعفر
    1 point
  24. اتوقع ان هذي اقرب اجابة لطلبك و خاصة انها مبتكرة بكل ما تعنيه الكلمة اعجبتني الفكرة جدا جدا جدا فكرة خارج الصندوق
    1 point
  25. رااااااااااااائع جزاك الله خيرا
    1 point
  26. Private Sub CommandButton1_Click() ActiveCell.FormulaR1C1 = "10" TextBox1.Text = ActiveCell.FormulaR1C1 ActiveCell.Offset(1, 0).Select End Sub
    1 point
  27. Have you put the formula in the second sheet as I told you I think you didn't apply the steps correctly
    1 point
  28. تفضل هذه مشاركتي مع المهندس قاسم توزيع جلسات علي الاطفال.zip
    1 point
  29. اشكرك وجزاكم الله خيرا كثير وبارك لك وعليك وحفظك الله انت وكل من تحب
    1 point
  30. السلام عليكم ورحمة الله وبركاته تم التعديل على الملف لمعرفة اسم أول وآخر يوم في العام الميلادي فتبين لي أنه في السنة العادية يكون يوم البدء هو يوم الانتهاء أما الكبيسة فيكون في اليوم التالي فمثلاً بدأت العادية بيوم سبت تنتهي بيوم سبت وهكذا. وأن السنين إن بدأت بيوم سبت لهذا العام ستبدأ بيوم أحد للعام القادم وهكذا عدا الكبيسة والله أعلم. شهور.xlsx
    1 point
  31. اختلف معك .. اسطب اتنين اوفيس على الجهاز ؟ واحد 32 والتانى 64 ؟ ولا هحولها على جهازين ؟ واعدل الاكواد مرتين عشان مرة تشتغل على 32 والمرة التانية على 64 ؟ ليه كل ده بأكواد وخطوات بسيطة ينفع برنامجك على اى جهاز واى اصدار بدون وجع راس 😅
    1 point
  32. استاذنا يعجز اللسان عن الوصف جزاكم الله خير الجزاء وجعله فى ميزان حسناتكم .. مستوى عالى من الاحترافية قد لا أصل اليه بعد 100 سنة 😂. قمت بتغيير امتداد القاعدة الخاصة بى الى .DLL وقام الاسكريبت بتحويلها الى Accde ويعمل جيدا فكرة اكثر من رائعة . ملاحظة لحضرتك : يعمل بكفاءة فى كل شئ ما عدا جزئية الباسورد لا تعمل معى .. الملف الناتج مفتوح بدون باسورد وهو فى الاصل كان بدون باسورد . ملاحظات للقارئ : فى هذا الجزء يجب ان يكون اسم قاعدتك كامل + الامتداد الخاص به مثل MyProgram.Accdb و Result.Accde مثلا . TypeHere Accdb File name TypeHere Accde File name
    1 point
  33. السلام عليكم ورحمة الله استخدمى هذه المعادلة =VLOOKUP(B2;INDIRECT("'"&$C$2&"'!"&"A4:B9");2;0)
    1 point
  34. Or simpler =VLOOKUP(B2,INDIRECT("'"&C2&"'!$A$4:$B$9"),2,0)
    1 point
  35. وجزاكم مثله اخى ياسين الحمد لله الذي بنعمته تتم الصالحات
    1 point
  36. جرب هذا التعديل اخى ياسين ملف جديد.xlsm
    1 point
×
×
  • اضف...

Important Information