نجوم المشاركات
Popular Content
Showing content with the highest reputation on 12/25/15 in all areas
-
السلام عليكم ورحمة الله أخي الكريم، هذه محاولة بالمعادلات ومعية أعمدة إضافية مساعدة... الملف جلبته من موضوعك الثاني المكرر وأعتقد أنه قد تم حذفه... بن علية العشرة الاوائل بكود.rar3 points
-
بغد اذن اخي و صديقي بن علية حل اخر زيادة في اثراء الموضوع انظر الى الورقة Sheet2 العشرة الاوائل بكود salim.rar2 points
-
أبي الحبيب أبو يوسف بارك الله فيك ..شكلك فنان تشكيلي (تشكيلي غير تشكي لي .. !!) مجهود رائع وتنسيق جميل .. ولكن انتبه كثرة التنسيقات في الملف من شأنها أن تجعل الملف كبير الحجم وثقيل في التعامل ، فلا تكثر منها تقبل وافر حبي وتقديري2 points
-
السلام عليكم ورحمة الله ولإثراء الموضوع هذا كود من إبداعي ودن الرجوع لاي مصدر كود صغير جدا خفيف وسهل من 7 كلمات Dim MySh MySh = "KHMB" Sheets(MySh).Select يتم وضعة في حدث النقر علي زر الامر مرفق المثال KHMB الذهاب الي الشيت المحدد من الفورم.rar2 points
-
أخي الكريم أبو حمادة قم بوضع الكود التالي في موديول عادي Sub ShowForm() UserForm1.Show vbModeless End Sub Sub UnhideAll() Dim Ws As Worksheet For Each Ws In ThisWorkbook.Sheets Ws.Visible = xlSheetVisible Next Ws End Sub Sub HideAll() Dim Ws As Worksheet For Each Ws In ThisWorkbook.Sheets Ws.Visible = xlSheetHidden Next Ws End Sub أنشيء فورم وعليه 4 أزرار أوامر وقم بتسمية الأزرار باسم cmdClose للإغلاق الخاص بالفورم ، وزر أمر باسم cmdSheet والذي من خلاله يمكنك التعامل مع ورقة العمل المكتوب اسمها على زر الأمر فيخفي أوراق العمل الأخرى ويبقى ورقة العمل فقط ، وزر الأمر cmdRename ويقوم بتسمية زر الأمر السابق المسمى cmdSheet (يغير عنوان الزر وليس اسم الزر) ، وأخيراً زر أمر cmdUnhide لإظهار جميع أوراق العمل وإليك الكود الذي يوضع في حدث الفورم 'Author : YasserKhalil 'Released : 25 - Dec. - 2015 'Use : This UserForm Enables You To Navigate To Specific Sheet ' Depending On cmdSheet Caption & Hide Other Sheets. '-------------------------------------------------------------------- Private Sub cmdSheet_Click() Dim Str As String, Ws As Worksheet, Bln As Boolean Str = cmdSheet.Caption On Error Resume Next For Each Ws In ThisWorkbook.Sheets Ws.Visible = xlSheetVisible If Str = Ws.Name Then Bln = True Next Ws If Bln = True Then For Each Ws In ThisWorkbook.Sheets If Ws.Name = Str Then Ws.Activate Else Ws.Visible = xlSheetHidden End If Next Ws Else MsgBox "There Is No Such Worksheet Name", 64 End If On Error GoTo 0 End Sub Private Sub cmdRename_Click() Dim StrName As String On Error Resume Next StrName = InputBox("Rename Previous Command Button", "Rename Button") If StrName <> "" Then cmdSheet.Caption = StrName On Error GoTo 0 End Sub Private Sub cmdUnhide_Click() Call UnhideAll End Sub Private Sub cmdClose_Click() Unload Me End Sub أعلم أني قد زدت عن الطلب ..فعذراً لكن الموضوع استهواني قليلاً فقمت بعمل الفورم الذي تراه بحيث يلبي حاجة من في حاجة إليه تقبل تحياتي Navigate To Specific Sheet By Command Button Name YasserKhalil.rar2 points
-
الفكرة أخي الكريم السيفاني في الإعلان عن المتغيرات لا تكمن في أن يتم الأعلان عن كل متغير في سطر منفصل أو الإعلان عن كل المتغيرات في نفس السطر يمكن الإعلان عن الثلاثة متغيرات في سطر واحد ولكن يجب أن تكون كما ارفقت بالمشاركة الأولى أي يتم تحديد نوع كل متغير أما الخطأ الشائع الذي يقع فيه الكثيرون هو أن يتم الإعلان عن المتغيرات بهذا الشكل Dim c1, c2, c3 As Date هنا المتغير الثالث فقط هو الذي تم تحديد نوعه أما المتغير الأول والثاني فلم يتم تحديد نوعهما مما يترتب عليه أن يتعامل معهم المحرر أنهما من النوع Variant وليس من النوع Date أرجو أن تكون قد وصلت الفكرة2 points
-
السلام عليكم ورحمة الله بعد إذن اخونا وإستاذنا الفاضل ياسر خليل إليك الملف إن شاء الله يكون حسب طلبكم هذا مما تعلمناه من العلامة القدير الاستاذ / عبدالله احمد باغشير والذي غاب عننا ربنا يرفع عنهم وعننا وسائر بلاد المسلمين البلاء والوباء والغلاء. الإنتقال الي الصفحة بدلالة إسمها علي الزر.rar2 points
-
السلام عليكم ،، ارفق اليكم البرنامج يعمل الان داخل معظم الشركات التى تعمل في مجال التجارة بالكويت (المنتجات التى تشتري من الصين -ويتم بيعها بالقطعة ) والبرنامج متعرض للموضيع الاتية : - أضافة اصناف . - أضافة عملاء وموردين. - أضافة نقاط بيع. - أضافة موظفين . - العهده النثرية بشكل شامل تمام.ا ارجو ان ينال اعجباكم والذي يريد اي استفسار يرسل لي بالبريد khaled95@yahoo.com Sales_Ma...ed_Ahmed.rar] Sales_Managment_By_Khaled_Ahmed.rar1 point
-
السلام عليكم ورحمة الله وبركاته إخواني الكرام ... ارتأيت أن موضوع المصفوفات بات من الأهمية بمكان بحيث لا يجب أن ننساه لما له من أهمية كبيرة في التعامل مع الأكواد بسرعة كبيرة جداً وخصوصاً في حالة التعامل مع كم هائل من البيانات .. فقررت أن أشارككم بما تقع عليه يدي من أكواد فيما يخص المصفوفات لنتعلم ونرتقي سوياً .. سأتناول كود بسيط بالتفصيل لنعرف ما هية المصفوفات وكيفية التعامل معها بشكل جيد الكود عبارة عن عمل حلقة تكرارية لعناصر المصفوفة من أول عنصر لآخر عنصر .. وإظهار العناصر في رسالة أو وضعها في نطاق أو التعامل معها كما تريد نبدأ بالكود بالكامل ثم نتناوله بالتفصيل Sub LoopInArray() Dim myArray As Variant Dim X As Integer myArray = Array("Yasser", "Khalil", "Officena", "Forum") For X = LBound(myArray) To UBound(myArray) MsgBox (myArray(X)) Next X End Sub السطر الأول هو بداية الإجراء الفرعي ويبدأ بكلمة Sub كما تعودنا يليه اسم الإجراء الفرعي ويفضل تسميته باسم يعبر عن الهدف من الكود ...قمت بتسميته LoopInArray حيث أننا سنتعامل بالحلقات التكرارية داخل عناصر المصفوفة .. وطبعاً لكل شيء بدأته لازم تقفله ..وقفلة الـ Sub بتكون بكلمة End Sub في نهاية الكود بالطبع السطر الثاني الإعلان عن متغير myArray وهو متغير للمصفوفة التي سنتعامل معها وقمت بتسميتها باسم مناسب وليس أي اسم (أفضل دائماً أن تكون أسماء المتغيرات معبرة عن المتغير والهدف منه ونوعه ..) السطر الثالث هو إعلان عن متغير من النوع Integer ووظيفة هذا المتغير أنه بمثابة عداد ..إذ أن من يعرف الحلقات التكرارية يعرف أنه لعمل حلقة تكرارية يستلزم أن يكون هناك عداد لهذه الحلقة التكرارية .. وقيمة المتغير X ستتغير مع كل حلقة .. أقصد أنه في أول لفة ستكون قيمة المتغير تساوي رقم البداية (فإذا كان رقم البداية 1 فإن المتغير يساوي 1) وفي اللفة الثانية تزداد قيمة المتغير بمقدار 1 ليصبح على سبيل المثال 2 وفي اللفة الثالثة يساوي 3 وفي اللفة الرابعة ..كمل إنت !! انتهينا من الأسطر التقليدية (تسمية الإجراء والإعلان عن المتغيرات) ... نتوقف قليلاً لللتجربة !! ماذا سنجرب يا ترى ؟ هل هناك ما يستدعي منا أن نجربه ونحن ما زلنا في البداية ولم نكتب أسطر فعلية للكود .. نعم لابد أن نتعلم شيئاً جديداً ومفيداً عند التعامل مع الأكواد ...... تطبيق : انسخ الكود السابق في موديول جديد ثم ضع الماوس داخل الإجراء الفرعي .. ومن قائمة View في محرر الأكواد اختر الأمر Local Window إنها نافذة ستجعل منك محترفاً في فهم الأكواد (صدقوني ستذهلون منها بشكل كبير جداً) ..إنها بمثابة نافذة لك لتدرك كيف يتم تنفيذ أسطر الكود سطر سطر انتبهوا لهذه النافذة بشكل كبير ... كيف سيتم التعامل مع هذه النافذة المدهشة ؟ الأمر في غاية اليسر والسهولة والبساطة .. ستستخدم من لوحة المفاتيح F8 وهو يمكنك من متابعة الكود سطر بسطر .. كفانا كلام نظري وننتقل للتطبيق .. ضع الماوس داخل الإجراء الفرعي (الكود) ثم اضغط F8 مرة واحدة فقط .. وانظر للنافذة التي كانت فارغة منذ قليل لقد أصبحت ثرية .. نعم ثرية .. بضغطة واحدة ستتمكن الآن من تحليل المتغيرات .. لقد تم وضع سطر باللون الأصفر على أول سطر بالكود كما تم وضع المتغيرات في النافذة بهذا الشكل في الناحية اليسار من النافذة توجد أسماء المتغيرات التي تم الإعلان عنها وفي العمود الأوسط قيمة المتغير ..فقيمة المتغير الأول Empty ما زالت المصفوفة فارغة لم يتم إضافة أي عنصر لها ، وقيمة المتغير الثاني لأنها من النوع Interger فتحمل القيمة صفر لأننا لم نضع قيمة لها بعد وفي العمود الثالث نوع المتغير فالمتغير الأول من النوع Variant وهذا النوع غالباً ما نستخدمه مع المصفوفة لأن المصفوفة مرنة ربما تحمل نصوص وربما أرقام وربما حتى نطاقات (موضوع يطول شرحه) إلى الخطوة الثانية والتي هي نفس الخطوة الأولى (حد يفكرني !!) محدش مركز !! ... الخطوة التانية اضغط F8 مرة تانية .. ماذا حدث ؟ لقد تجاوز السطر الأصفر أسطر الإعلان عن المتغيرات .. نعم لأنها أسطر غير قابلة للتنفيذ إنما تظهر المعلومات المرتبطة بهذه المتغيرات مع أول ضغطة على F8 بعد السطر الأول في الكود .. انتقل السطر الأصفر ليظلل السطر التالي .. ولم يحدث أي تغيير في نافذة الـ Local Window myArray = Array("Yasser", "Khalil", "Officena", "Forum") هل التنفيذ مرتبط بالسطر الأصفر ؟ نعم يتم تنفيذ السطر الملون بالأصفر بعد الخروج من السطر الأصفر وليس عند تظليل السطر الأصفر الخطوة الثالثة .. ماذا تتوقع أن يحدث بعد أن نضغط F8 للمرة الثالثة؟؟؟ فكر ثواني عشان تفهم اللعبة .. سيتم تنفيذ السطر الأصفر السطر الحالي عبارة عن تعيين قيم أو وضع عناصر للمصفوفة .. لدينا بعض الأسماء (وبما أن الأسماء نصوص فتم وضعها بين أقواس تنصيص) وهذه الأسماء سيتم وضعها داخل المتغير الذي قررنا أنه سيكون للمصفوفة انتبه انتبه ..لم أطلب منك أن تبدأ الخطوة الثالثة بعد ..!! فقط انظر لنافذة الـ Local Window على المتغير myArray وشوف القيمة هتلاقيها Empty أي أن المصفوفة فارغة (وكما بص على يسار اسم المتغير ..هل يوجد علامة زائد بجانب اسم المتغير myArray ؟؟ الإجابة لا يوجد) ابدأ تنفيذ الخطوة الثالثة ألا وهي نفس الخطوة الأولى ونفس الخطوة الثانية ..حد يفكرني !! محدش مركز .. اضغط F8 بردو (أنا مش عايز أتعبك أنا عايز تشوف وتتعلم وبعديها خلي دماغك يتكلم) ضغطت يا وائل ولا لسه على F8 ؟؟؟ تمام تمام الله ينور عليك ايه اللي حصل يا حوسو .. لما نحب نعرف ايه اللي حصل هنبص على الكود وعلى النافذة .. نبص الأول على الكود هنلاقي إنه تم الانتقال للسطر التالي وأصبح السطر التالي مظلل باللون الأصفر .. طيب الأهم إننا نبص على النافذة Local ونشوف المتغير myArray هنلاقي حاجة غريبة بتحصل .. حاجة بسيطة لكن مهمة المصفوفة اللي كانت فارغة Empty من شوية ومفيش علامة زائد جنبها .. أصبح فيه علامة زائد على يسار اسم المتغير ولما نبص في عمود القيمة هنلاقي كلمة Empty أصبحت مش موجودة .. دا لأنها بعد الانتقال من السطر اللي فات بقت المصفوفة فيها قيم .. نبص للعمود الثالث هنلاقي بردو فيه شيء اتغير ..نوع المتغير لم يتغير زي ما هو Variant بس فيه شيء إضافي .. هتلاقي ما بين قوسين بداية المصفوفة ونهاية المصفوفة بمعنى آخر المصفوفة اللي بنتعامل معاها دلوقتي فيها 4 قيم .. ولما نبص نلاقي الأرقام من 0 إلى 3 (افتراضي المصفوفة بتبدأ من الرقم 0 وليس الرقم 1 ) الأرقام دي عبارة عن فهرس للمصفوفة (زي فهرس كتاب) يعني مثلاً أول قيمة في المصفوفة اللي هي Yasser لها الرقم 0 في الفهرس .. والقيمة Khalil ليها رقم 1 وهكذا لنهاية القيم كل عنصر داخل المصفوفة ليها رقم في الفهرس .. عايز تتأكد من كلامي تعال على نفسك شوية ونتعب ونضغط علامة الزائد اللي على يسار اسم المتغير (خلي الصورة تتكلم شوية عشان أنا تعبت) زي ما إحنا شايفين الفهرس من 0 1 2 3 وكل عنصر له رقم في الفهرس وله قيمة يعني دلوقتي لو عايز أعرف تاني قيمة في المصفوفة هعمل ايه؟ ببساطة ممكن استخدم كلمة Msgbox ثم اسم المصفوفة ثم افتح قوس ثم أضع رقم القيمة المطلوبة ثم اقفل القوس MsgBox myArray(1) واحد يقولي إنت مش بتجيب تاني عنصر في المصفوفة ..طيب ليه كتبت واحد مش 2 (أقوله لأن المصفوفة بتبدأ من الصفر وليس من الواحد ..) فالواحد بمثابة 2 (عد من البداية ::: رقم صفر هو أول عنصر في المصفوفة .. رقم 1 هو ثاني عنصر في المصفوفة وهكذا) المهم عشان أنا بدأت أتوه من نفسي ننتقل للحلقة التكرارية ودي بيكون ليها عداد زي ما قلنا والعداد هنا X فبنقول For X وبعديها علامة يساوي ... بعد يساوي بداية الحلقة التكرارية يليها كلمة To ثم نهاية الحلقة التكرارية بداية الحلقة هتكون أول رقم فهرس في المصفوفة اللي هو في مثالنا يساوي صفر ، ونهاية الحلقة التكرارية هو آخر رقم في الفهرس اللي هو 3 وبدل ما نكتب من 0 إلى 3 (استخدمنا دالة بتجيب أول رقم في المصفوفة واسمها LBound ودي اختصار لكلمة Lower Bound أي الحد السفلي أي أول رقم في الفهرس ... وأيضاً بالمثل استخدمنا دالة عشان تجيب آخر رقم في المصفوفة والدالة هي UBound ودي اختصار لكلمة Upper Bound أي آخر رقم في الفهرس) طيب العداد لازمته ايه ؟؟ قلنا بيحمل القيمة الحالية ..فأول قيمة عندي هتكون صفر بالتالي قيمة X هتساوي صفر .. إحنا دلوقتي واقفين في السطر الملون باللون الأصفر مع بداية الحلقة التكرارية لو وقفنا بالماوس على كلمة X سيظهر تليح صغير في مستطيل أصفر صغير به قيمة المتغير ( في الصورة قيمة X تساوي صفر) وهو أول رقم في الحلقة التكرارية لأن رقم البداية صفر (والمتغير X يحمل قيمة أول رقم في بداية الحلقة) المهم اضغط F8 لتنتقل للسطر التالي وعايز تروح بالماوس وتقف على الكلمة دي myArray(X) هتلاقي مربع أصفر فيه القيمة Yasser وروح للـ X وقف عليها ستجد القيمة صفر أي أن المصفوفة المسماة myArray ثم نفتح قوس ونضع رقم الفهرس المطلوب ورقم الفهرس هنا هو صفر ..يحمل القيمة Yasser اضغط F8 لتظهر لك رسالة بقيمة أول عنصر في المصفوفة .. اضغط F8 مرة أخرى لتنتقل للفة الثانية في الحلقة .. ولاحظ أن الانتقال بعد ذلك سيكون ما بين السطرين MsgBox (myArray(X)) Next X القيمة X تتغير ويتغير معها القيمة التي تظهر في الرسالة .. أكمل الضغط على F8 لترى نتائج الكود بنفسك ... وعينك دائماً على نافذة Local لترى قيمة المتغير X وهي تتغير مع كل لفة وطبعاً عند وصول قيمة X لـ 3 تنتهي الحلقة التكرارية لأن نهاية الحلقة هو الرقم 3 أتمنى أن يكون الشرح واضح ومفيد للجميع مع تحياتي أخوكم ياسر خليل أبو البراء1 point
-
السلام عليكم ورحمة الله وبركاته الموضوع هذا بدأ بسؤال الرابط التالي: http://www.officena.net/ib/topic/65783-البحث-عن-اي-جزء-من-الكلمة-عنوان-معدل/ ولكن لأني غيرت الكود وجعلته يبحث في اي عدد من الحقول في السجل ، لذا رأيت ان اجعل له موضوعا مستقلا يمكنك البحث عن اي جزء من الكلمة ، واذا اردت البحث عن كلمة اخرى في السجل او جزء منها ، فما عليك الا ان تضع (مسافة او / او *) بين الكلمات ، فسيعتبرها البرنامج على انها كلمة اخرى يجب البحث عنها. الشئ المهم في الكود هو طريقة إضافة حقول جديدة للبحث فيها: هذا اول حقل يتم البحث فيه fld = "[كلمات ارشادية]" لما نريد ان نضيف حقول إضافية للبحث فيها ، يجب ان يكون الكود كالتالي fld = fld & " & ' ' & " & "[موضوع الخطاب]" fld = fld & " & ' ' & " & "[my other field]" وكل ما عليك الآن هو ان تطبع وترى نتيجة بحثك: . ملاحظة مهمة: اذا كان برنامجك على الشبكة ، فلا تضع الكود على "حدث التغيير" (معناه ، كلما اضفت/حذفت حرف ، فارجع الى الجدول وخذ البيانات منه) ، لأنه سيجعل البرنامج جدا بطئ ، وانما استخدم زر البحث. جعفر 309.Search_as_you_Type_Multiple_Fields_jj.mdb.zip1 point
-
اساتذتى الكبار والمبدعين كالعادة الاستاذ الفاضل الكبير قوى بن عليه حاجى والاستاذ الفاضل الكبير قوى سليم حاصبا تسلم الايادى وتسلم العقول الجميلة والنيرة بالطبع حل بالمعادلات رائع مثلكم جزاكم الله كل خير على كل ماتقدموه لنا من علم وخبره بارك الله فيكم داعيا لكم المولى عز وجل ان يجعل هذة الاعمال يارب فى ميزان حسناتكم وكم تعلمنا من هذا المنتدى العظيم دائما نطمع زيادة فى اثراء الموضوع حبا منا لكم وحبا فى هذا المنتدى العظيم وزيادة فى العلم فمن يستطيع ان يقدم لنا الحل بالكود فخير ونعمه . اكرر شكرى وامتنانى للاستاذان الكبيران جزاهم الله كل خير ومحبه وتوفيق وشكرا1 point
-
شكرا على الرد و لكن قصدي بقيام بإستعلام يشمل حقول الإسم و اللقب و الرتبة و جدول العطل لا ينجح الإستعلام و شكرا1 point
-
1 point
-
تفضل يا سيدي هذا الكود الذي يقوم بالعمل ، انا عملته على النقر المزدوج (مرتين) على حقل الاسم: Private Sub name_DblClick(Cancel As Integer) Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC If rst!print = -1 Then rst.Edit rst!print = 0 rst.Update End If rst.MoveNext Next i Me.[print] = -1 End Sub جعفر 315.11.accdb.zip1 point
-
سلمت اناملك وحفظك الله من كل مكروه انت رائع اشكرك على حسن اخلاقك وكريم خصالك1 point
-
بارك الله فيك أخي الغالي بن عليه لكم تعلمنا وما زلنا ننهل من علمك ..جزيت عنا خير الجزاء تقبل تحياتي1 point
-
أخي الكريم حامد عشان متقولش إننا مقصرين معاك إليك الملف التالي مشابه لطلبك تقريباً .. Multiple Corresponding VLOOKUP Values Across Rows YasserKhalil.rar1 point
-
1 point
-
اخي عبدالرحمن شاهد التعديل وفي خانة الاجمالي ضع المعادلة التي تراها مناسبة واي ملاحظة تود عملها اخبرني بذالك اقبل تحياتي واحترامي لشخصك الكريم كشف حساب العميل تعديل 3.rar1 point
-
وعليكم السلام انت تريد هذا النموذج ان يفتح مرة واحدة ، وبعدها لا يفتح؟ اعمل جدول خاص لهذا الغرض ، واجعل فيه خانة واحدة ، Shall_I_Open (مثلا)واجعلها نعم/لا ، 1. كلما اردت تشغيل هذا النموذج (عند تشغيل البرنامج مثلا) ، فيجب ان تقرأ القيمة من الجدول ، فاذا كانت = نعم ، فيسمح لك الكود بالدخول في النموذج ، واذا كانت = لا ، فلا يسمح لك بالدخول ويفتح لك نموذج آخر انت تختاره ، 2. عند حدث اغلاق النموذج ، غيّر القيمة الى لا (بواسطة استعلام تحديث مثلا) ، جعفر1 point
-
أخي الكريم أبو يوسف إليك كود آخر أسرع في التعامل مع الملف حيث أنه يعتمد على المصفوفات Sub YasserReport() Application.ScreenUpdating = 0 Dim Arr, Xs$, Brr, Dc, Sn%, D As Object, DD As Object, TT(), SSS() Dim S As Worksheet Dim K, T, C, I As Long, J As Long Set D = CreateObject("scripting.dictionary") Set DD = CreateObject("scripting.dictionary") SSS = Array("المادة", "عدد الطلاب") Xs = ActiveSheet.Name For Each S In Sheets If S.Name <> Xs Then Arr = S.UsedRange: Dc = "" For I = 1 To UBound(Arr, 2) If Len(Arr(19, I)) = 0 Then Arr(19, I) = Arr(19, I - 1) If Len(Arr(21, I)) > 0 Then Dc = Dc & "|" & I Next Dc = Split(Dc, "|") ReDim Brr(1 To UBound(Arr) - 18, 1 To UBound(Dc)) For I = 19 To UBound(Arr) For J = 1 To UBound(Dc) Brr(I - 18, J) = Arr(I, Dc(J)) Next Next Sn = UBound(Brr, 2) - 1 For I = 3 To UBound(Brr) Step 2 For J = Sn - 2 To 1 Step -1 If Val(Brr(I, J)) Then D(Brr(I, Sn) & "|" & Brr(1, J)) = Brr(I, Sn) & "|" & Brr(1, J) & "|" & Brr(I, J) End If Next Next End If Next Debug.Print D.Count K = D.keys T = D.Items For Each C In K DD(Split(C, "|")(0)) = "" Next K = DD.keys ReDim TT(UBound(K)) With Sheets(Xs) [A1] = "اسم المدرسة" [A2].Resize(DD.Count, 1) = Application.Transpose(K) For I = 0 To UBound(K) TT(I) = Filter(T, K(I)) For J = 0 To UBound(TT(I)) Cells(I + 2, J * 2 + 2) = Split(TT(I)(J), "|")(1) Cells(I + 2, J * 2 + 3) = Split(TT(I)(J), "|")(2) Next Next I = [A1].CurrentRegion.Columns.Count For J = 2 To I Step 2 Range(Cells(1, J), Cells(1, J + 1)) = SSS Next Application.ScreenUpdating = 1 End With End Sub وإليك الملف المرفق الأخير Grab Data From Sheets Colored In Red Or White YasserKhalil V2.rar1 point
-
نورت المنتدى أخي الفاضل السيفاني وفي انتظار المزيد من الاستفسارات .. وإن شاء الله ستجد إخواناً يقدمون لك يد المساعدة (بس خلي بالك منهم اللي بيقدم رجل المساعدة وبيضرب بالشلوت ..أكيد فاهمني يا عربي)1 point
-
1 point
-
السلام عليكم ورحمة الله وبركاته أخي الحبيب ياسر العربي عطرت المكان بمرورك الطيب وكلماتك العذبة ..الله ينور علينا وعليكم آمين...فما هذا إلا من عبق رياحينكم جزاكم الله خيراً..والسلام عليكم.1 point
-
السلام عليكم ورحمة الله وبركاته أخي الحبيب ياسر أبو البراء مروركم شرف لي أخذت برأيكم وآخذ بنصيحتكم أما عن التنسيقات فهي ضرورة وهذا حديث شريف يرينا التكامل بين حسن المظهر وطيب المخبر: حديث ابي موسى الأشعري حين قال للنبي (لو علمت أنك تستمع لحبرته لك تحبيرا) في الرد على قول النبي حين قال:لو رأيتني وأنا أستمع لقراءتك البارحة والسلام عليكم ورحمة الله وبركاته.1 point
-
السلام عليكم ورحمة الله أخي الكريم، اكتب المعادلة بالشكل التالي: =INDIRECT(B2&4)*30% وبإذن الله يكون ما تريد... بن علية1 point
-
1 point
-
وعليكم السلام ورحمة الله أبا الحسن والحسين مرورك بالموضوع شرف كبير لي .. فقد عطرته بردك بارك الله فيك وجزاك الله خيراً على دعائك الطيب1 point
-
1 point
-
أخي الكريم أبو يوسف جرب الكود التالي عله يفي بالغرض Sub YasserReport() Dim Ws As Worksheet, Wf As Worksheet, Cel As Range Dim TN As Long, S As String, N As String, R As Long, C As Long Set Wf = Sheets("Final") Application.ScreenUpdating = False For Each Ws In Worksheets N = Ws.Name If N Like "Sheet*" Then For Each Cel In Ws.UsedRange.Offset(20, 1).Resize(, 41) If Not Cel.Row Mod 2 = 0 And Cel.Value <> 0 Then S = Ws.Cells(Cel.Row, 45) TN = Cel.Value N = Ws.Cells(19, Cel.Column) If S <> "" Then If N = "" Then N = Ws.Cells(19, Cel.Column - 1) R = 2 Do Until Wf.Range("A" & R) = S Or _ Wf.Range("A" & R) = "" And Wf.Range("B" & R) = "" R = R + 1 Loop C = 2 Do Until Wf.Cells(R, C) = N Or Wf.Cells(R, C) = "" C = C + 2 Loop Wf.Cells(R, 1) = S Wf.Cells(R, C) = N Wf.Cells(R, C + 1) = TN End If End If Next Cel End If Next Ws Application.ScreenUpdating = True End Sub إليك الملف المرفق .. لا تنسانا بدعوة بظهر الغيب تقبل تحياتي Grab Data From Sheets Colored In Red Or White YasserKhalil.rar1 point
-
أخي الحبيب أبا الحسن والحسين كود رائع وجميل وإن لم يكن مكانه في الموضوع لكنني استفدت منه كثيراً بالنسبة للسائل يريد التعامل مع زر Command Button على الفورم قمت بعمل ملف إن شاء الله يعجبكم لكنه به مشكلة بسيطة بحاول أحلها لنا عودة إن شاء الله1 point
-
1 point
-
اعذرنى أستاذ احمد فقد فهمت أن الخطأ بمسار القاعدة الخارجية فقط ولم أستطع فهم الخطأ الذى كنت تعنيه أولا ولكن ما شاء الله عليك أستاذ جعفر جبتها من أول مرة1 point
-
الله ينور عليك karrar sabry إضافة بسيطة جدا للكود الذي تفضلت به.. بعد الرسالة لكي لا يحتفظ بالتاريخ الغير مساوي للعام Me.ax = ""1 point
-
1 point
-
الحمد لله الذي تتم الصالحات على يديه اشكرك اخي الكريم على كلماتك ودعائك الكريم.1 point
-
اخي موسى ... اذا كان قصدك انت تختار الاصناف يدويا , فعليك : 1- عمل حقل بالجدول نوع نعم / لا 2- عمل استعلام مبني على الجدول بشرط على الحقل نعم / لا و الشرط هو نعم فقط 3- عمل التقرير مبني على الاستعلام فعند فتح الجدول اختر الاصناف التي تريد ظهورها في التقرير بوضع علامة صح في حقل نعم / لا1 point
-
أخي الكريم ابن الملك (منقول أمير الإكسيل وخلاص) بارك الله فيك وجزاك الله خيراً على الموضوع الرائع والمفيد للجميع في انتظار المزيد من ابداعاتك .. لي ملحوظة صغيرة حاول تدي الموضوع حقه من حيث التنسيق والتفاصيل وكدا يعني بس خلاص1 point
-
الله يحفظكم أتابع ردودكم وأحاول الفهم أكثر لكن مازلت لدي نفس المشكلة أريد التفسير أكثر وللعلم أنا أعمل على أكسيس 2007 بنسخة فرنسية ولكم جزيل الشكر1 point
-
السلام عليكم المسألة كانت تحدي ، وقبلت التحدي انا غيرت اسماء النموذج الرئيسي والفرعي الى اسماء frm_Search و sfrm_Search. الآن يمكنك البحث عن اي جزء من الكلمة ، واذا اردت البحث عن كلمة اخرى في السجل ، فما عليك الا ان تضع (مسافة او / او *) بين الكلمات ، فسيعتبرها البرنامج على انها كلمة اخرى يجب البحث عنها: . والكود: Option Compare Database Dim mySQL As String Dim mySQL1 As String Private Sub Form_Load() mySQL = "Select * From [المستندات]" Me.n2 = "" If Len(Me.n2 & "") = 0 Then Me.sfrm_Search.Form.RecordSource = mySQL End If End Sub Private Sub n2_Change() 'do the initial subform Record Source mySQL1 = "Select * From [المستندات]" mySQL = mySQL1 & " Where" 'now we want to split the search code into smaller bits, 'if seperate by / \ * or space, then change this seperator to | (a unique letter), 'this way we will have more than ONE word to search for Dim x() As String Dim A As String A = Me.n2.Text A = Replace(A, "/", "|") A = Replace(A, "\", "|") A = Replace(A, " ", "|") A = Replace(A, "*", "|") 'the words are split and ready x = Split(A, "|") If UBound(x) = 0 Then 'Still one word, search for it mySQL = mySQL & " [كلمات ارشادية]" mySQL = mySQL & " Like '*" & x(i) & "*'" Else 'it is ONE word and a seperate by / \ * or space, 'so lets make a Where statement for each seperate word For i = LBound(x) To UBound(x) If i = 0 Then 'its a word and a seperator, the NEXT word is NOT added yet mySQL = mySQL & " [كلمات ارشادية]" mySQL = mySQL & " Like '*" & x(i) & "*'" Else 'its multiple words, add the AND command between each word mySQL = mySQL & " AND [كلمات ارشادية]" mySQL = mySQL & " Like '*" & x(i) & "*'" End If Next i End If 'if the Search field is Empty, use the initial mySQL1 Me.n2.SetFocus If Len(Me.n2.Text & "") = 0 Then mySQL = mySQL1 End If 'Debug.Print mySQL Me.sfrm_Search.Form.RecordSource = mySQL End Sub . ملاحظة مهمة: اذا كان برنامجك على الشبكة ، فلا تضع الكود على "حدث التغيير" (معناه ، كلما اضفت/حذفت حرف ، فارجع الى الجدول وخذ البيانات منه) ، لأنه سيجعل البرنامج جدا بطئ ، وانما استخدم زر البحث. جعفر 309.Search_as_you_Type_jj.mdb.zip 309.Search_as_you_Type_jj.mdb.zip1 point
-
السلام عليكم اضغظ على زرطباعة ستختفى الصفوف التى بها اصفار في ورقة الطباعة (الكود من ابداعات الافاضل في اوفيسنا حفظهم الله جميعا) بيان الدخل.rar1 point
-
الأستاذ / أبو علي السلام عليكم ورحمة الله وبركاته إليك الملف لعله المطلوب . 000011.rar1 point
-
1 point
-
الأستاذ / أبو علي السلام عليكم ورحمة الله وبركاته بالنسبة للعلاوة كل سنتين 9% عندما يكون الموظف حصل على 9% سنة 2010 ثم يأخذ سنة 2011 علاوة 25% بعد ذلك يحسب له سنتين على 2010 أو 2011 وعندمل يصل راتب الموظف لسنة 2013 المفروض يكون راتبه الفعلي الان. عموماً شاهد الملف وعَقّب عليه لتكملته إن شاء الله. 000001.rar1 point
-
1-حساب راتب الموظف الحالي ااذا علمت ان الموظف يحصل على زيادة في الراتب قدرها 9% كل عامين 2- في عام 2000 حصل الموظف على زيادة اولى في الراتب مقدارها 50% من راتبهم الحالي فكم يكون الراتب 3-في عام 2011 حصل الموظف على زيادة ثابتة في الراتب مقدارها 25% من راتبهم الحالي فكم تكون 4- حساب عمر الموظفين بالسنوات 5- حساب عدد الموظفات الاناث 6- حساب مجموع رواتب الموظفين الذكور من بداية التعيين 7- التمثيل البياني لنسبة عدد الذكور الموظفين والموظفات الاناث بالنسبة للعدد الكلي للموظفين في الشركة 8- رسم الخط البيانيلرواتب للذكور والخط البيانيلرواتب للاناث والمقارنة بينهما 9- تحديد تاريخ الترفيعة المقبلة لكل الموظفين اذا علمت ان الترفيع يحصل للموظف كل عامين1 point
-
الأخوة الأعزاء السلام عليكم ورحمة الله وبركاته أرفق لكم اليوم الإثنى عشر جزءاً للشرح الكامل لجميع دوال برنامج الإكسيل باللغه العربيه والذى وجدتة على أحد مواقع الإنترنت فقمت بتجميعة وتصنيفة وفقاً لطبيعة الدوال وهو شرح مبسط جداً أرجو أن يكون نافعاً للبعض منا وسوف أقوم بتحميلهم على عدة مرات كالتالى:- الجزء الخامس : دوال قواعد البيانات الجزء السادس : دوال الوقت و التاريخ الجزء السابع : الدوال الهندسية الجزء الثامن : دوال المعلومات الجزء التاسع : الدوال المنطقية الجزء العاشر : دوال البحث الجزء الحادى عشر : دوال النصوص الجزء الثانى عشر (والأخير) : دوال المكعب وعذراً على التأخير فقد كنت أقوم بتنزيل كل ملف على حده أرجو منكم الدعاء لوالدى رحمة الله عليه بالمغفرة أخوكم عيد مصطفى Database Functions.rar Date & Time Functions.rar Engineering functions.rar Information functions.rar Logistic functions.rar Search functions.rar Text Functions.rar Cubic functions.rar1 point
-
الدخول الى اكسس 2007 - في اقصى اليمن يوجد شعار ماكروسوفت اوفيس - في الاسفل يوجد خيارات Access - قاعدة البيانات الحالية - عرض النموذج( اختيار نوع الفورم المطلوب )1 point
-
وعليكم السلام ورحمة الله لعمل المطلوب أتبع الخطوات الآتية : 1. قم بإنشاء وحدة نمطية وضع فيها الكود الآتي وخزنها في أي أسم تريد '---------------------------------------------------------------------' ' Module: DisableShiftKey ' ' Date: July 18, 2003 ' ' ' ' Purpose: To stop the user from holding the shift key on startup to ' ' access the database window. ' '---------------------------------------------------------------------' Option Compare Database Option Explicit '---------------------------------------------------------------------- Function ChangeProperty(strPropName As String, varPropType As Variant, varPropValue As Variant) As Integer Dim dbs As Object, prp As Variant Const conPropNotFoundError = 3270 Set dbs = CurrentDb On Error GoTo Change_Err dbs.Properties(strPropName) = varPropValue ChangeProperty = True Change_Bye: Exit Function Change_Err: If Err = conPropNotFoundError Then ' Property not found. Set prp = dbs.CreateProperty(strPropName, _ varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ' Unknown error. ChangeProperty = False Resume Change_Bye End If End Function '---------------------------------------------------------------------- Function BypassKey(onoff As Boolean) Const DB_Boolean As Long = 1 ChangeProperty "AllowBypassKey", DB_Boolean, onoff End Function '----------------------------------------------------------------------- 2. قم بإنشاء ماكروات جديدة هي : اسم الماكرو الأول: ByPassKeyOff الإجراء: Runcode الإقتران: BypassKey(False) اسم الماكرو الثاني: ByPassKeyOn الإجراء: Runcode الإقتران: BypassKey(True) 3. نموذج الدخول للنظام الخاص بك قم بإنشاء مستطيل بدون إطار ولون خلفية نفس خلفية النموذج أو إذا كان عندك صورة في نموذج الدخول يمكن استخدامها مكان المستطيل وعرف حدث عند النقر وقم باختيار الماكرو ByPassKeyOn. 4. قم بتشغيل المكرو ByPassKeyOff خزن وأخرج من قاعدة البيانات. 5. الآن عندما تدخل إلى قاعدة البيانات وأنت ضاغط على Shift لن تظهر لك نافذة قاعدة البيانات . لإظهار قاعدة البيانات اضغط بالماوس حيثما وضعت المستطيل المخفي أو الصورة ثم أعد تشغيل القاعدة مع shift ستظهر ولإعادة المنع كرر الخطوة رقم 4. وتعتبر هذه إحدى طرق الحماية لقاعدة البيانات . أملا لك التوفيق في المحاولة مع وافر الاحترام1 point
-
النقاء ، يجب أن يتم تتبع هذه الإجراءات حيثما تطلب بحيث يسجل لكل عملية تتم سواءً اضافة أو حذف أو تعديل بجدول خاص يمكن أن يكون كما يأتي اسم المستخدم ، التاريخ ، الوقت ، الجدول ، العملية ، تقاصيل وفي حقل التفاصيل يمكن اضافة تفاصيل أكثر عن كل عملية حسب الحاجة بالطبع لتنفيذ هذه الطريقة يجب أن يكون البرنامج مجهزا بشاشة دخول للمستخدمين لمعرفة من هو المستخدم الذي قام بالتغيير رغم أن الموضوع كبير وقد يبدو صعباً إلا انه يمكن تطبيق ذلك إذا كانت الحاجة موجودة له. تحياتي1 point
-
هذا المثال يختبر وجود ملف فى المسار c:\officena.txt فاذا لم يجده يغلق القاعدة و يظهر رسالة و اذا وجده يقوم باظهار رسائل بالمكتوب داخل الملف و يتم اضافته فى حدث form load للنموذج الافتتاحي للبرنامج Private Sub Form_Load() On Error GoTo ERROR_SUB Open "c:\officena.txt" For Input As #1 Do While Not EOF(1) Line Input #1, xx MsgBox Trim(xx) Loop Close #1 Exit Sub ERROR_SUB: If Err.Number = 53 Then MsgBox " No Autorization - This Program Is Not Authorized ! " + Chr(13) + Chr(10) + "Do not do this Again !!", vbCritical, "Alert Message " Close #1 DoCmd.Quit End If End Sub1 point