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

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

  1. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

    المشرفين السابقين


    • نقاط

      13

    • Posts

      13,165


  2. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      7

    • Posts

      6,594


  3. أبوبسمله

    أبوبسمله

    الخبراء


    • نقاط

      5

    • Posts

      3,244


  4. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      4

    • Posts

      11,769


Popular Content

Showing content with the highest reputation on 26 ينا, 2015 in all areas

  1. الحلقة الثالثة عشر ******************* السلام عليكم ورحمة الله وبركاته إخواني الأحباب في المنتدى الأغر ..نأسف على عدم فتح الباب الفترة اللي فاتت بسبب البرد الشديد ، وبعد ما الجو اتظبط شوية نقدر نفتح الباب عشان الشمس تدخل وتدفنيا.. من أول الحلقة دي إن شاء الله هنبدأ نتعامل مع مهارات التعامل مع محرر الأكواد ، عايزين نوصل للأحتراف .. هنتكلم عن مهارة كتير بنحتاج نتعلمها ، ألا وهي الفرز أو الترتيب أو ما يطلق عليها باللغة اللي مش عربية Sort هنشتغل عملي علطول (أو على عرض ..مش هتفرق كتير) ..نفتح مع بعض ورقة عمل ، ومحدش يستنى مني إني أرفق ملف ، لأنك عشان تتعلم يبقا لازم تشتغل بايدك سيبك بقا من شغل النظري اللي مبيوكلش عيش ده ! افتح يا محسن ، شعارنا في الحلقات افتح (مرة افتح الباب ..افتح مصنف جديد ..افتح الخيارات في البرنامج ..افتح محرر الأكواد .. وشوية واحد هيقولي لو مبطلتش رغي هآجي أفتح دماغك وأريح الناس من رغيك) نفتح ورقة العمل ونكتب شوية بيانات عشان هنشتغل عليها ...وعشان أريحكو أدي شوية بيانات بدل ما تتعبوا ايديكم يا أحباب ، أنا بردو يهمني راحتكم م الاسم النوع 1 ياسر ذكر 2 احمد ذكر 3 ابراهيم ذكر 4 حسام ذكر 5 سليم ذكر 6 ماجدة أنثى 7 هدى أنثى 8 محمد ذكر 9 دينا أنثى 10 نور ذكر 11 رضا ذكر 12 سلمى أنثى 13 فاروق ذكر 14 شهد أنثى 15 كمال ذكر 16 طارق ذكر 17 هدير أنثى 18 سارة أنثى 19 أميرة أنثى حدد البيانات وتعالى لورقة العمل في الخلية A1 ، واعمل كليك يمين ، ثم اختر Paste Special (لصق خاص) ثم اختر من النافذة اللي هتطلع لك Text ، بكدا هتلاقي عندك 3 أعمدة (عمود للمسلسل ودا عشان مسلسل افتح الباب ، وعمود الأسماء ، وعمود النوع.. ) ويا ريت ننسخ البيانات في نطاق تاني مرة تانية لأننا هنجرب عليها أكتر من تجربة (ضعها مرة أخرى في النطاق K1:M20 مثلاً )!! المطلوب : ترتيب البيانات حسب الاسم ، ودا أمر بسيط جدا ومش معقد أبداً .. طريقة الحل : نروح للتبويب Developer ثم نختار Record Macro ثم نقف في الخلية A1 في بداية البيانات ، ونروح للتبويب Data ثم الأمر Sort ونختار من الحقل اللي اسمه Sort By نختار الاسم (لأن هو دا الحقل المطلوب الترتيب على أساسه) ، وفي الحقل الثالث المسمى Order (ودا شكل الترتيب ونختار يا أستاذ مختار A to Z (هتلاقي هو دا الخص الافتراضي أقصد الخيار الافتراضي ) يعني الترتيب أو الفرز حاجة من اتنين يا إما تصاعدي A to Z (من تحت لفوق) ودا بيسموه الجماعة اللي ما يتسموا (Ascending) أو تنازلي Z to A (من فوق لتحت) ودا اللي بيسموه في اللغة الأجنبية Descending ، وعشان ميحصلش عندك لخبطة الكلمة Ascending بتبدأ بحرف الـ A تبقا دي A to Z (الترتيب التصاعدي) !! كل دا إحنا بنسجل يا حسين (اعدل الكرافتة عشان صورتك تطلع حلوة) ..Stop أنا المخرج وبقول Stop يعني وقف التسجيل .. ياااااااه كانت حلقة صعبة أوي الحلقة دي ، التسجيل بيحتاج مجهود جبار عشان تطلع الحلقة حلوة ولذيذة !!! دلوقتي جه وقت الجد ، اللي إحنا منعرفوش ، ندخل المغارة (على رأي الكبير حسام عيسى ..صقر المنتدى) ، هندخل المغارة عن طريق Alt + F11 معلومة قديمة ، طيب هندخل نعمل ايه ؟ أكيد هندخل عشان ندور على الكنز ..مش دي بردو مغارة ياسر بابا !! هنلاقي الكنز بس مدفوووووووون تحت الأنقاض Sub Macro1() ' ' Macro1 Macro ' ' Range("A1:C20").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:C20") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub دا اللي إحنا سجلناه ..إحنا طلعنا شطار وبنعرف نسجل كويس جداً ..الكنز فين يا نور العين؟ الكنز مدفون ما بين الأسطر ..إزاي نقدر نخرجه.. أقولكم دا كله هتش !! اللي عمله محرر الأكواد في سنين هنختصره إحنا في ثانية واحدة وبسطر واحد (وهي دي الشطارة !!) Range("A1:C20").Sort Key1:=Range("B1:B20"), Order1:=xlAscending, Header:=xlYes ضع هذا السطر اللذيذ في إجراء فرعي وجربه ، هنلاقي إنه يبنفذ نفس الكود الطويل اللي سعادة محرر الأكواد سجله . طيب نهضم السطر اللي اتكتب : أول شيء عشان تقدر تتعامل في أي كود إنك تحدد الخلية أو النطاق اللي هتتشغل عليه ، وأظن دي واضحة جدا ، فالنطاق اللي هنشتغل عليه واللي فيه البيانات هو A1:C20 ، وممكن في الكود نحدد أول خلية في النطاق بس يعني ممكن يكون شكله كدا : Range("A1") بس أنا أفضل إننا نكتب النطاق بالكامل ، وبعد ما حددنا النطاق ، نطلق الحدث أي الفعل ، يعني السؤال المتوقع ايه المطلوب نعمله في النطاق : الإجابة نطبطب عليه وندلعه ، إجاية غير صحيحة ، الإجابة إننا نفرسه (هذه هي الإجابة الصحيحة ..نعم نفرزه ونرتبه زي ما إحنا عايزين) والفرز بيكون بكلمة Sort ونترك مسافة واحدة بالمسطرة بعد الفرز .. ونبدأ نشوف حاجة اسمها بارامترات الحدث Method ، ودي ممكن نشوفها في تسجيل الماكرو اللي قام بيه محرر الأكواد .. إحنا هناخد المهم وبس ، ميهمناش الدش الكتير !! أول بارامتر هو مفتاح الفرز أو الترتيب Key، بمعنى آخر المقصود بيه العمود اللي هيتم على أساسه الفرز ، والعمود هنا هو عمود الأسماء B1:B20 ، ونفس الكلام ممكن نستغنى عن النطاق بالكامل ونذكر فقط أول خلية في العمود B1 بالشكل ده Key1:=Range("B1") طيب محدش سأل ايه الواحد اللي جنب المفتاح (دا الحارس الشخصي للمفتاح عشان محدش يسرقه) ..الواحد ده يا أساتذة هو المفتاح الأول لعملية الفرز ، وهنفهم الحتة دي لما ناخد مثال تاني ... بعد كلمة Key1 نقطتين فوق بعض (Shift + حرف الكاف : ) وسواء وإنت بتكتب عربي أو إنجليزي (الاتنين سواسية).. يليها علامة يساوي .. ومعروف إن علامة يساوي ييجي بعدها قيمة ، ونترجم الكلام ده إن قيمة المفتاح الأول هو النطاق B1:B20 (أفضل إنه يتكتب نطاق العمود بالكامل) ناخد فاصل ، لا مش هنريح يا عبد الله ، أقصد فاصلة مش فاصل ، الفاصلة دي هي اللي بتفصل بين البارامترات يا أحباب .. ننتقل للبارامتر الثاني والمسمى Order ودا ترجمته يا أخ ابو سليمان (الترتيب ..) دلوقتي هتدعي عليه ، وتقولي يا عم إنت مش قلت كلمة Sort دي معناها ترتيب ..أيوا مش هنكر ..بس عشان تتضح الصورة كلمة Sort هنا فعل أو حدث Method ، أما كلمة Order تعتبر زي الاسم وممكن نقول إن البارامترات دي وصف لكيفية حدوث الحدث ، أي الطرق المؤدية لحدوث الحدث !! أنا تهت زيكم بالظبط المهم المقصود منها نوعية الترتيب هنا (هل الترتيب تصاعدي أم تنازلي) ، وبردو كلمة Order جنبها رقم واحد (الحارس الشخصي) ..يليها نقطتين وعلامة يساوي ، وقيمتها إما xlAscending أو xlDescending (أظن مفهومة يا أبو سليمان) ناخد فاصلة تانية وأوعدك دي تكون آخر فاصلة في السطر ده ..البارامتر الثالث هو المسمى Header ودي ترجمتها حقول البيانات أو عناوينها .. نسأل هل للبيانات اللي موجودة عناوين ولا لا ؟؟ م ، والاسم ، والنوع (دي عناوين أو حقول للبيانات) .. الإجابة نعم xlYes معلومة جديدة نستفيد منها إن الحدث Mehod قد يتبعه بارامترات ، وتأتي هذه البارامترات بعد الحدث Method بمسافة بينهما ، يعني اللي بيفصل بين الحدث والبارامترات هي المسافة (دي المحرم..) ..أما البارامترات فبيتم الفصل بين كل واحد وأخوه بفاصلة , .. حاجة تانية لما تلاقي النقطتين فوق بعض وبعدين علامة يساوي تعرف إن دا بارامتر .. يا رب تكون المعلومة مفيدة. طيب سؤال من الأستاذ طارق : هل البيانات لازم يكون فيها عنوان عشان نعمل فرز ؟؟ جاوب إنت يا عبد الكريم ، عبد الكريم : يا أستاذ طارق طالما فيه بارامتر بيسأل هل فيه عنوان أو مفيش ، يبقا أكيد ممكن إننا نفرز من غير عناوين البيانات .. الله ينور عليك يا أستاذ عبد الكريم ، وميحرمناش منك ، فعلا الكلام دا صحيح .. نشوف السطر ده بيأدي نفس الغرض ، استغنينا عن صف العناوين : Range("A2:C20").Sort Key1:=Range("B2:B20"), Order1:=xlAscending, Header:=xlNo النطاق بدأ من A2 بعيداً عن عناوين البيانات ، والمفتاح كمان بدأ من B2 ، ونخلي بالنا من قيمة البارامتر Header هنلاقيه xlNo (يعني مفيش عناوين). ********************************* ننتقل لجزئية تانية .. الجزئية اللي فاتت أخدت حقها وزيادة ، دلوقتي واحد بيبص لي وبيقولي ايه شكل البيانات الملخبطة دي ..حد يفرز الأسماء ويخلي كله مع بعضه (ذكور مع إناث) دا إنت راجل محترم حتى عيب عليك !! ..ردي : أنا آسف والله يا حاج محمد مكانش قصدي ، دا كان مجرد مثال عموما عنيا ليك هنعيد ترتيبهم زي ما إنت عايز (حضرتك أكيد عايز الذكور أولا وبعدين الإناث ) ..رد وقال : كدا عين العقل .. بسيطة يا حاج محمد : السطر الخاص بالفرز هنزود عليه مفتاح كمان ، وشكل لترتيب المفتاح الجديد ... قبل ما أضع السطر ..عايزين نعود نفسنا إننا ندي نفسنا مساحة من التفكير قبل التنفيذ .. الفرز المرة دي هيكون على عمودين (مين قبل مين .. يعني عمود الاسم الأول ولا عمود النوع ؟؟ الإجابة بسيطة عمود النوع عشان نفصل بين الذكور والإناث : أي خدمة يا حاج محمد) إذاً الفرز هكيون لعمود النوع (ذكر ، أثنى ) ، نبص في أول حرف في ذكر وأول حرف في أنثى (محدش يبص على كل الحروف عيب) أول حرف هو حرف الذال في كلمة ذكر ، وألف في كلمة أنثى : طيب الكلمتين دول الألف الأول ، بمعنى تاني لو تركنا الخيار xlAscending اللي هو الترتيب التصاعدي بكدا هيكون الإناث الأول وبعدين الذكور حسب الترتيب الأبجدي ، إذاً في الحالة دي هنكتب xlDescending (عشان تتم عملية الفرز ذكر ثم أنثى) نأتي للتطبيق العملي : ها هو السطر ... Range("A1:C20").Sort Key1:=Range("C1:C20"), Order1:=xlDescending, Key2:=Range("B1:B20"), Order2:=xlAscending, Header:=xlYes هنشبه السطر دا بشقة ليها بابين : أقصد بالبابين عمودين الترتيب (عمود النوع ثم عمود الأسماء) ، كل باب له مفتاح عشان يفتح بيه .. الباب الأول عمود النوع ومفتاحه رقم 1 ، وشكل ترتيبه أو نوع ترتيبه تنازلي (عمود النوع) Key1:=Range("C1:C20"), Order1:=xlDescending والباب التاني ومفتاحه رقم 2 ، وشكل أو نوع ترتيبه تصاعدي (عمود الأسماء) Key2:=Range("B1:B20"), Order2:=xlAscending طبعا المفتاح ده ميشتغلش على ده ، ولا ده يشتغل على ده ، إنما ده لده وده لده (معلش هيست شوية) مفتاح النوع هيعتمد على النطاق C1:C20 ، ومفتاح الأسماء هيعتمد على النطاق B1:B20 ، كل مفتاح يلعب في ملعبه أقصد في بابه ، أقصد في العمود الخاص بيه. وبكدا لما ننفذ السطر اللي فات ، نقدر نحصل على النتيجة التي ينتظرها الحاج محمد.. الحاجة أم محمد شكلها مكشر وزعلت وبتقول بالإنجليزي : Ladies First يا مان (معلش أصلها مثقفة حبتين) أوك يا حاجة ولا تزعلي نفسك .. الفكرة بأبسط مما تتخيلي غيري كلمة واحدة ، وألا أقولك متتعبيش نفسك شيلي حرفين وحطي حرف واحد بس شيلي حرفي De في كلمة Descending وحطي حرف الـ A (شفتي بقا إنها بسيطة .. متنسيش الفطير عشان مستر حسام) يا للروعة !! الحاجة أم محمد مش مصدقة نفسها .عموما جربوا (مش تجربوا الكود .. جربوا فطير أم محمد هيعجبكم جداً ، وبعد ما تاكلوا وتتمتعوا بالفطير جربوا الكود بعد التعديل ..) ********************************* ننتقل لجزئية أخيرة تهم نفس الموضوع ...ألا وهي ألا وهي (تصدقوا نسيت) افتكرت .. إزاي أخلي النطاق غير محدد أو ديناميكي .. إحنا لما اتعاملنا مع النطاق حددنا النطاق لحد الصف رقم 20 في المثالين اللي فاتوا .... عايزين يكون الكود مرن ، يعني يمشي مع أي عدد من الصفوف ، لأن قواعد البيانات معروف إنها مش ثابتة .. يبقا المطلوب الجديد إننا نخلي آخر صف مفتوح ، أو من خلال الكود نخلي محرر الأكواد هو اللي يحدد آخر صف مش إحنا .. مستر حسام عيسى تناول (الفطيرة بتاعت أم محمد) وأيضاً تناول هذه النقطة في شرح رائع له .. نشرحها تاني ..ونخلي بالنا ، وخلينا جد بقا شوية ومركزين أوي لأن الحتة دي تقريبا مفيش مبرمج بيستغنى عنها (آه والله زي ما بقولكم كدا) نفرض دلوقتي إننا مش عارفين آخر صف ..نجيبه إزاي .. الإجاية نسجل ماكرو (واحد مبرق ومش فاهم أيوا هنسجل ماكرو ..بردو مبرق ) بص يا مبرق : ابدأ تسجيل و تعالى في العمود الأول A واقف بعيد تحت بعد البيانات بمسافة كبيرة وليكن مثلا A100 ، وبعدين اضغط Ctrl + سهم لفوق من لوحة الأسهم .بس خلااااص انتهى التسجيل ، نروح لمحرر الأكواد هنلاقي الشكل ده Range("A100").Select Selection.End(xlUp).Select وممكن نختصره في سطر واحد بس إننا نشيل كلمة Selection ونحط مكانها النطاق Range("A100").End(xlUp).Select عايز تطبق الكود ده ، روح لأي خلية بعيدة في أي عمود واضغط Alt+F8 وشوف الماكرو اللي فيه السطر اللي فات اسمه ايه واضغط Run.. نفهم إزاي هنستغل الحتة دي في إننا نعرف آخر سطر به بيانات في العمود A .. نقطة البداية هي A100 ، والكلمة End(xlUp) دي لما ضغطنا Ctrl وسهم لفوق المحرر ترجمها كدا ، يعني اطلع لفوق Up يا سفن أب يا لذيذ يا رايق (ما هو لازم نهضم الفطير اللي أكلناه) طيب واحد بيقولي بس دا مش حل لأني أساسا معرفش البيانات دي آخرها فين ، بلاش استعباط .هرد عليه وأقوله : الله يسامحك ، ما هو لو صبر القاتل ع المقتول كان مات لوحده ... إحنا هنخلي رقم الصف 100 هو آخر صف في ورقة العمل ، بالنسبة لـ 2003 آخر صف 65536 ، أما في 2007 فما فوق فعدد الصفوف 1048576 (يا دي الحيرة ..يعني نغير رقم 100 لأي رقم فيهم) ..اللي يحيرك طيره ، يعني لا هنستخدم الرقم ده ولا ده إحنا هنخلي المحرر هو اللي يعد الصفوف كلها بالسطر ده ، سبق وشرحناه في النافذة الفورية MsgBox Rows.Count بس إحنا مش عايزينها في رسالة ..دا بس عشان تتضح الصورة ، كلمة Rows تعني صفوف يا أبو سليمان ، وكلمة Count يعني يا محرر اتفضل عد. هكيون الناتج لتنفيذ السطر اللي فات مختلف حسب إصدار الأوفيس اللي عندك ، لو 2003 هيطلع الناتج 65536 ، ولو الأوفيس 2007 فما فوق هيطلع الناتج 1048576 (أكيد فيه ناس تاااهت مني .. الفطير عمل عمايله معاكم) يرجع مرجوعنا لموضوعنا الأصلي عرفنا عدد الصفوف من خلال محرر الاكواد ، يبقا هنشيل رقم 100 ونحط Rows.Count وبس Range("A" & Rows.Count).End(xlUp).Select نخلي بالنا الرقم 100 كان داخل أقواس التنصيص ، لكن لما استخدمنا الجملة Rows.Count الأقواس طردتها براها ، لأنها الأقواس مش بتقبل المتغير ، وعدد الصفوف هنا يا أحباب وركزوا متغير حسب الإصدار ، لكنها بردو حنينه مهانش عليها تطرده قامت حضنته بعلامة & عشان يكون جنبها طيب نرجع تاني للهدف من دا كله إننا نعرف رقم آخر صف فيه بيانات ، إحنا بالسطر الأخير عرفنا نحدده لكن إزاي نعرف رقم صفه .. هنشيل Select ونحط Row وبس .. لا محدش يقولي بس !! كدا السطر دا بالشكل ده Range("A" & Rows.Count).End(xlUp).Row لو نفذت السطر ده هيقولك محرر الأكواد يا أهبل ايه ده ويطلع لك رسالة خطأ Invalid Use استخدام خاطيء.. السطر صحيح ، بس السطر عبارة عن رقم (اللي هو رقم الصف الأخير اللي فيه بيانات) بس الرقم دا مينفعش يقف لوحده يخاف ياخد برد .. لازم نحط الرقم ده في متغير .. Dim LR As Long LR = Range("A" & Rows.Count).End(xlUp).Row MsgBox LR عملنا متغير باسم LR ودي اختصار Last Row أو الصف الأخير (بس التسمية اختياري يا شباب) ووضعنا قيمة للمتغير اللي سميناه LR في السطر الثاني ، فأصبح المتغير LR يحمل الآن رقم الصف الأخير وفي السطر الثالث عشان نختبر مدى صحة الكود ونشوف النتيجة عملنا رسالة يظهر فيها قيمة المتغير .. ** ملحوظة هامة : ممكن السطر الثاني نستخدم كلمة Cells بدلاً من كلمة Range بس هيكون التركيب مختلفة شوية ، لأن مع كلمة Cells بيكون فيه جزئين : الجزء الأول رقم الصف والجزء الثاني رقم العمود ، معنى الكلام ده إن Cells بتتعامل مع أرقام ، فيكون شكل الكود اللي فات لو استخدمنا Cells بهذا الشكل : Dim LR As Long LR = Cells(Rows.Count, 1).End(xlUp).Row MsgBox LR طبعاً Rows.Count تمثل رقم آخر صف به بيانات ، ورقم واحد بيمثل رقم العمود الأول A >>>>> نفذ الكود سواء اللي فات أو اللي قبله !! هنلاقي رقم الصف الأخير طلع في رسالة (أنا طلعت عيني وأكيد إنتو كمان .. يعني اللفة الطويلة دي عشان نعرف رقم آخر صف به بيانات.) دلوقتي جه الوقت إني أودعكم .. نشوف شكل الكود في النهاية هيكون عامل إزاي Sub SortData() Dim LR As Long LR = Range("A" & Rows.Count).End(xlUp).Row Range("A1:C" & LR).Sort Key1:=Range("C1:C" & LR), Order1:=xlDescending, Key2:=Range("B1:B" & LR), Order2:=xlAscending, Header:=xlYes End Sub دا الكود اللي هيرتب الذكور ثم الإناث ، وبعدين يرتب الأسماء ، في النطاق اللي بيبدأ من A1:C ورقم آخر صف ..لاحظ إننا شلنا رقم 20 من الكود الأصلي اللي شرحناه من بدري ، واستبدلناه بالمتغير LR والذي يحمل قيمة رقم آخر صف...!! لتجربة الكود أضف اسماً جديدا ونفذ الكود مرة أخرى ستجد أن الاسم الجديد قد انتقل لترتيبه ، وإلى هنا توقفت دماغي (فااااااااااااااصل ومفيش نواصل) أرجو أن أكون قد وفقت في توصيل المعلومة ، وإلى أن نلتقي أترككم في رعاية الله. كان معكم الحاجة أم محمد صاحبة الفطير من منتدى أوفيسنا تقبلوا تحياتي ودمتم بود
    2 points
  2. السلام عليكم ورحمة الله تعالى وبركاته اخى واستاذى ومعلمى الفاضل الاستاذ ابو الآء اتفضل انظر الى هذا المرفق مكون من ثلاث امثله الاول ----- وحدة نمطية ModAutoNumFixID تعيد الترقيم التلقائى لعدد 1 جدول A1 من خلال ماكرو AutoExec الثانى ----- وحدة نمطية ModAutoNumFixID تعيد الترقيم التلقائى لعدد 2 جدول A1 , A2 من خلال ماكرو AutoExec الثالث ----- وحدة نمطية ModAutoNumFixID تعيد الترقيم التلقائى لعدد 3 جدول A1 , A2 , A3 من خلال ماكرو AutoExec لاحظ الفرق بين كود الوحدة النمطية لكل مثال المثال الاول الذى يحتوى على عدد 1 جدول Option Compare Database Option Explicit Public Function Mohammed_Essam_AutoNumFix() On Error Resume Next Dim strSQL1, strSQL2 As String strSQL1 = "ALTER TABLE [A1] DROP COLUMN [AutoNumber] ;" ' الجدول الأول strSQL2 = "ALTER TABLE [A1] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الأول DoCmd.RunSQL strSQL1 ' الجدول الأول DoCmd.RunSQL strSQL2 ' الجدول الأول End Function المثال الثانى والذى يحتوى على عدد 2 جدول Option Compare Database Option Explicit Public Function Mohammed_Essam_AutoNumFix() On Error Resume Next Dim strSQL1, strSQL2, strSQL3, strSQL4 As String strSQL1 = "ALTER TABLE [A1] DROP COLUMN [AutoNumber] ;" ' الجدول الأول strSQL2 = "ALTER TABLE [A1] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الأول strSQL3 = "ALTER TABLE [A2] DROP COLUMN [AutoNumber] ;" ' الجدول الثانى strSQL4 = "ALTER TABLE [A2] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الثانى DoCmd.RunSQL strSQL1 ' الجدول الأول DoCmd.RunSQL strSQL2 ' الجدول الأول DoCmd.RunSQL strSQL3 ' الجدول الثانى DoCmd.RunSQL strSQL4 ' الجدول الثانى End Function المثال الثالث والذى يحتوى على عدد 3 جدول Option Compare Database Option Explicit Public Function Mohammed_Essam_AutoNumFix() On Error Resume Next Dim strSQL1, strSQL2, strSQL3, strSQL4, strSQL5, strSQL6 As String strSQL1 = "ALTER TABLE [A1] DROP COLUMN [AutoNumber] ;" ' الجدول الأول strSQL2 = "ALTER TABLE [A1] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الأول strSQL3 = "ALTER TABLE [A2] DROP COLUMN [AutoNumber] ;" ' الجدول الثانى strSQL4 = "ALTER TABLE [A2] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الثانى strSQL5 = "ALTER TABLE [A3] DROP COLUMN [AutoNumber] ;" ' الجدول الثالث strSQL6 = "ALTER TABLE [A3] ADD [AutoNumber]AUTOINCREMENT;" ' الجدول الثالث DoCmd.RunSQL strSQL1 ' الجدول الأول DoCmd.RunSQL strSQL2 ' الجدول الأول DoCmd.RunSQL strSQL3 ' الجدول الثانى DoCmd.RunSQL strSQL4 ' الجدول الثانى DoCmd.RunSQL strSQL5 ' الجدول الثالث DoCmd.RunSQL strSQL6 ' الجدول الثالث End Function ملاحظة هامه الحقل الخاص بالترقيم التلقائى إسمه فى كل الجداول AutoNumber ويجب الايكون مفتاح اساسى للمره الثانية يجب الا يكون حقل الترقيم الترقيم التلقائى مفتاحا اساسيا والا لن تعمل الوحدة النمطية على اعادة الترتيب مرةاخرى الترقيم التقائى-officena.rar
    2 points
  3. انت عازم نفسك عند اخي رجب لما تنزل البلد ... وانا علي تكاليف العزززززززززززززززومة ايش رايك وراي اخينا رجب
    2 points
  4. اكتب في الخلية A11 هذه المعادلة و اسحب نزولاً =IF(B11<>"",MAX($A$10:A10)+1,"")
    2 points
  5. السلام عليكم ورحمة الله تعالى وبركاته خلال بحثي في الأنترنت وجدت هذا الكود فك حماية ورقة إليكم الملف الرجاء استخدام الكود فيما لا يغضب الله اللهم بلغت اللهم فاشهد إستخدام الكود في حالات نسيان كود ملفك وليس ملف الغير حتى تطلب الإذن مع تحيات محبكم/ الجموعي كود إلغاء حماية ورقة ملف إكسل.rar
    1 point
  6. بسم الله الرحمن الرحيم السلام عليكم اقدم هذا البرنامج البسيط برنامج : شئون العاملين (التربية والتعليم ) وهوا يهتم بكل ما يخص العاملين بالتربية والتعليم ووحدة التدريب بالمدرسة والبرنامج تم بمساعدة الاساتذة الكبار فى هذا المنتدى الجميل والذى لا ننكر ابدا فضل اساتذته الكبار بارك الله فيهم --------------------------------------- والبرنامج قابل للاضافة والتعديل فى مخرجاته وارجوا من الاساتذة فحص البرنامج وتحديد ان كان به اخطاء ام لا وفى النهاية تحية حب وتقدير الى جميع اعضاء هذا الصرح الجميل شئون العاملين.rar
    1 point
  7. السلام عليكم إخواني الكرام ... أشعر أن المنتدى كله مركز على الأسئلة والطلبات أكثر من الموضوعات التعليمية .. فإليكم درس خفيف ظريف ولن يستغرق منك في دراسته أكثر من 4 دقائق .. ************** نتحدث بشكل سريع عن استخدام دالة VLOOKUP للبحث عن جزء من النص داخل نطاق .. إليكم الملف المرفق به الشرح ، وأي استسفار أو سؤال لا تتردد واسأل ، لا تخجل من السؤال مهما بدا تافهاً لأن السؤال طريق ..طريق (وكله مطبات) بس هو طريق المعرفة .. VLOOKUP Text Inside A String.rar
    1 point
  8. تفضل أخي هذا الرابط http://www.officena.net/ib/index.php?showtopic=29972&view=getnewpost
    1 point
  9. المشكلة أخي أن المرفق به أكثر من جدول فبالتالي يكون العمل على نطاق محدد وليس نطاق ديناميكي فيستحيل على ما أعتقد في هذه الحالة عمل النطاق بشكل ديناميكي ...!! والتعديل على الكود لن يستغرق منك ثواني !!
    1 point
  10. بارك الله فيك أستاذنا القدير ياسر فعلا نحتاج لمثل هذه المواضيع الإثرائية والتي توسع من معرفتنا بهذا البرنامج العملاق سلمت أناملك الذهبية . تحيتي وودي
    1 point
  11. بارك الله فيك ولا يهمك ان شاء الله اول ما اوصل البيت هعمل النموزج وارفعه لحضرتك براحتك انا مش مستعجل الله يعينك اخى ويبارك فيك
    1 point
  12. السلام عليكم و رحمة الله و بركاته اضطر غدا صباحا لسفر اضطراري قد يستغرق اسبوعا أو أكثر لذلك أعتذر ممن بدأت لهم مواضيع لم تكتمل بعد اما أن تعذرونني و تنتظرون الاكمال بعد عودتي أو اذا ممكن أحد من الزملاء ممن لديه وقت يكمل مابدأت به بالنسبة للشرح العادي بدون مرفقات لامانع قد أتمكن من القراءة و الرد من حين لآخر , لكن دون امكانية النظر في المرفقات تحياتي لكم
    1 point
  13. أنار الله قلبك ويسر دربك ورزقك الجنة بلا حساب ولا عقاب . شكرا شكرا لك من الأعماق أستاذي القدير ياسر
    1 point
  14. قمت بفك الضغط مره اخرى وتجربته ويعمل بنجاح ايه المشكله لديك اخى ابو آلاء
    1 point
  15. بارك الله فيك أخي عبد الله ربي هذا أخي أحبه فيك أعصمه ألا يعصيك وأرزقه الفردوس يوم يلاقيك
    1 point
  16. حاضر تحت امرك بس ممكن اتاقل على حضرتك فى حاجه لانى فى الشغل الان نظرا لضيق وقتى برجاء مساعدتى فى جعل اسم الحقل للترقيم التلقائى وااااااااااااااااحد فى كل الجداول واعد ارفاق الملف مرة اخرى حيث اننى لاحظت اختلاف الاسم قم بضبط ما يلى تثبيت اسم حقل الترقيم التلقائى فى جميع الجداول ووليكن ID مثلا عدم جعل هذا الحقل مفتاح اساسى فى الجدول وياريت لو حضرتك تتكرم وتكتب لى اسم كل جدول يحتوى على ترقيم تلقائى نظرا لضيق وقتى اعتذر لذلك استاذى الكريم والله لو ان وقتى يسمح لقمت بعمل كل التعديلات من تلقاء نفسي قم بضبط ما يلى واعد ارفاق الملف مرة اخرى واقوم انا باضافة الوحدة النطية والتعديل عليها
    1 point
  17. اتفضل اخى ابو ادم Private Sub zer1_Click() Beep If MsgBox("??? ?E? E???? C???CE" & vbCrLf & _ "?? C?E ?E??I ?? E???? C???? .", _ vbMsgBoxRtlReading + vbMsgBoxRight + vbExclamation + vbYesNo, _ "E???? C???CE") = vbYes Then DoCmd.SetWarnings False DoCmd.RunSQL "INSERT INTO TPstoudntE ( id, RakamKomy, ForeName, Father, Grandfathername, FamilyName, csles, alsaf, elqyed, ELEDARH, elohafza, school, dyana, activ1, activ2, Mother_name, elryada, Phone_number_Father, jopfathr, School_fees, email, el7alat5asa, mol7zat_a5saey, ahoayat, o5ra, mo7awal_in, mo7awal_in2, othredarh, othrsvhool, almo7afza, detalta7wyl, photo, datalaltak, 7alahsa7yaa, DISEASE, Blood_virtue, Specials_disease, address, eqyd_dat, ÍÞá1 ) " & vbCrLf & _ "SELECT TPstoudnt.id, TPstoudnt.RakamKomy, TPstoudnt.ForeName, TPstoudnt.Father, TPstoudnt.Grandfathername, TPstoudnt.FamilyName, TPstoudnt.csles, TPstoudnt.alsaf, TPstoudnt.elqyed, TPstoudnt.ELEDARH, TPstoudnt.elohafza, TPstoudnt.school, TPstoudnt.dyana, TPstoudnt.activ1, TPstoudnt.activ2, TPstoudnt.Mother_name, TPstoudnt.elryada, TPstoudnt.Phone_number_Father, TPstoudnt.jopfathr, TPstoudnt.School_fees, TPstoudnt.email, TPstoudnt.el7alat5asa, TPstoudnt.mol7zat_a5saey, TPstoudnt.ahoayat, TPstoudnt.o5ra, TPstoudnt.mo7awal_in, TPstoudnt.mo7awal_in2, TPstoudnt.othredarh, TPstoudnt.othrsvhool, TPstoudnt.almo7afza, TPstoudnt.detalta7wyl, TPstoudnt.photo, TPstoudnt.datalaltak, TPstoudnt.[7alahsa7yaa], TPstoudnt.DISEASE, TPstoudnt.Blood_virtue, TPstoudnt.Specials_disease, TPstoudnt.address, TPstoudnt.eqyd_dat, TPstoudnt.ÍÞá1 " & vbCrLf & _ "FROM TPstoudnt " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=6));" DoCmd.RunSQL "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _ "FROM TPstoudnt " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=6));" DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 6 " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=5))" DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 5 " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=4))" DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 4 " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=3))" DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 3 " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=2))" DoCmd.RunSQL "UPDATE TPstoudnt SET TPstoudnt.alsaf = 2 " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=1))" DoCmd.SetWarnings True MsgBox "E?" End If
    1 point
  18. ربنا يجازيك عنا خيرا انا اجد نفسي مع شرحك
    1 point
  19. جزاكم الله كل الخير على شعوركم الطيب الجميل احبكم الله الذى احببتمونا فيه ولأجله واللهم اسأل ان يجمعنا فى الاخرة مع النبيين والصديقين والشهداء ونحن نسأله كما جمعنا فى الدنيا على حبه دون أن نسأله ولكن لى رجاء حتى تسهل الامر علينا نظرت للمرفق وجدت جداول كثيرة جدا الافضل ان ترسل لى المرفق الخاص بمشروعكم وتحديد الجداول التى تعانى من مشكلة الترقيم التلقائى بها حتى أقوم بعمل وحدة نمطية واحده لكل الجداول تعيد الترقيم من الرقم 1 عند فتح النموذج ام تحب ان ارفق لكم انا مثال من عندى وتقوم انت بالتطبيق على ما تريده ان اردت ان اقوم انا بعمل مثال فقط امهلنى بعض الوقت حتى اقوم بإعداده لانى لا املك مثال جاهز لذلك وأخبرنى تقريبا بعدد الجداول التى تريد منى انشائها فى هذا المثال
    1 point
  20. والله انت اللى استاذى الغالى وحبيبي اعلم انى احبك فى الله حبا خالصا لوجهه تعالى بارك الله فيك انظر المثال المرفق انظر الى بعض الجداول لدى نفس المشكله فى مشروع اخر علما ان هذه الجداول متغيره هل من سيبل الى ذلك مشروع العاملين.rar
    1 point
  21. اللهم زد عبدك ياسر علما ونورا وسخر له من عبادك من يقوم على حوائجه
    1 point
  22. اخى وحبيبى ومعلمى الجليل استسمح حضرتك مثال وان شاء الله بأمر الله أقدر احل المشكله تقريبا بس ابعت مرفق لأقوم بحل مشكلتك بأمر الله
    1 point
  23. اخى ياسر استغلال جيد للتعامل مع المعادلات بارك الله فيك ومشكورا على الهديه الرائعه تقبل تحياتى
    1 point
  24. بعد أذن استاذى الكبير ياسر خليل أخى الحبيب ابراهيم ابوليله جرب المرفق ان شاء الله ينال اعجابك دا من الهدايا اللى مش بطلعها غير للغاليين فقط وانت منهم تقبل تحياتى تسلسل.zip
    1 point
  25. بوركت أخي الحبيب أبو سليمان بس كدا الأستاذ رجب يزعل ..بلشاي أبو الكرم والشهامة والنبل (بس فيها عيب صغير مش هقول عليه)
    1 point
  26. جرب الكود بهذا الشكل : Sub GetDataNew() Dim SummarySheet As Worksheet Dim FolderPath As String Dim NRow As Long Dim FileName As String Dim WorkBk As Workbook Dim LR As Long, X, I, Y 'اسم ورقة العمل المراد نسخ البيانات إليها Set SummarySheet = ThisWorkbook.Worksheets("ورقة1") '================================================= ''يمكن تغيير المسار من هذا السطر ''FolderPath = ThisWorkbook.Path & "\" '' السطر السابق إذا كانت الملفات المراد جلب البيانات منها مع المصنف الرئيسي في نفس المجلد ''مسار المجلد الذي سيحوي المصنفات التي سيتم جلب البيانات منها FolderPath = ThisWorkbook.Path & "\بيانات الفصول\" '================================================= NRow = 2 'أول صف لنسخ البيانات فيه في المصنف الحالي 'مسح النطاق الذي ستظهر فيه النتائج Range("B2:C1000").ClearContents FileName = Dir(FolderPath & "*.xl*") Application.ScreenUpdating = False Do While FileName <> "" And FileName <> ThisWorkbook.Name For I = 2 To 21 'الصفوف من الصف الثاني إلى الصف الثاني والعشرون X = ExecuteExcel4Macro("len('" & FolderPath & "[" & FileName & "]ورقة1'!R" & I & "C2)") If Not IsError(X) Then If X > 0 Then 'نسخ العمود الثاني SummarySheet.Range("B" & NRow).Value = ExecuteExcel4Macro("'" & FolderPath & "[" & FileName & "]ورقة1'!R" & I & "C2") 'نسخ العمود الرابع SummarySheet.Range("C" & NRow).Value = ExecuteExcel4Macro("'" & FolderPath & "[" & FileName & "]ورقة1'!R" & I & "C4") NRow = NRow + 1 End If End If Next FileName = Dir() Loop Range("A1").Select Application.ScreenUpdating = True End Sub
    1 point
  27. الاحبة كثر الذين خابو خلال الفترة ا لماضية فارجو من الله ان يكون الجميع بخير وصحة وسلامة ........... وكذلك اختنا الفاضله ام عبدالله
    1 point
  28. أخي الحبيب الغاائب الحاضر ..جاري الغالي .. وأستاذي الكبير رجب بيه جاويش مفتقدين تواجدك بيننا .. لما كل هذه الغيبة الطويلة ..! المهم متهربش مني أنا عازم نفسي عندك لما أنزل البلد ... تقبل تحياتي
    1 point
  29. بعد اذن أخى الحبيب ياسر خليل تفضل أخى جرب الكود التالى Sub ragab() Dim sh As String Application.ScreenUpdating = False On Error Resume Next '====================================================== For ii = 1 To Sheets.Count If Sheets(ii).Name <> "ورقة1" Then Sheets(ii).Range("A2:H1000").ClearContents End If Next '====================================================== For i = 2 To Cells(10000, "H").End(xlUp).Row sh = Cells(i, "H").Value T = Sheets(sh).Cells(10000, 2).End(xlUp).Row + 1 Range(Cells(i, "B"), Cells(i, "H")).Copy Sheets(sh).Range("B" & T).PasteSpecial xlPasteValues Sheets(sh).Range("A" & T) = T - 1 Application.CutCopyMode = False Next i '====================================================== Application.ScreenUpdating = True MsgBox "تم الترحيل بنجاح" End Sub malade.rar
    1 point
  30. الأخ الحبيب محمد أبو نازل (أنا كمان نازل .. بس نازل أجازة) لم أرى أية أصفار لدي في الخلايا المذكورة .. عموما حدد أي ورقة بالضبط ..أنا ألقيت نظرة على كل الأوراق ومفيش اللي إنت بتقوله ده يا ريت لما تظر مشكلة معاك تكون أكثر تحديدا أخي محمد حتى نصل بسرعة لحل أي مشكلة بإذن الله حدد أي ورقة عمل تقصد وحدد الخلايا التي بها مشكلة هل جربت إدخال قيم في العمود اللي بتظهر فيه أصفار .. وظهر المجموع في الآخر صفر مش فااااااااااهم المشكلة
    1 point
  31. أخي الفاضل مش عارف ايه ناازل تفضل المرفق التالي .. لاحظ أن أسماء أوراق العمل لا يجوز أن يكون فيها هذه العلامة / ولذلك استبدلتها بـ - بالنسبة للترحيل سيكون دفعة واحدة من كل أوراق العمل التي تم عملها فقط حسب العمود الثالث في ورقة العمل Data بالنسبة للورقة Temp هي تعتبر نموذج للمطلوب ، قم بإظهارها عن طريق كليك يمين على أسماء أوراق العمل ثم Unhide ثم حدد الورقة المسماة Temp ثم أظهرها ، ولكن يجب الحذر وعدم إضافة صفوف أخرى لأن الخلايا بها مرتبطة بالكود ... فقط يمكنك التنسيق في الخلايا من حيث الخط وخلافه وكذلك المعادلات كما تحب .. ولكن يجب الحيطة والحذر .. تفضل المرفق وجربه وشوف (بس يا ريت يكون النهاردة لأني مش هكون متواجد في المنتدى الفترة القادمة لمدة 10 أيام إن شاء الله) تقبل تحياتي Orders Follow.rar
    1 point
  32. استاذ / محمد لطفي استاذ / محمد لطفي استاذ / محمد لطفي استاذ / محمد لطفي ربنا يبارك فيك ، ويجازيك كل خير .. مشكور على مرورك العطر
    1 point
  33. الحمدلله ................. يغلق ...........
    1 point
  34. تم دمج الموضوعين اخي محمود ... الاستاذ رضوان سبق ان قدم اعتذار لحصول ظرف طارى http://www.officena.net/ib/index.php?showtopic=58516
    1 point
  35. يسعد الله صباحكم ويجعلكم من المقبولين في الدنيا والآخرة نعم نعم.. انا اخطأت ولكن الصورة اوضحت والأن تم الأمر بنجاح هذا ما عهدناه منكم كتب الله اجركم اجمعين
    1 point
  36. Docmd.RunSQL"strSql = "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _ "FROM TPstoudnt " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=6));"" الاخطاء : "strSql = هذه جملة زائدة تستخدم في مكان آخر " آخر علامة تنصيص مزدوجة هي ايضا زائدة اذا استبعدنا الزوائد سيصبح الكود هكذا : Docmd.RunSQL "DELETE TPstoudnt.*, TPstoudnt.alsaf " & vbCrLf & _ "FROM TPstoudnt " & vbCrLf & _ "WHERE (((TPstoudnt.alsaf)=6))" ويمكن اضافة اكثر من جملة برمجية وتكون مرتبة حسب الحدث كما ذكر اخونا طالب العلم اما السطر الخاص بمنع التحذيرات فيكتفى بواحد اول الجمل مهما كان عددها ولسطر الآخر في آخرها
    1 point
  37. السلام عليكم أخي العزيز ورحمة الله وبركلته أولا ضع في حدث عند التحميل للنموذج OnLoad الكود التالي: Me.KeyPreview = True ثانيا ضع في الحدث المفتاح للأسفل KeyDown الكود التالي : If (Shift And acCTRLMask) > 0 And KeyCode = 80 Then KeyCode = 0 End If أتمنى لك التوفيق
    1 point
  38. السلام عليكم ورحمة الله جزاك الله خير
    1 point
  39. هل اطلعت على المرفق الأخير .. فيه إجابة على بعض ملاحظاتك ... شوف وجرب وأنا معاك وربنا ييسر الأمور تقبل تحياتي
    1 point
  40. الاخ لن ترقع سوريا ولن ترقع الامة العربية ابدا اليك الشرح والى الاخوة الزملاء طريقة اضافة مقطع صوتي للشرائح في عروض البوربوينت السلام عليكم ورحمة الله واسعد الله اوقاتكم جميعا بكل خير وسعادة ولنفرض ان لدينا ملف جاهز ولاينقصه الا اضافة صوت وقد يرغب البعض بان يكون الصوت او المقطع الصوتي متواصل لجميع الشرائح وبصوت واحد فقط كان نقول انشودة او اغنية واحدة تستمر مع استمرارية العرض من اول شريحة الى اخر شريحة .. لذا نحاول اولا ان يتم موازنة طول الانشودة مع طول العرض والا فان الانشودة ستعيد تشغيلها تلقائيا في ما لو كانت هناك شرائح في العرض لم تنتهي بعد .. اذهب الى اداراج ثم اذهب الى رمز الصوت واختر ادراج من ملف ثم اختر ملف الصوت المراد تضمينه من المقاطع الصوتية المتوفرة في الكمبيوتر وبعد الاضافة ستظهر لديك رسالة تفيدك هل تريد التشغيل للمقطع الصوتي تلقائيا ام انك انت باختيارك ولنفرض مثلا بالضغط على الماوس فيعمل المقطع الصوتي ومن الافضل جعله تلقائي بعد اضافة الصوت بعد ان يظهر لك رمز الاصوت او ايقونة الصوت ضمن الشريحة دعونا الان نقوم باعداد المقطع للعمل بشكل متواصل او اعادة تشغيلها تلقائيا في حالة انتهائه وعدم انتهاء العرض ولنفعل ذلك قم اولا بالضغط على ايقونة الصوت مرتين بشكل سريع فتظهر لنا ضمن القائمة العلوية خيارات ونضع علامة الصح اولا في خيار تنفيذ حلقة مستمرة حتى الايقاف .. ونختار كذلك اخفاء اثناء العرض لنخفي ايقونة الصوت بعد ذلك نفعل لاعداد العرض وامكانية استمراريته ام لا A – اختر اولا من القائمة العلوية حركات B – ثم حركة مخصصة C – ثم اضغط على السهم بجوار المقطع الصوتي فتخرج قائمة D – اختر خيارات التأثير بعد ذلك تظهر لنا صورة ومنها نوضح كيفية استمرارية المقطع الصوتي وتوقفه وحتى اضمن دوام تشغيله فقد اخترت بعد الشريحة 12 يتم ايقافه وهكذا يكون عرضك فيه مقطع صوتي ومتواصل ان احببت ارسل ملف … واتمنى ان الشرح يكون بسيط وسهل
    1 point
  41. اتفضل المرفق الجديد يحتوى تنسيق 2000 & 2002-2003 & 2007-2013 الترقيم التقائى-officena.rar
    1 point
  42. السلام عليكم ورحمة الله تعالى وبركاته اخى الفاضل الاستاذ ahlamy90 اعتذر جدا جدا جدا والله لا أجد من الكلمات ما تعبر عن شديد اسفى تأخرت فى الرد على حضرتك بسبب ظروف عملى لانى مشغول جدا جدا هذه الايام وحتى منتصف الشهر ولكن اخى الحبيب تم الانتهاء من اعداد المثال لحضرتك وركز معى فى الاتى المثال يحتوى على عدد (2) وحدة نمطية اى خدمه *_^ مش واحدة بس زى ما حضرتك كنت عاوز ـــــــــــــــالوحدة الاولى ــــــــــــــــــ تقوم باعادة ترتيب او تصفير الترقيم التلقائى بمجرد فتح البرنامج بعد غلاقه المميزات ــــــــــــــــ - تقوم بتصفير الترقيم التلقائى ككل لو تم مسح كل السجلات - تقوم بإعادة ترتيب الترقيم التلقائى لو تم مسح بعض السجلات فقط وذلك دون اى تدخل من المستخدم - الاهم من ذلك أنها تتعامل مع الحقل الخاص بالترقيم التلقائى فى الجدول وهذا ما يميز الوحدة الاولى -تخرج التقارير من خلال الجدول بالترقيم السليم بعد اعادة ترتيبه ان اردت الترقيم من واقع الجدول يظهر فى التقرير العيب ـــــــــ لا يتم تنفيذ الترتيب او التصفير الا بعد اغلاق البرنامج واعادة فتحه ـــــــــــــــــــــــــــالوحدة النمطية الثانيةـــــــــــــــــــــــــــــــ الميزة الوحيدة ترى اعادة الترتيب او التصفير بمجرد اعادة تحميل النموذج فقط دون اغلاق البرنامج امممممم العيب ــــــــ غير مرتبطة بالترقيم الاصلى بجدول قاعدة البيانات لانها ترقيم تلقائى تخيلى فقط تراه بالنموذج دون الجدول مصدر البيانات الذى اعتمد النموذج عليه فى جلب ومعالجة البيانات والعمليات تقبل تحياتى اخى الحبيب بكل الحب والتقدير officena.rar
    1 point
  43. السلام عليكم إخواني الكرام بعد عناء بحث طويل أقدم لكم هذا العمل المتواضع الملف به أيام الأسبوع بدءاً من الأحد إلى السبت ، وف النطاق A2:A13 ستجد شهور السنة بدءاً من يناير إلى ديسمبر وفي الخلية A1 ما عليك إلا أن تكتب السنة وستقوم المعادلة المرفقة بالملف بحساب آخر يوم من أيام الشهر لأي يوم من أيام الأسبوع مثال : إذا كنت ترغب في معرفة آخر خميس في شهر ديسمبر لسنة 2020 مثلا ما عليك إلا أن تكتب 2020 في الخلية A1 ثم انظر إلى العمود F الذي يخص يوم الخميس وانظر إلى الصف 13 ستجد بغيتك أرجو أن ينال الملف رضاكم .. هذا وبالله التوفيق Identify Last Day Of Any Month.rar
    1 point
  44. جزاكم الله كل خير ..الملف رائع وقد عملت عليه خلال عام 2014 الملف تحفه رائعه تساعد المحاسب ف ي اداء عمله بكل سهوله و يسر
    1 point
  45. أخى وأستاذى الكبير / بن علية السلام عليكم ورحمة الله وبركاتة ،،،،، أخى الكريم لقد بحثت عن الدالة ABS على النت ووجدت هذا الفيديو المبسط لشرحها أرفعه هنا لإفادة الجميع وهذا لينك لفيديو به صوت وأعتقد أن الشرح به أفضل وقد حاولت رفعه هنا لكن حجمة حوالى 1.50 ميجا وبالطبع الفضل يعود لله ثم لك بالطبع فى التعرف على هذة الداله. زادك الله من العلم المزيد والمزيد لتنفع به نفسك وكل السائلين. خالص شكرى وتقديرى أخوك عيد مصطفى شرح دوال الاكسيل الدالة ABS - مدونة المهندس محمد أسامة.rar
    1 point
×
×
  • اضف...

Important Information