بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 01/08/15 in all areas
-
الاخ الصقر الجريج عمــــــــلاق البرمجة يا أيــها الصقر* * * أنت المعــلم والأســتــــــــاذ والأمــل يا صــــانع المــجد يا روحًــــا مطــهَّرةً * * * لكَ التحيـــات والإكبـــار والقُبَل2 points
-
السلام عليكم ورحمة الله وبركاته مقدمه هامه عن الصيغ نتعلم في هذه المقدمة كيفية ادخال الصيغة العوامل المختلفة في الصيغ المراجع النسبية والمطلقة الاقواس المختلفه ملاحظة تم عمل هذا الموضوع بناء على طلب احد الاخوه الاعضاء http://www.officena.net/ib/index.php?showtopic=58104#entry370104 لاتبخلو علينا بمقتراحاتكم وارائكم حتى نصل الى الافضل رجاء لاتنسونا بصالح دعاؤكم مكتبة دوال ومعادلات.rar1 point
-
بناءا على طلب العضو الفاضل أ. n_tarek من الأردن الحبيبة بعمل فورم بسيط لرصد درجات الطلاب مع امكانية البحث والتعديل والحذف وكذلك ترحيل العلامات للطباعة حسب الصف المحدد .. تم عمل هذا النموذج واستأذنته في عمل موضوع جديد ووضع الفورم به لعله يفيد أحد الأعضاء وتفضل مشكورا بالموافقة ... مرفق الملف ملحوظة: هناك شيتات أخرى مخفية وأكواد كثيرة خاصة بالعضو الفاضل ولم أقم بحذفها لربما هو في حاجة إليها تحياتي Entry.rar1 point
-
السلام عليكم ورحمة الله تعالى وبركاته أقدم لكم هذه الهدية البسيطة والمتواضعه وهي عبارة عن فورم لمعرفة رموز الالوان RGB color codes chart صورة الفورم وفي الأخير اتمنى هذا العمل ان ينال إعجابكم في إنتظار أرائكم وإقتراحاتكم تقبلو خالص تحياتي RGB color.rar1 point
-
1 point
-
1 point
-
1 point
-
كود مسح أى خلايا محددة بها أرقام Sub SmartDel() Application.ScreenUpdating = False Dim selRange As Range Set selRange = Intersect(Selection, ActiveSheet.UsedRange) If selRange Is Nothing Then GoTo exit_SmartDel End If For Each myRange In selRange If IsNumeric(myRange.Formula) = True Then If ActiveSheet.ProtectContents = False Then myRange.MergeArea.ClearContents Else If myRange.Locked = False Then myRange.MergeArea.ClearContents End If End If End If Next myRange exit_SmartDel: Application.ScreenUpdating = True End Sub1 point
-
كود عند تفعيل الماكرو يقوم بإضافة فى كل تفعيل شيت جديد Private Sub GenerateNewWorksheet() Dim ActSheet As Worksheet Dim NewSheet As Worksheet ' Prevents screen refreshing. Application.ScreenUpdating = False Set ActSheet = ActiveSheet Set NewSheet = ThisWorkbook.Sheets().Add() NewSheet.Move After:=Sheets(ThisWorkbook.Sheets().Count) ActSheet.Select ' Enables screen refreshing. Application.ScreenUpdating = True End Sub1 point
-
كود تحويل صيغ الإكسيل إلى المطلقة أو النسبية Sub MakeAbsoluteorRelative() 'Written by OzGrid Business Applications 'www.ozgrid.com Dim RdoRange As Range Dim i As Integer Dim Reply As String 'Ask whether Relative or Absolute Reply = InputBox("Change formulas to?" & Chr(13) & Chr(13) _ & "Relative row/Absolute column = 1" & Chr(13) _ & "Absolute row/Relative column = 2" & Chr(13) _ & "Absolute all = 3" & Chr(13) _ & "Relative all = 4", "OzGrid Business Applications") 'They cancelled If Reply = "" Then Exit Sub On Error Resume Next 'Set Range variable to formula cells only Set RdoRange = Selection.SpecialCells(Type:=xlFormulas) 'determine the change type Select Case Reply Case 1 'Relative row/Absolute column For i = 1 To RdoRange.Areas.Count RdoRange.Areas(i).Formula = _ Application.ConvertFormula _ (Formula:=RdoRange.Areas(i).Formula, _ FromReferenceStyle:=xlA1, _ ToReferenceStyle:=xlA1, ToAbsolute:=xlRelRowAbsColumn) Next i Case 2 'Absolute row/Relative column For i = 1 To RdoRange.Areas.Count RdoRange.Areas(i).Formula = _ Application.ConvertFormula _ (Formula:=RdoRange.Areas(i).Formula, _ FromReferenceStyle:=xlA1, _ ToReferenceStyle:=xlA1, ToAbsolute:=xlAbsRowRelColumn) Next i Case 3 'Absolute all For i = 1 To RdoRange.Areas.Count RdoRange.Areas(i).Formula = _ Application.ConvertFormula _ (Formula:=RdoRange.Areas(i).Formula, _ FromReferenceStyle:=xlA1, _ ToReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute) Next i Case 4 'Relative all For i = 1 To RdoRange.Areas.Count RdoRange.Areas(i).Formula = _ Application.ConvertFormula _ (Formula:=RdoRange.Areas(i).Formula, _ FromReferenceStyle:=xlA1, _ ToReferenceStyle:=xlA1, ToAbsolute:=xlRelative) Next i Case Else 'Typo MsgBox "Change type not recognised!", vbCritical, _ "OzGrid Business Applications" End Select 'Clear memory Set RdoRange = Nothing End Sub1 point
-
1 point
-
1 point
-
الله اكبر الله اكبر عليك يا اخ ياسر متالق دائما ما شاء الله تبارك الله وسال الله ان يفتح لك باب رزقه ورحمته1 point
-
اترك الرصيد فى الاستعلام كما هو واحذف السطر الأخير من الكود فى الفورم1 point
-
هل تريدها بدون تكرار أخى المرفق السابق التى تم رفعة تم إيجاد الأسماء التى أمامها علامة "X" بدون تكرار وهذا هو طلبك وفقا للمرفق الأخير ولو كنت حضرتك أرفقت هذا الطلب منذ البداية بهذه الشروط ، كان الحل أصبح أسرع دون الدخول فى كل هذه المناقشات تقبل تحياتى استخراج أوجلب البيانات المميزة بشرط .rar1 point
-
1 point
-
1 point
-
ما الخلل الذي يظهر معك أستاذي أ.ياسر .. حيث أنه يعمل عندي بشكل جيد جدا .. عامة مرفق مرة أخري بعد تعديل اسم الورقة للغة الإنجليزية حيث أننى لا أحبذ أسماء الأوراق بالعربي .. كما يجب أن تكون العلامة Capital Letter هكذا X جرب أستاذي وأخبرنى تحياتي استخراج الاسماء المميزة .rar1 point
-
أخي الفاضل جرب الملف التالي Combinations Scenario For Values Summation.rar1 point
-
أخي الفاضل تفضل المرفق التالي .. Combinations Scenario For Values Summation.rar1 point
-
1 point
-
السلام عليكم ورحمة الله تم التعديل على كود الدالة VLOOK2ALL -حسب ما فهمت من طلبك- بإضافة وسيط جديد (الثالث في الترتيب) سميته "عمود_البحث" وهو العمود الذي من خلاله تتم عملية البحث... أتمنى أن يكون هذا المطلوب ويفي هذا التعديل بالغرض المنشود... بن علية الملف المرفق : دالة Vlook2all.rar1 point
-
1 point
-
1 point
-
السلام عليكم ورحمة الله الصقر الحمد الله علي شفاءك من الجرح. امثله قمة البساطة وشرح اجمل جزاك الله خير1 point
-
الاخوة الكرام بالمنتدى اليوم أن شاء الله سنكمل شرح دروس الترحيل كيفية عمل سريل تلقائى لسند لعمل سريل تلقائى يتم فى خطوتين الخطوة الاولى : هى ادراج المعادله التاليه فى الخلية C1 كما هو موضح بالصورة المرفقه =MAX(حركة الخزينة!B5:B100000)+1 المعادله دى هى معادله Max ايجاد اكبر قيمة فى العمود B بشيت حركة الخزينة 1 +( النطاق ثم ! كتابة اسم ورقة العمل المراد ايجاد اكبر قيمة فى العمود بداخلها ) max = سنلاحظ بعد كتابة اسم الورقه متبوعه ب علامه التعجب ! لمعرفة المزيد عن داله Max يرجى مراجعه الرابط التالى http://www.officena.net/ib/index.php?showtopic=58127#entry370483 أذا كان الاوفيس 2010 او 2013م سنستخدم هذا المعادله =MAX('حركة الخزينة'!B5:B100000)+1 هى نفس المعادله السابقه ولكن الزياده هنا هى هذه العلامه ( ' ) قبل اسم الورقه وبعدها ( وهذه العلامه تكتب بجعل اللغه انجلش ثم الضغط على حرف ط ) بصراحه ايه فرق صيغه المعادله من 2007 الى 2010 او 2013 صراحه مش عارف لو فى احد من الخبراء يفسرو لنا هذا نكون شاكرين نرجع للمثال بتاعنا طبعا الفايل المرفق للشرح فى اول مشاركة وهو خزينة تم تصميمه على 2013م لذالك سنستخدم المعادله الثانية فى الخلية c1 كما هو بالصورة النتيجة كما هى بالصورة عاليه 1 ( وبالطبع هى نتيجة صحيحة لان شيت حركة الخزينة العمود B لم يسجل اى سند لذالك النتيجة 1) الخطوة الثانية : جعل الخلية G7 =C1 كما هو مبين بالكود التالى نقوم بادراج مودويل جديد ولصق هذا الكود فيه Sub جديد() [G7] = [c1] [d8] = "" [d10] = "" [d11] = "" End Sub ثم الرجوع الى زر ايصال جديد الموجود بالسند وتعيين الماكرو علية كليك يمين على الزر ستظهر قائمة اختار منها تعيين الماكرو سيظهر لك شاشة اختار منها جديد وقم بالضغط على الزر وشوف النتيجة ستجد 1 لو سجلت سند ثم قمت بعملية الترحيل وضغط زر جديد ستجد رقم الايصال اصبح 2 وتم مسح البيانات بخانه التاريخ وخانه المستلم والمبلغ ولجعل شغلك اكثر احترافيه غير لون خلفيه الخلية C1 ولون الخط بها على نفس اللون حتى لا يظهر ما بداخل الخلية مرفق ملف للتجربة العملية ********* ملحوظه انا بستخدم بالشرح اسهل الطرق وايسرها ارجوا من الله ان اكون وفقت بالشرح ويستفيد منه الجميع تقبلوا منى وافر الاحترام والتقدير خزينة.zip1 point
-
طلبات حضرتك أوامر أستاذى وشكرا جزيلا على الملحوظة وبارك الله فيك {=IFERROR(INDEX($D$5:$D$40, SMALL(IF(("x"=$C$5:$C$40)*(COUNTIF($F$4:F4, $D$5:$D$40)=0), ROW($C$5:$C$40)-MIN(ROW($C$5:$C$40))+1, ""), 1)),"")} والمعادلة أيضا معادلة " صفيف كالسابقة تقبلوا تحياتى أستخراج أسماء بدون تكرار.rar1 point
-
أخى الكريم واستاذى الحبيب سيف الدين حسام يا غالى سلمت على كلماتك الرائعه وانا لا استحق كل هذا فأنا والله مثلك مبتدء وبتعلم بس كل الفكرة انى عايز اوصل للناس اللى انا عارفه زى ما عرفته اوصله تقبل تحياتى وتقديرى لشخصك الكريم1 point
-
1 point
-
أستخدم هذه المعالة وأسحبها لأسفل ستحقق لك المطلوب المعادلة معادلة صفيف أى لابد من الضغط على " ctrl+shift+enter " وليس " enter " لتحقق المطلوب بشكل صحيح {=INDEX($D$5:$D$40, SMALL(IF("x"=$C$5:$C$40, ROW($C$5:$C$40)-MIN(ROW($C$5:$C$40))+1, ""), ROW(A1)))} تقبل تحياتى أستخراج أسماء.rar1 point
-
1 point
-
الباشمهندس طارق والله إنه لشرف لي أن تنسبني لك كصديق ، فأنت أخي وحبيبي ومعلمي وأستاذي وتاج رأسي.. جمع الله بيننا في الفردوس الأعلى من الجنة ، وبارك الله فيك :fff:1 point
-
وطبعا الشكر موصول لأخونا / ياسر ياسر بك يشرفني أنني من أوائل أصدقائك بالمنتدي وأنني تنبأت لك بما سوف تحققه إلي الأمام صديقي الحبيب1 point
-
1 point
-
اخي ابو الاء انا عمري ما ازعل من لانك انسان محترم علي فكره انت الامثله الي بعتهالي كان فعلا فيها الحل ولاخ ابو خليل نقل منها الحل وهو وطبقه عندي بس انا ما كنت عارف اطلع الحل من المرفقات الي بعتها1 point
-
السلام عليكم ورحمة الله تعالى وبركاته كود رائع لتنسيق خصائص الكمبوبوكس وتعبئته بمدى ديناميكي من عمود قابل للزيادة أو النقصان Private Sub UserForm_Initialize() ' متغير خاص ببايانات الكمبوبوكس Dim J As Long 'متغير خاص بأوراق العمل Dim ws As Worksheet ' تحديد ورقة العمل المراد إستدعاء البيانات Set ws = Sheets(1) 'خصائص الكمبوبوكس With Me.ComboBox1 ' خاص بظهور الأعمدة في الكمبوبوكس .ColumnCount = 1 ' عدد الصفوف التي المراد إظهارها .ListRows = 12 'خاص بتنسيق النص(محاذاة لليمين , توسيط , محاذاة لليسار) .TextAlign = fmTextAlignCenter 'تنسيق خصائص الخط في الكمبوبوكس With .Font 'إسم الخط .Name = "Times New Roman" 'حجم الخط .Size = 12 'تغميق الخط .Bold = True End With 'إلى غاية أخر العمود A يساوي الصف الثاني من العمود j متغير For J = 2 To ws.Range("A" & Rows.Count).End(xlUp).Row 'بداية من الصف الثاني إلى غاية أخر بيانات في العمود A كتابة بيانات الموجودةفي العمود .AddItem ws.Range("A" & J) Next J End With End Sub1 point
-
تم التعديل وإضافة نسخ طريقة النسخ بعدإختيار من مجموعة الألوان نذهب الى مربع المعاينة الكبير دبل كليك تظهر لك رسالة تم النسخ بنجاح عند اللصق الكود يظهر على النحو التالي: Hex: # FF3333 RGB (255, 51, 51) الرجاء من المشرفين على هذا القسم دمج هذه المشاركة مع المشاركة الأولى RGB color.rar1 point
-
السلام عليكم اعتذر لك اخي ياسر عن غيابي الفترة الي فاتت هذا كود مميز لتعبئة اليست بوكس أو الكمبو بكس من عمود بدون تكرار Option Explicit Private Sub UserForm_Initialize() Dim i As Integer Dim Valeurs As Variant Dim sDic As Object: Set sDic = CreateObject("Scripting.Dictionary") Me.ListBox1.Clear Me.ComboBox1.Clear With Sheets(1) Valeurs = .Range("A1:A100").Value For i = LBound(Valeurs) To UBound(Valeurs) If Not IsEmpty(Valeurs(i, 1)) Then sDic(Valeurs(i, 1)) = "" Next i End With If IsArray(Valeurs) Then ListBox1.List = sDic.keys: ComboBox1.List = sDic.keys End Sub تحياتي للجميع RABIECHAOUKI.rar1 point
-
هلا و غلا باستاذنا الغالي الصقر .. تشرفت بمروك العطر تحياتي لشخصك الكريم1 point
-
أخى الفاضل وأستاذي الكريم أ.ياسر حينما راجعت الأكواد بالمكتبة وجدت ان إخواننا المبتدئين ومن يريدون وضع قدمهم على أول سلم لتعلم ال VBA والأكواد ليس لهم نصيب كبير فمعظم الاكواد ما شاء الله دسمة ولهذا قمت بإعداد هذا الملف المبسط جدا لإخواننا المبتدئين به بعض الأكواد البسيطة للمهام الأساسية التى يقوم بها أى مستخدم للإكسل .. اتمنى منك أستاذي الفاضل مراجعتها واضافتها للمكتبة ولك كل الحق في تعديل ما تريد واضافة أو حذف ما تريد بما يحقق الهدف العام خالص تحياتي VBACodes2.rar1 point
-
السلام عليكم بعد إذن أخي وحبيبي / ياسر ممكن عملها بدون اكواد (بالمعادلات) ولكن لابد من تعطيل الخطا المرجعي (Circular) كما بالصورة بداخل الملف المرفق تفضل Test بدون اكواد .rar1 point
-
تمت الإضافة أخي ياسر البنا ..بارك الله فيك على هذه الأكواد الرائعة ربنا يجعله في ميزان حسناتك لقد أصبحت من المؤسسين لهذه المكتبة ، واحتسب الأجر عند الله أن يكون هذا العمل صدقة جارية لك تنفعك بعد مماتك أطال الله عمرك وطرح البركة فيه وجعل أعمالك كلها صالحة ولوجهه خالصة1 point
-
أؤيد هذا الاقتراح بشدة ، وقد اقترحته من قبل يا ريت الأخوة تأخذ الاقتراح محمل الجدية وأعتقد إن المعادلات هتكون أسهل .. المعادلة وشرح مبسط ليها في سطر أو سطرين مشكور أخي مختار على تأكيد الاقتراح1 point
-
تقويم ام القرى غير مدعوم بشكل المطلوب و حتى لو استخدمت التقويم الهجري تبع الـ VBA سيعطي فروقات قد تصل لـ 3 ايام ما استطيع فعله لك هو محاولة الاستفاذة من خلية من خلاياء الاكسل في معرفة القيم الصحيحة لتواريخ تقويم ام القرى و تجد في الملف المرفق مثال. لتحقيق ذلك عملت لك دالة على السريع تحسب لك الفروقات بتقويم ام القرى مع الاخذ بالاعتبار التالي: 1 - لا يمكن استخدام الدالة في اي من خلاياء الاكسل و لكن بالطبع يمكنك استخدامها في كود ال VBA 2 - الدالة تحسب الفرق بالايام (md) و الاشهر (ym) و السنوات (y) و لكن لن تعطي الفرق الكلي بالايام (d) و الفرق الكلي بالاشهر (m).. لم اكتب الكود بعد لهما. 3 - المعيار الذي استخدمته لتقويم مدى صحة الدالة هو الحساب اليدوي ولهذا ارجوا من كل من استخدمها ان يخبرنا اذا كان هناك خطأ. بالتوفيق طرح التاريخ بتقويم ام القرى.zip1 point
-
الحلقة الثانية عشر *************** السلام عليكم ورحمة الله وبركاته ... إخواني الكرام ..ها أنا قد عدت إليكم بعد طول عياب (والعود أحمد .. مش ياسر ولا حسام) نبدأ حلقة جديدة معكم من حلقات افتح الباب ، وهات لي معاك كيلو كباب (عشان لسه العشا مجهزش) نكمل في هذه الحلقة بإذن الله مشوار الدوال الخاصة بالتعامل مع النصوص - * - كنا اتكلمنا عن الدالة LCase الخاصة بتحويل أحرف اللغة الإنجليزية إلى حروف صغيرة ، والدالة UCase الخاصة بتحويل أحرف اللغة الإنجليزية إلى حروف كبيرة .. كلنا يعرف إن كتابة الأحرف باللغة الإنجليزية ليها تعامل خاص ..بمعنى آخر لو بنكتب اسم شخص ، مش مقبول إن يكون كل الحروف كبيرة ولا كل الحروف صغيرة ، إنما بيكون الحرف الأول في كل اسم حرف كبير والحروف المتبقية حروف صغيرة زي كدا Yasser Khalil طيب هل فيه دالة تكفي لهذا الغرض ؟ نعم .. روح لورقة العمل الأول واكتب اسمي (اسمي الأول جرب عليه وبعدين جرب على اسمك .. شايف حسام مش معبرني وبيكتب اسمه هو الأول !!) اكتب في الخلية A1 مثلاً yasser khalil كل الحروف Small أي حروف صغيرة ، وفي الخلية المجاورة B1 اكتب المعادلة التالية : =PROPER(A1) الناتج إن الحرف الأول في اسم Yasser والحرف الأول في اسم Khalil أصبحا كلاهما Capital - والحمد لله - نرجع لمحرر الأكواد .. ما هي الدالة البديلة لهذه الدالة في ورقة العمل ؟ هصدمك وأقولك مفيش .. وبعدين أفوقك من الصدمة وأقولك متقلقش فيه طريقة ..وطريقة ممتازة لاستخدام معظم الدوال وليس كلها في محرر الأكواد .. Sub ProperFunction() Dim strName As String strName = Range("A1").Value Range("B1").Value = Application.WorksheetFunction.Proper(strName) End Sub قمنا بالإعلان عن متغير نصي ، وقيمته هي قيمة الخلية A1 ، وفي السطر التالت .. عايزين قيمة الخلية B1 تساوي قيمة النص الموجود في A1 بس بشكل مختلف ، باستخدام الدالة Proper ، فنضع علامة يساوي (ومننساش اللي على الطرف الأيسر مجهول دائماً .. واللي على يمين علامة يساوي هو القيمة المراد وضعها للمجهول) استخدمنا هنا كلمة Application للإشارة إلى تطبيق الإكسيل .. ممكن الناس اللي مش أد كدا في الإنجليزي أقولها على خدعة بسيطة .. الخدعة إنك متحفظش الكلمة لو صعبة عليك ، اكتب بس أول كام حرف منها وليكن Appl واضغط Ctrl + مسطرة هتلاقي المحرر المحترم كمل لك الكلمة ، أو هتظهر لك قايمة تختار منها الكلمة اللي إنت عايزها .. بعد كلمة Application تم استخدام الخاصية WorksheetFunction وهذه الخاصية كأننا بنقول للمحرر إننا هنستعين بدوال الإكسيل المدمجة ، نستعين بها هنا في محرر الأكواد ، وبعديها نقطة وبعد النقطة وقفة (يعني قوم اقف واقعد تاني ..عشان تستعيد نشاطك) ، بعد النقطة هنكتب الدالة المراد الاستعانة بها ، وهي هنا الدالة Proper اللي فهمناها من شوية.. والدالة ليها بارامتر واحد بيتم استخدامه عن طريق فتح قوس (Shift + 9) ، وبين الأقواس بنكتب النص ، ومننساش إن الدالة بتتعامل مع النصوص !! ومننساش بردو قفلة القوس () ونكتفي بهذ القدر (فيه ناس رفعت ايديها وهللت خلصت الحلقة خلصت الحلقة ..متفرحوش أوي كدا ، إحنا لسه يدوب في بداية الحلقة .. انتهينا بس من الدالة Proper وكيفية استخدامها في محرر الأكواد) .. ****************************************************************************** ننتقل لدالة أخرى لذيذة جداً ومفيدة جداً ، ألا وهو الدالة Trim ودي دالة بسيطة جداً ، وظيفتها إزالة الفراغات الزائدة (بس خلاص .. انتهى الشرح) نروح لورقة العمل أولاً ونطبق الدالة ، اكتب في الخلية A3 مثلاً اسمي ، اضرب بالمسطرة 3 مرات لا خليهم 4 مرات ، واكتب Yasser وبعدين بالمسطرة اضرب 4 مرات وبعدين اكتب Khalil واضرب المسطرة 4 مرات (كفاية ضرب المسطرة اشتكت) .. في الخلية المجاورة B3 اكتب المعادلة بالشكل التالي : =TRIM(A3) هنلاقي الدالة قامت بالواجب وحذفت كل المسافات الزائدة ..وتركت مسافة واحدة بين الكلمتين فقط.. ننتقل لمحرر الأكواد .. نفس الاستخدام تقريباً ونفس الشكل : Sub TrimFunction() Dim strName As String strName = Range("A3").Value Range("B3").Value = Trim(strName) End Sub ننفذ الكود ، نلاقي الناتج في الخلية B3 يصدم (لم تؤدي الدالة عملها كما أدته في ورقة العمل) ، الدالة حذفت المسافات الزائدة في بداية النص وفي نهايته ، أما المسافات الزائدة بين الكلمتين فلم يتم حذفهم (مش عارف دا عيب في محرر الأكواد ، ولا بيل جيتس متعمدها ..عموماً هبقا أسأله في النقطة دي لما يطلبني في الاجتماع القادم يوم 30 فبراير القادم ) نفهم من كدا إن الدالة Trim في محرر الأكواد مختلفة عن الدالة Trim في ورقة العمل ..طيب ما الحل ؟ أشيروا علي إخواني الكرام ، الحل أبسط مما تتخيلوا (اللي فهم الدالة السابقة هيفهم إزاي هنحلها هنا ..) Sub TrimFunction() Dim strName As String strName = Range("A3").Value Range("B3").Value = Application.WorksheetFunction.Trim(strName) End Sub تم حل المشكلة بحمد الله وعونه وتوفيقه .. ****************************************************************************** ننتقل لدالة جديدة ، ألا وهي الدالة Space (المسطرة) ..وظيفة الدالة دي ، إننا نريح المسطرة من كتر الضرب عليها ، حيث أن شكوتها قد وصلت للأمم المتحدة ، فقررت الأمم المتحدة النظر في شكوى المسطرة الضعيفة التي اشتكت من كثرة الضاربين عليها ، وتوصلت الأمم المتحدة لاتفاق مع بيل جيتس بإدراج دالة تحل محل المسطرة في محرر الأكواد (وأغلقت القضية) .. في الخلية A1 اكتب Yasser Khalil وروح للمحرر واكتب الكود التالي : Sub SpaceFunction() Dim strName As String strName = Range("A1").Value Range("B1").Value = Space(4) & strName & Space(4) Range("C1").Value = Len(Range("A1")) & ":" & Len(Range("B1")) End Sub لاحظ إننا استخدمنا الدالة وبين قوسين كتبنا 4 ، والرقم دا عدد المسافات ، واستخدمنا الدالة مرتين ، مرة قبل النص ومرة بعد النص ، وفي كل مرة 4 مرات بالمسطرة ، يعني مجموع المسافات = 8 ، يعني إحنا ريحنا المسطرة من إننا نضربها 8 مرات ، وفي الخلية C1 استخدمنا الدالة Len (واللي ميعرفهاش يترك الحلقة دي ويرجع للحلقة اللي فاتت ..مش ناقصة وجع قلب ، وكتر كلام ع الفاضي) ، عشان نحسب طول النص في الخلية A1 وطول النص في الخلية B1 ، هنلاقي الفرق بينهم 8 (انتهى الحديث عن قضية المسطرة التي تشتكي). *************************************************************************** ننتقل إلى دالة ذات أهمية كبيرة ..الدالة Replace والكل يعرفها جيداً ، وربما الكل يستخدمها كثيراً ، وهي دالة الاستبدال (أي استبدال نص مش عاجبك بنص يعجبك ويدخل دماغك) تقوم الدالة باستبدال النص القديم بآخر جديد ... ناخد مثال يا أستاذ جمال : نفترض إني ادلعت شوية وأنا بكتب اسمي وكتبته في الخلية A1 بهذا الشكل Y a s s e r (من حق التلميذ يدلع ..مش الكبير لأ !!) .. المهم أنا من النوع الكسول ، أنا تركت مسافة بين كل حرف وحرف ، يا ترى هتعب نفسي وأشيل كل مسافة بين كل حرف وحرف (طبعاً مش هيحصل !! ولو حصل يبقا أنا مفيش ورايا شغل وقاعد بلعب) المهم دلوقتي نخلي بالنا ونسأل ايه هو اللي مش عاجبنا (الإجابة المسافة بين كل حرف وحرف) ، طيب ونسأل سؤال تاني (ما هو لازم تمشي بمنطق السؤال والإجابة) نسأل ايه المطلوب ؟ (الإجابة إننا نحذف المسافة أو ممكن نقول الطلب بشكل تاني عشان نقدر نوصل للحل :: المطلوب إننا نستبدل المسافة " " بـ "" (ايه ده ؟ هي دي الإجابة ؟؟ أقولك أيون أيون هي دي الإجابة) .. نشوف المثال يا أستاذ عبد العال .. الأول قبل المثال نشوف البديل ليها في ورقة العمل ، ضع المعادلة التالية في الخلية B1 : =SUBSTITUTE(A1," ","") الدالة تقوم باستبدال النص القديم بالنص الجديد (زي الفل ..نفس الكلام مع الدالة Replace في محرر الأكواد) Sub ReplaceFunction() Dim strName As String strName = Range("A1").Value Range("B1").Value = Replace(strName, " ", "") End Sub البارامتر الأول للدالة عبارة عن النص المراد البحث فيه المراد البحث داخله .. والبارامتر الثاني النص المراد استبداله أي النص القديم .. والبارامتر الثالث النص الجديد (اللي عاجبنا وبيحب أكل الجبنه) .. كدا انتهى الحديث عن الدالة Replace ..! *************************************************************************** الآن مع دالتين جديدتان (أعتذر قديمتان) الدالة Right والدالة Left .. كلنا نعرف استخدام هاتين الدالتين في ورقة العمل .. ناخد مثال في ورقة العمل أولاً لنفهم عمل الدالتين .. في الخلية A1 نكتب الإيميل yakh777@yahoo.com وفي الخلية B1 نكتب المعادلة بالشكل التالي : =RIGHT(A1,9) الناتج هو yahoo.com وهو العدد الذي حددناه في المعادلة .. وتم استخراج النص من ناحية اليمين (اللهم اجعلنا من أهل اليمين .. أنا والأعضاء في المنتدى أجمعين) في الخلية C1 اكتب المعادلة التالية : =LEFT(A1,7) فيكون الناتج النص من ناحية اليسار ، وهو yakh777 ,وحددنا عدد الأحرف 7 أحرف .. لو قمنا بتغيير الإيميل بأي إيميل آخر .. أكيد النتائج ستختلف .. إذاً لابد من حل لتكون المعادلة أكثر مرونة (الحل هو الاعتماد - يا أستاذ عماد - هنا على علامة @ ) .. دعونا نفكر بصوت عالي ..نفكر الأول ونشوف هنعمل ايه ؟؟؟ نبدأ بالدالة Right .. الأول في خلية نكتب المعادلة: =LEN(A1) هنلاقي عدد حروف النص 17 ... تمام !! قول تمام يا أستاذ هشام - ونكتب المعادلة التالية في خلية أخرى (أي خلية) =FIND("@",A1) ودي بنحدد من خلالها موقع علامة @ داخل النص .. هنلاقي الناتج 8 (أي أن موقع هذه العلامة رقم 8 . لو عدينا من الشمال هنلاقي رقمها 8) طيب نجرب نطرح طول النص بالكامل - موقع علامة @ هنلاقي الناتج 9 (تسعى في الخير يا كبير) هو دا المطلوب ... واحد رفع ايده وقالي : مش فاااااهم (هقوله مش هكرر تاني .. إنت خدها قاعدة لو مش هتقدر تفهمها .. لو حبيت تستخرج النص من جهة اليمين ، يبقى تحفظ الشكل ده : طول النص بالكامل - موقع العلامة @) يبقا ممكن نكتب المعادلة التالية في الخلية B1 : =RIGHT(A1,LEN(A1)-FIND("@",A1)) جرب تكتب أحرف زيادة على يمين العلامة أو على يسارها ، وشوف النتائج بنفسك !! (هنلاقي النتائج دايماً صحيحة سواء كتبت أحرف زيادة في اليمين أو في اليسار) .. طيب الدالة Left دي أسهل .. لأننا هنعتمد على موقع علامة @ وبس .. لو موقع علامة @ رقم 8 زي مثالنا ، يبقى المعادلة هتكون بهذا الشكل : =LEFT(A1,FIND("@",A1)) هنلاحظ الناتج فيه علامة @ للتخلص منها (هات أستيكة وامسحها) أو قم بطرح موقع العلامة @ - 1 ليصبح الناتج صحيح .. =LEFT(A1,FIND("@",A1)-1) نسينا شغل الأكواد ، واندمجنا في دوال الإكسيل . أعتذر ، لكن لابد من فهم المعادلة بشكل جيد ، حتى نتمكن من فهم العمل بالأكواد ... نروح للمحرر ::: Sub RightLeftFunction() Dim strEmail As String strEmail = Range("A1").Value Range("B1").Value = Right(strEmail, Len(strEmail) - InStr(strEmail, "@")) Range("C1").Value = Left(strEmail, InStr(strEmail, "@") - 1) End Sub أعتقد الموضوع أصبح واضح وضوح الشمس في نهار ملبد بالغيوم .. نفس الدالة اللي استخدمتها في ورقة العمل أخدتها نسخ ولصقتها في محرر الأكواد .. وبدلت شوية حاجات بسيطة : شلت المرجع A1 ووضعت مكانه المتغير strEmail ، وشلت Find ووضعت مكانها الدالة InStr (بس اللي مركز هياخد باله إن الدالة InStr بتبحث عن كومة القش وتشوف الإبرة -- لكن الدالة Find بتبحث عن الإبرة في كومة القش .. بمعنى آخر النص الفرعي المراد البحث عنه يختلف مكانه بالنسبة للدالة Find في ورقة العمل ، والدالة InStr في محرر الأكواد # انتهى الحديث عن الدالتين Right و Left ) ************************************************************************* ننتقل لآخر دالة (عشان أنا تعبت لكم صراحة ..) الدالة Mid ، وبردو فيه ناس تعرف الدالة كويس جداً من خلال ورقة العمل ... في الخلية A1 اكتب الإيميل yakh777@yahoo.com في محرر الأكواد اكتب الكود التالي : Sub MidFunction() Dim strEmail As String strEmail = Range("A1").Value Range("B1").Value = Mid(strEmail, 1, InStr(strEmail, "@") - 1) End Sub أنا بدأت بالمثال قبل الشرح .. الدالة ليها 3 بارمترات الأول هو النص المراد البحث داخله (كومة القش) ، والبارامتر الثاني هو بداية عملية التنقيب أو البحث وبيكون قيمة رقمية أكيد ، والبارامتر الثالث هو عدد الحروف المراد استخراجها .. في المثال النص هو المتغير strEmail وبداية عملية البحث 1 ، ولاستخراج عدد الحروف ولأنها غير معلومة أو أننا نريد استخراج الجزء الأول من النص قبل علامة @ قمنا باستخدام الدالة InStr لتحديد موقع علامة @ وطرحها من 1 لنحصل على عدد الأحرف على يسار العلامة (أظن مفهومة يا أخ سلومة).. واستخدامها في ورقة العمل مشابه تماماً لمحرر الأكواد .. المعادلة التي يمكن استخدامها في ورقة العمل : =MID(A1,1,FIND("@",A1)-1) الدالة ببساطة تقوم باستخراج النصوص التي ترغب ، ولكن استناداً إلى نصوص أخرى ... بهذا نكون قد انتهينا من دوال التعامل مع النصوص ... أرجو أن تكونوا قد وفقتم في فهم الحلقة على أكمل وجه .. الواجب المطلوب : في الخلية E5 قم بكتابة النص Yasser Khalil ، وفي الخلية المجاورة لها ، قم بعمل الكود اللازم لجعل النص يبدو بهذا الشكل Khalil, Yasser (لتسيهل الحل قم باستخدام دوال التعامل مع النص لاستخراج الاسم الأول ، والاسم الثاني ...مفتاح الحل) وإلى لقاء متجدد مع حلقات افتح الباب .. كان معكم أخوكم أبو البراء من مصمت أوفيسنا دمتم في رعاية الله1 point
-
الحلقة الحادية عشرة ***************** السلام عليكم ورحمة الله وبركاته إخواني الكرام في الصرح العملاق أوفيسنا ، أقدم لكم اليوم موضوع في غاية الأهمية ، ألا وهو التعامل مع السلاسل النصية Strings والدوال الخاصة بالتعامل مع النصوص. اتعرفنا في حلقات سابقة على المتغير String ، ودا بنستخدمه لتخزين النصوص .. أول شيء بنعلن عن اسم المتغير ونحدد نوعه كـ String بالشكل ده : Dim strEmail As String وقلنا إن الأفضل دايماً لما نسمي متغير يكون معبر ، ففي السطر اللي فات أنا نويت والنية لله إني أخزن نص ، والنص ده عبارة عن إيميل ، فسميت المتغير strEmail أول 3 حروف من كلمة String وبعدين كلمة معبرة عن النص Email ، وحددت نوعه إنه نص String. طيب تاني سطر ببدأ أضع قيمة للمتغير اللي أعلنت عنه ، ودا بيكون بطريقة معينة ، إننا نحط اسم المتغير على اليسار ، وبأكد على اليسار وبعديه علامة يساوي ، وبعد علامة يساوي أفتح أقواس تنصيص وأكتب النص اللي عايز أخزنه وأقفل أقواس التنصيص (كل اللي بقوله يا حماده كلام قديم مفيش جديد ..دا في الإنجليزي بيسموه Warm-Up يعني تهيئة للحلقة) strEmail = "yakh777@yahoo.com" طيب هل دايماً لازم نحط نص في قيمة المتغير النصي ولا فيه طريقة تانية ؟ فيه طريقة تانية ..إن يكون النص في خلية معينة وليكن A1 ، ولما نيجي نضع قيمة للمتغير نشير لقيمة الخلية A1 زي كدا : strEmail = Range("A1").Value حط الايميل في الخلية A1 ، وجرب بنفسك .. جرب مرة تكتب النص ، وعن طريق الدالة Msgbox شوف النتيجة ، ومرة تانية جرب السطر الأخير وشوف النتيجة (النتيجة واحدة .. كل السبل تؤدي إلى حلقات افتح الباب) ... خلصنا المراجعة يا مدحت .. نشوف ايه اللي هنقدمه في حلقة النهاردة .. أنا صراحة مش مرتب في أفكاري .. ممكن تقول إني عشوائي جداً ، بس الحمد لله ، بتوفيق الله عزوجل بيخرج الموضوع منظم ومتسألش إزاي ..! أنا همسك دالة دالة من دوال التعامل مع النصوص وهشرحها بالتفصيل ، والله المستعان *-------------------------------------------------* الدالة Len (دالة بسيطة وسهلة وكلنا عارفينها ، وبنستخدمها في ورقة العمل : طبعاً إنتو لما بتقروا الحلقات بيكون فيه ملف إكسيل مفتوح (مش كدا ولا مطنشين) ، عشان نطبق أول بأول .. في الخلية A1 إحنا كتبنا نص ، عايزين نعرف طول النص ده ، فبنستخدم الدالة Len ، مثلاً في الخلية B1 اكتب المعادلة بهذا الشكل : =LEN(A1) واحد هيقولي إنت مش بتشرح VBA إنت بتخدعنا ، الشغل دا إحنا عارفينه !! أنا عارف إنكم عارفينه ، بس عايزين نربط بين الشغل في ورقة العمل والشغل في محرر الأكواد ، عشان تكون الصورة واضحة .. نروح للمحرر .. ونكمل الكود اللي كتبنا منه أول سطرين .. Dim strEmail As String Dim X As Integer strEmail = Range("A1").Value X = Len(strEmail) MsgBox strEmail & " : " & X أظن الكود واضح جداً ، إحنا الحمد لله وصلنا لمرحلة متقدمة نقدر من خلالها نفهم أسطر الكود .. هشرح الجديد بس عشان الناس متحسش بالملل : الجديد يا أستاذ عبد المجيد ، الدالة Len ، ودي وظيفتها إننا بنقدر من خلالها معرفة عدد أحرف النص ، والأحرف مش مقصود بيها الحروف العربية والإنجليزية فقط ، ولكن الرموز أيضاً بيتم حسابها زي علامة @ والنقطة .. لما ننفذ الكود هتطلع رسالة فيها النص الموجود في الخلية A1 وبعدين عدد أحرف النص .. وفصلت بينهم بـ : (Shift + ك) الدالة أسندناها للمتغير X وخلينا نوعه Integer لأن عدد أحرف النص عدد صحيح (ولا يمكن يكون فيه حرف بنشوفه ربع حرف زي . طبعاً لا ... ، الحرف يمثل عدد واحد صحيح) بعد كتابة الدالة وضعنا فتحنا قوس ووضعنا المتغير النصي اللي سميناه strEmail وقفلنا القوس ( ) ، ننفذ الكود هنلاقي النتيجة إن عدد الأحرف 17 (اتأكد بنفسك لو وقتك يسمح) *-------------------------------------------------* ننتقل لدالة تانية : الدالة InStr (شكلها صعبة .. لو عرفت اختصارها هتكون سهلة بإذن الله ..الحرفين In يعني (في) أو (داخل) .. والحروف Str اختصار String .. بمعنى تاني : الدالة دالة بحث عن نص داخل نص (فزورة .. وكلام معقد مش عايزين) .. بالمثال نفهم الكلام المعقد ..(نص فرعي أي جزء من النص داخل سلسلة نصية طويلة) ..بردو الكلام صعب نفترض إننا في الإيميل اللي كتبناه عايزين نعرف علامة @ موقعها فين في النص ، في الحالة دي هنستخدم الدالة InStr عشان نقدر نحدد موقعها (مش هنحتاج لـ GPRS خاصية البحث عن طريق الأقمار الصناعية) .. ناخد مثال عشان منتوهش !! Dim strEmail As String Dim X As Integer strEmail = "yakh777@yahoo.com" X = InStr(strEmail, "@") MsgBox X نفس المثال اللي فات تقريباً .. نركز على الجديد ، ونقول دا شكل الدالة ، تقريباً زي الدالة اللي فاتت بس نركز إن فيه بارامتر تاني ، البارامتر التاني هو عبارة عن النص المراد البحث عنه (يعني ممكن نقول إن النص عبارة عن كومة قش ، والنص الفرعي المراد البحث عنه عبارة عن إبرة ، فنشرح الدالة ببساطة إن الدالة بتقوم بعملية البحث عن إبرة في كومة قش .. !!) الناتج يا جماعة يا متابعين الحلقات بيكون عبارة عن عدد صحيح Integer ، لو جربنا الكود هنلاقي الناتج 8 ، أي أن موقع الإبرة في كومة القش رقم 8 (عد من الشمال يا حاج كمال) ممكن نكتب النص الأصلي مباشرةً بدل من إسناده لمتغير زي كدا : Dim X As Integer X = InStr("yakh777@yahoo.com", "@") MsgBox X بس أنا أفضل دايماً الإعلان عن المتغير ، وإسناد قيمة له ، لسبب إننا لما بنكتب كود ، مش هنشتغل على النص مرة واحدة .. الشغل هيكون أكتر من مرة .. فبالتالي أفضل المثال السابق. وجه الاستفادة من الدالة دي إنك تتأكد من وجود نص معين في النص الأصلي من عدم وجوده ، يعني لو مش موجود هتكون النتيجة ايه ؟ فكروا شوية قبل ما أقول الإجاية : أكيد صفر ، لأن النص الفرعي (الإبرة) مش موجودة ، بالتالي تكون النتيجة صفر..نجرب المثال التالي : Dim strEmail As String Dim X As Integer strEmail = "yakh777@yahoo.com" X = InStr(strEmail, "@") If X = 0 Then MsgBox "الإيميل غير صحيح ؛ لأنه لا يحتوي على العلامة اللي متعودين عليها" Else MsgBox "الإيميل صحيح يا فصيح ؛ لأنه يحتوي على العلامة اللي زهقنا من شكلها" End If نجرب ننفذ الكود مرة ، ونشوف النتيجة ، هنلاقي إن الرسالة التانية هي اللي هتظهر ، لأن قيمة X = 8 ، يعني أكبر من الصفر (ودا دليل على وجود الإبرة في كومة القش) أما لو شيلنا علامة @ وجربنا الكود مرة تانية ، فهتظهر لنا الرسالة الأولى ، لأن قيمة X=0 ، (ودا دليل على عدم وجود النص الفرعي في السلسلة النصية) بكدا يكون انتهى الكلام عن الدالة InStr ... لا لسه متستعجلش .. الدالة فيها بارامترات اختيارية واحد بيكون في الأول وواحد في الآخر ، الشكل العام لها كدا : InStr(start, Text_To_Search, Find, comapre إحنا أخدنا البارامتر التاني اللي هو كومة القش (النص المراد البحث فيه) ، والبارامتر التالت اللي هو الإبرة (النص المراد البحث عنه) .. بالنسبة للبارامتر الأول دا نقطة البداية ، ولما مش بنكتبها بيكون الافتراضي فيها 1 أي بداية عملية البحث والتنقيب عن الإبرة في كومة القش تبدأ من أول حرف بالنص.. البارامتر الأخير بردو اختياري ودا نادر الاستخدام .. ودا له 4 قيم : (vbUseCompareOption) , (vbBinaryCompare) , (vbTextCompare) , (vbDatabaseCompare) ناخد مثال بسيط عشان نفهم جزء واحد من الخيارات للبارامتر الرابع : Dim X As Integer X = InStr("This is my heart", "t") MsgBox X ننفذ الكود نلاقي إن الناتج 16 ، ودا موقع حرف t في النص ، نخلي بالنا إن فيه حرف الـ T في أول النص الأصلي ، طيب نفترض إننا عايزين نعرف موقع أول حرف T سواء كان Capital أي حرف كبير أو Small أي حرف صغير .. في الحالة دي هنستخدم البارامتر الرابع ، وهنستخدم الخيار vbTextCompare (وفي حالة استخدامه بيتم تجاهل حالة الأحرف) Dim X As Integer X = InStr("This is my heart", "t", vbTextCompare) MsgBox X ننفذ الكود نتصدم برسالة خطأ .. الغلطة فين ؟ هي مش غلطة ، إنما قاعدة ، إنك لو هتستخدم البارامتر الرابع اللي هو أصلاً اختياري يبقا إجباري عليك تستخدم البارامتر الأول اللي هو اختياري -- أما لو استخدمت البارامتر الأول اللي هو اختياري ، فممكن عادي تستغنى عن البارامتر الرابع اللي هو اختياري (هدوخكم ورايا .. اقرا من الأول عشان تفهمها ) .. يعني الشكل الصحيح يكون كدا : Dim X As Integer X = InStr(1, "This is my heart", "t", vbTextCompare) MsgBox X الناتج هنا هيكون مختلف ، هيكون رقم 1 ، ودا موقع حرف الـ T في أول النص (هنا تم التغاضي عن حالة الأحرف .. يعني كأننا بنقوله ملكش دعوة الحرف كبير أو صغير .. ابحث عنه) كفاية كدا على الدالة دي (خدت أكتر من وقتها) .. *-------------------------------------------------* ننتقل لدالة ثالثة اسمها StrReverse ودي من اسمها نعرف وظيفتها .. Reverse معناها عكس (مضاد : لا مش مضاد .. بقول عكس) يعني بص لها من الآخر .. يعني مثلا كلمة (أوفيسنا) لما بنصلها من الآخر تبقا (انسيفوأ) كدا أكيد وصلتكم ناخد مثال عملي : Dim strOfficena As String Dim strResult As String strOfficena = "أوفيسنا" strResult = StrReverse(strOfficena) MsgBox strResult نجرب الكود ونشوف النتيجة .. كفاية عليها كدا ، مش مستاهلة نتكلم عنها كتير .. *-------------------------------------------------* هختم الحلقة بالدالة الرابعة (نظراً لأن رقم 4 بيغيظ ناس .. وأنا بصراحة من النوع الغياظ المستفز) .. الدالة التوأم (دالتين هشرحهم مع بعض ) .. بس قبل ما نشرحهم نروح لورقة العمل ونكتب مثلاً yasser في الخلية B3 ، وفي الخلية المجاورة اكتب المعادلة : =UPPER(B3) والخلية B4 اكتب كلمة YASSER كلها حروف كبيرة ، وفي الخلية المجاورة اكتب المعادلة : =LOWER(B4) أظن الأمور واضحة بالنسبة لكم ، نرجع للمحرر ونشوف شكل الدالتين دول في المحرر : الدالة LCase أول حرف منها L اختصار Lower يعني زيها زي الدالة Lower في ورقة العمل ، والتانية UCase وحرف U اختصار لكامة Upper يعني زيها زي الدالة Upper بس خلاص .. مش محتاجة شرح .. ممكن ندعم الكلام بمثال فقط : Dim strName As String strEmail = "yasserkhalil" MsgBox UCase(strEmail) نجرب نفس المثال ، بس نخلي النص كله حروف كبيرة ، ونستخدم الدالة التانية LCase زي كدا : Dim strName As String strEmail = "YASSERKHALIL" MsgBox LCase(strEmail) نأتي إلى الواجب اللي الناس بطلت تعمله : اكتب كود ، وأعلن عن متغير نصي ، على أن يكون النص المراد تخزينه فيه العلامة @ ، وفي رسالة أظهر النص المخزن في سطر ، وعدد الأحرف للنص في سطر ، موقع العلامة @ في سطر ، وقم بعكس النص في سطر ، وقم بتحويل حروف النص إلى أحرف كبيرة في سطر ، وتحويل حروف النص إلى أحرف صغيرة في نص .. وكفاية كدا عشان متتعبوش ، أنا يهمني راحتكم. كان معكم أخوكم أبو البراء من منتدى أوفيسنا إلى لقاء متجدد بإذن الله .. دمتم في رعاية الله (خدوا بقا شوية ورد لأحسن أخونا ابن مصر شكله ناوي يخلص على الورد اللي في المنتدى :fff: :fff: .. كفاية 4 وردات) والسلام عليكم ورحمة الله وبركاته1 point
-
يا عم حسام إنت مخليني مش عارف أكتب الحلقة .. كل ما آجي أكتب أحس إن اللي كتبته مش هييجي حاجة جنب اللي كتبته فامسح واكتب من الأول ... شكلي هلغي الحلقة دي وأخلي موضوعك هو الحلقة اللي عليها الدور وخلاص ..1 point
-
اخى حسام موضوع جميل سر على بركه الله -------------------- انا شخصيا بحب المواضيع المستقله بمعنى ان يتم فتح موضوع كامل عن جزئيه معينه كما فعلت انت الان --------------------------------------------- اوجه الدعوه لكل الاعضاء للمشاركه بكل المعلومات المتاحه لديهم ------------ تقبلو تحياتى1 point
-
لمسة بسيطة على المثال لوضع الفاصلة العشرية وتلافي الخطأ الحاصل . أمل أن يحضى بالرضى والقبول db11.rar1 point
-
ان كنت أنا المقصود بهذا الاطراء فشكرا جزيلا وهذا كله بفضل الله1 point