‏إظهار الرسائل ذات التسميات Excel VBA. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات Excel VBA. إظهار كافة الرسائل

الخميس، 3 أكتوبر 2019

1:36 م

اكسل : البحث عن البيانات فى شيت الاكسل Excel VBA: Search Data form Excel Sheet

بسم الله الرحمن الرحيم 

اهلا بكم متابعى موقع ومدونة عالم الاوفيس

درس جديد وشرح جديد من شروحات excel vba وكودج جديد من مكتبة اكواد الاكسل 

نتعلم اليوم كيفية البحث عن البيانات من خلال شيت الاكسل وليس من خلال الفورم

كيف ذلك 

مثال بسيط لدينا قاعدة بيانات لمجموعة من الاصناف ونريد عمل بحث عليها بالكود 


ولتكن شاشة البحث كما بالشكل اعلاة 

كيف نكتب كود البحث الخاص بنا ندخل على تبويب المطور فيجوال بيسك ونعما ادراج لمدويول جديد
sub saerch data
فى البداية سوف نعرف متغيرين
المتغير الاول last row
dim lras long
dim count as integr
وبحدد قيمة المتغير الاول عندى
lr=sheet("item").cells(rows.count,1).end(xlup).row
احنا كدة حددنا قيمة المتغير last row علشان يجيب لنا اخر صف فية بيانات
وهنحدد قيمة المتغير count
count=0
وبعد كدة هنعمل حلقة تكرارية for
For x = 2 To 
Dim lr As Long
Dim count As Integer
Dim x
lr = Sheets("item").Cells(Rows.count, 1).End(xlUp).Row
count = 0
For x = 2 To lr
If Sheets("item").Cells(x, 1) = Sheet1.Range("b3") Then
Sheet1.Range("a11") = Sheets("item").Cells(x, 1)
Sheet1.Range("b11") = Sheets("item").Cells(x, 2)
Sheet1.Range("c11") = Sheets("item").Cells(x, 3)
count = count + 1
End If
Next x
If count = 0 Then
MsgBox "تنبية", vbOKOnly, "عفوا هذا الكود غير موجود"
Sheet1.Range("a11:c11").ClearContents
End If

وبهذا نكون قد انتهينا من الكود
لاتبخل علينا بمشاركة الدرس على وسائل التواصل الاجتماعى 

الثلاثاء، 1 أكتوبر 2019

4:18 م

اكسل : كيفية عمل باسورد لتنفيذ الماكرو How To Make Password For Excel Macro VBA

بسم الله الرحمن الرحيم


اهلا بكم متابعى موقع ومدونة عالم الاوفيس

سؤال ورد الينا من احد الاصدقاء عن  كيفية عمل باسورد لزر تنفيذ الماكر و ؟

الاجابة بسيطة جد ان شاء الله 

لنفرض ان حضرتك تملك ملف معين وعندك مجموعة من المستخدمين يعملون على هذا الملف وتريد ان تحفظ الماكرو الخاص بك او الاكواد من العبث كيف لى ان اصنع باسورد على زر معين 

الاجابة من خلال الكود التالى 


Sub show_worksheet()
Dim password As String, x As Long
password = "1234"
If Application.InputBox("inter password", "login") <> password Then
MsgBox "worng password", vbInformation, "error"

Exit Sub
End If

Sheet2.Activate
End Sub

ولمتابعة اكثر عن الكود يرجى مشاهدة شرح الفيديو

الاثنين، 30 سبتمبر 2019

1:14 م

اكسل : شرح جميع ادوات Excel VBA: Active X contorle

بسم الله الرحمن الرحيم 
اهلا بحضراتك متابعى موقع عالم الاوفيس
نقوم اليوم بشرح سلسلة كاملة من ادوات Active X contorle

والتى تحتوى على مجموعة من الادوات المهمة التى نستخدمها مثل :

1- Textbox
2-Listbox
3-Combobox
4- Check box
5- Option button
6- Spin button
7- Label
8- Image
9-Command button

Text Box


التكست بوكس (مربع النص ) هو حقل فارغ يمكن للمستخدم القيام بملء هذا التكست بوكس وهو ايضا يستخدم فى ادخال البيانات 
كيف ندرج  Textbox فى ورقة العمل لخاصة بنا
1- فى علامة تبويب المطور  Developer tab ونضغط على ادراج Insert 
2- من مربع  Active X contorle نختار ادراج مربع نص Text Box


3- نقوم برسم التكست بوكس على ورقة العمل ومن ثم نقوم بظبط خصائص التكست بوكس من قائمة الخصائص

List Box


الليست بوكس هى قائمة يقوم المستخدم باختيار اى عنصر من عناصر هذة القائمة
للادراج ليست بوكس نتبع الاتى

1- فى علامة تبويب المطور  Developer tab ونضغط على ادراج Insert 

2- من مربع  Active X contorle نختار ادراج Listbox

3- نقوم برسم الاداة على ورقة العمل
 وهنا عندنا ملاحظة: يمكنك  ايضا تغيير اسم عنصر التحكم بالنقر بزر الماوس الأيمن على عنصر التحكم (تأكد من تحديد وضع التصميم) ثم النقر فوق "خصائص". Properties ولكن  الآن ، سنترك ListBox1 كاسم مربع القائمة.


إنشاء كود فى حدث فتح الملف . سيتم تنفيذ التعليمات البرمجية المضافة إلى الحدث Open Workbook بواسطة Excel VBA عند فتح المصنف.

4. نفتح محرر Visual Basic.

5. اثم ننقر Dubbole Click  فوق هذا المصنف في Project Explorer.

6. اختر مصنف من القائمة المنسدلة اليمنى واختر فتح من القائمة المنسدلة اليمنى.

7- ولكى نضيف بعض العناصر الى الليست بوكس نقوم بكتابة الكود التالى


With Sheet1.ListBox1

    .AddItem "Egypt"
    .AddItem "Cairo"
    .AddItem "Giza"
End With

ولتفريغ الليست بوكس نكتب الكود التالى 

ListBox1.clear

وسنقوم ان شاء الله فى الدروس القادمة بشرح بقية الادوات 

السبت، 28 سبتمبر 2019

4:03 م

عالم الاوفيس : اسرع واسهل طريقتان لحذف الصفوف داخل ورقة العمل Excel VBA: Tow Ways to Delete Rows In Worksheet

بسم الله الرحمن الرحيم 
اهلا بكم متابعى موقع عالم الاوفيس



اليوم نلتقى معك م فى درس جديد من دروس اكسل VBA 
درس اليوم عن كيفية حذف اى عدد من الصفوف داخل ورقة العمل بناء على شرط معين اورق معين مكتوب داخل الخلية 
ودة كان سؤال احد المتابعين 
وللاجابة على هذا السؤال يلزمنا او لا ان ندخل الى المطور developer
 وندخل على محرر الاكواد visual basic
 ونعمل موديول جديد وهذا الموديول لحذف الصف بالكامل 

Sub delete_rows()
Dim i As Integer, j As Integer
ActiveCell.EntireRow.Select
On Error GoTo 1

i = InputBox("enter row number", "delete rows")
'i = [c1].Value
  For j = 1 To i
   Selection.Delete shift:=xlUp
     Next j
    
1:     Exit Sub
    

End Sub

وبمجرد تنفيذ الكود يفتح لن صندوق الادخال للادخال عدد الصفوف التى نريد حذفها   ونكتب عدد الصفوف وليكن 4 صفوف مثلا
سيتم حذف عدد 4 صفوف من ورقة العمل
ولكن اذا كنا نريد ان نحذف صف معين من داخل الجدول ولي ورقة العمل بالكامل اذا سوف ننفذ الكود الاخر 

Sub new_delete()
Range("a" & Val(Range("c1").Value) & ":d" & Val(Range("c1").Value)).Delete shift:=xlUp
End Sub

وبهذا نكون قد انتهينا من شرح كود اليوم 



الخميس، 26 سبتمبر 2019

1:31 م

اكسل VBA : كيفية اخفاء واظهار جميع اوراق العمل بناء على مختوى الخلية How to Show And unhide Sheets based on cell values

اكسل VBA : كيفية اخفاء واظهار جميع اوراق العمل بناء على مختوى الخلية


اهلا بكم متابعى موقع عالم الاوفيس

درس جديد من دروس اكسل  VBA وهو عن كيفية اظهار او اخفاء اورق عمل محددة بناء على محتوى الخلية وبالتحديد الخلية A1 او اى خلية فى العمود الاول (A)

يتم كل ذلك من خلال ماكرو سهل جدا وكود من اكواد  مكتبة اكسل  VBA

Option Explicit

Sub hide_show_sheets()
    Dim ws As Worksheet, c As Range
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
            ws.Visible = xlSheetHidden
        End If
    Next ws
    On Error Resume Next
    For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))
        Worksheets(c.Value).Visible = xlSheetVisible
    Next c
End Sub




الأربعاء، 25 سبتمبر 2019

3:56 ص

اكسل : طريقة سهلة جدا حذف الصفوف المحددة داخل الجدول فقط Excel vba:How To Delete Row Inside Table Only

بسم الله الرحمن الرحيم
اكسل : طريقة سهلة جدا حذف الصفوف المحددة داخل الجدول فقط 


اهلا بكم متابعى موقع ومدونة عالم الاوفيس

درس جديد من دروس اكسل vba وفى هذا الدرس سنتاول بالشرح اجابة سؤال احد الاصدقاء 
حول كيفية حذف صف معين داخل الجدول فقط وليس الصف بالكامل entire row وعمل ازاحة الى الاعلى فى نفس نطاق الجدول من خلال اليوزرفورم  Userform 

1- لنفرض ان لدينا جدول مكون من عدد من الصفوف والاعمدة كما بالشكل التالى



ونريد ان نحذف صف معين من خلال هذا الجدول الموضح بالاعلى من خلال الفورم



اول خطوة سنقوم بها هى عمل كود للبحث داخل الجدول لتحديد البيانات التى سيتم حذفها من خلال زر الحذف
كما يلى 

Option Explicit

Private Sub CommandButton1_Click()
Dim i As Byte
Dim ws As Worksheet
Dim lr As Long
If Me.TextBox1.Value = "" Then Exit Sub
Set ws = Sheet1
lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To lr
  If LCase(CStr(Cells(i, 1).Value)) = LCase(CStr(TextBox1.Value)) Then
    Me.TextBox2.Value = Cells(i, 2).Value
    Me.TextBox3.Value = Cells(i, 3).Value
    Me.TextBox4.Value = Cells(i, 4).Value
    Me.rownumber.Caption = Cells(i, 4).Row
    End If
Next i
وبعد تنفيذ كود البحث يتم تحديد رقم الصف المراد حذفة 
وبعد ذلك نقوم بعمل كود الحذف داخل الجدول فقط وعمل ازاحة الى الاعلى


والان ناتى الى كود الحذف 
Private Sub CommandButton2_Click()
Range("A" & Val(Me.rownumber.Caption) & ":D" & Val(Me.rownumber.Caption)).Delete Shift:=xlUp
End Sub

الجمعة، 20 سبتمبر 2019

10:09 ص

حماية جميع اوراق العمل مرة واحدة Excel VBA: Protect All Worksheets At One Step

بسم الله الرحمن الرحيم


درس اليوم من دروس اكسل vba كود جديد يساعدنا فى انجاز عملنا بطريقة سهلة وسريعة
كود اليوم حماية جميع اوراق العمل مرة واحدة بضغطة زر 
إذا كان لديك ملف اكسل ويحتوى على الكثير من أوراق العمل في مصنف وتريد حماية جميع الأوراقمرة واحدة ، يمكنك استخدام  هذا الكود .


يسمح لك  هذا الكود بتحديد كلمة المرور داخل الكود.وايضا  ستحتاج إلى كلمة المرور هذه لإلغاء حماية ورقة العمل.

الكود المستخدم
نشرح الكود بالتفصيل
1- نعرف متغيرين وهم ws و password
2- نضع قيمة المتغير password

Dim ws As Worksheet
Dim password As String
password = "Test123"
3- نعمل حلقة تكرارية For Each الغرض منها على جميع اوراق العمل داخل ملف العمل لحمايتها 
For Each ws In Worksheets
   ws.Protect password:=password
Next ws
End Sub
4- ومن هنا انتهى شرح الكود 


الاثنين، 16 سبتمبر 2019

11:31 ص

كيفية حماية الخلايا التى تحتوى على معادلات Protect all the Cells With Formulas

  
بسم الله الرحمن الرحيم

كيفية حماية الخلايا التى تحتوى على معادلات


اهلا بكم متابعى موقع الاوفيس

اهلا بكم فى درس جديد من دروس اكسل vba 

درس جديد  نتعرف فية على مهارة جديد من مهارات excel macro
وسنتعرف فى درس اليوم على كيفية حماية جميع الخلايا التى تحتوى على معادلات فقط

مما لاشك فية اننا عندما نقوم بعمل مشروع معين بالاكسل وهذا الملف يحتوى على معادلات وصيغ مهمة ويمكن ان يدخل المستخدم على هذة الصيغ ويقوم باتلافها ووقف عملها فالباتالى لابد لنا ان نقوم بعمل كود ماكرو مهم لحماية هذة الخلايا من العبث بها واتلافها من قبل المستخدمين

اذا حان الوقت لنعرف كيفية عمل مثل هذا الكود

ندخل على Developer
ونفتح محرر الاكواد visual basic
وندرج موديول جديد Insert module

وكتب فية الكود التالى

Sub lockCellsWithFormulas()
With ActiveSheet
.Unprotect
.Cells.Locked = False
.Cells.SpecialCells(xlCellTypeFormulas).Locked = True
.Protect AllowDeletingRows:=True
End With
End Sub

وفى هذا الكود نقوم بعمل حماية للخلايا التى تحتوى على معادلات فقط

السبت، 14 سبتمبر 2019

4:31 م

ترحيل البيانات من ورقة عمل الى اخرى بناء على مقارنة عمودين من البيانات Excel VBA Macro : Transfer Data Form Sheet To Other Sheet

بسم الله الرحمن الرحيم
اهلا بحضراتكم متابعى موقع عالم الاوفيس


 درس جديد من دروس اكسل
ترحيل البيانات من ورقة عمل sheet  الى ورقة عمل اخرى بناء على شرط معين وهو مقارنة عمودين بهم مجموعة من البيانات
نرى المثال


فى هذا المثال يوجد لدينا مجموعة من البيانات والتى تعبر عن تاريخ ورقم صك معين ومبلغ الصك وعمود رابع بة رقم صك اخر
الشرط هنا ناة فى حالة تساوى القيمة فى العمود الرابع يتم عدم تراحيل البيانات الخاصة بهذا الصف 
كيف نقوم بعمل هذا الكود 
اولا ندخل الى المطور Devlober 
2- insert module
Sub test()
Dim lr As Long
Dim erow As Long
Dim i As Integer
lr = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
   For i = 2 To lr
     If Cells(i, 2) <> Cells(i, 4) Then
       erow = Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
        Range(Cells(i, 1), Cells(i, 3)).Copy Destination:=Sheets("sheet2").Cells(erow, 1)
          End If
    Next i
End Sub
وبهذا نكون قد ادرجنا الكود الخاص بنا والذى من خلالة يتم المقارنة بين البيانات وترحيلها الى شيت اخر

لتحميل ملف العمل من هنا
لمشاهدة شرح الفيديو

الخميس، 12 سبتمبر 2019

1:14 م

Do While Loop Excel VBA شرح الحلقات التكرارية


بسم الله الرحمن الرحيم

Do While Loop Excel VBAشرح الحلقات التكرارية




اهلا بكم متابعى موقع عالم الاوفيس


مازلنا نتواصل معكم فى شرح الحلقات التكرارية فى الاكسل Loop in Excel VBA

كنا شرحنا فى الدرس الاول بالتفصيل الحلقة التكرارية  For  Next Loop

الدرس الثانى

الحلقة التكرارية  Do While Loop

للحصول على أقصى استفادة من Excel و VBA ، تحتاج إلى معرفة كيفية استخدام الحلقات بكفاءة.

في VBA ، تسمح لك الحلقات بتصفح مجموعة من الكائنات / القيم وتحليلها واحدة تلو الأخرى. يمكنك أيضًا تنفيذ مهام محددة لكل حلقة.

فيما يلي مثال بسيط لاستخدام حلقات VBA في Excel.
وفى هذا الدرس يتبين لنا ان الحلقة التكرارية "Do While"  تتيح لك التحقق من وجود حالة وتشغيل الحلقة أثناء استيفاء هذا الشرط (أو هو TRUE).

يوجد نوعان من بناء الجملة في Do While Loop.

Do [While condition]
[Code block to Execute]
Loop

والنوع الثانى

Do
[Code block to Execute]
Loop [While condition]

الفرق بين هذين النوعين هو أنه في الأول ، يتم التحقق من شرط الشرط أولاً قبل تنفيذ أي كتلة تعليمات برمجية ،
 وفي الحالة الثانية ، يتم تنفيذ كتلة التعليمات البرمجية أولاً ثم يتم التحقق من شرط الشرط.

هذا يعني أنه إذا كانت الحالة هي False في كلتا الحالتين ، فسوف يستمر تشغيل الرمز مرة واحدة على الأقل في الحالة الثانية (حيث يتم التحقق من شرط "While" بعد تنفيذ الرمز مرة واحدة).

الآن ، دعونا نرى بعض الأمثلة على استخدام Do While loops في VBA.

المثال على ذلك

- إضافة أول 10 أعداد صحيحة موجبة باستخدام VBA

افترض أنك تريد إضافة أول عشرة أعداد صحيحة موجبة باستخدام Do Do loop في VBA.

للقيام بذلك ، يمكنك استخدام حلقة Do While حتى الرقم التالي أقل من أو يساوي 10. بمجرد أن يزيد الرقم عن 10 ، ستتوقف الحلقة.

والان اتفضل  كود VBA الذي سيقوم بتشغيل الحلقة التكرارية "Do While" وإظهار النتيجة في شكل  رسالة.

Sub AddFirst10PositiveIntegers()
Dim i As Integer
i = 1
Do While i <= 10
Result = Result + i
i = i + 1
Loop
MsgBox Result
End Sub

وكما لاحظنا فى هذا الكود تستمر الحلقة أعلاه في العمل إلى أن تصبح قيمة المتغير "i" هي 11. بمجرد أن تصبح القيمة =  11 ، عندها تنتهي الحلقة التكاراية  (اى عندما تصبح الحالة "خطأ").

ضمن هذة الحلقة التكارية  ، استخدمنا متغير النتيجة" Result "الذي يحتفظ بالقيمة النهائية بمجرد اكتمال الحلقة  التكرارية، يعرض صندوق رسالة قيمة المتغير " Result ".

                                                      لتحميل ملف العمل من هنا
نلتقى ان شاء الله فى الدرس القادم واستكمال شرح الحلقات التكرارية 
اذا اعجبك الدرس لاتنسى مشاركتة على وسائل التواصل الاجتماعى

الأربعاء، 11 سبتمبر 2019

2:04 م

For Next Loop (with Examples) Excel VBA شرح الحلقات التكرارية

For Next Loop Excel VBAشرح الحلقات التكرارية


اهلا بكم متابعى موقع عالم الاوفيس


نقدم لكم اليوم اول حلقة من دروس الحلقات التكرارية فى Excel VBA  وسنقوم بعمل ملف كامل عن الحلقات التكراية مع الامثلة المختلفة .للحصول على أقصى استفادة من Excel و VBA ، تحتاج إلى معرفة كيفية استخدام الحلقات التكرارية  بكفاءة.

في VBA ، تسمح لك الحلقات بتصفح مجموعة من الكائنات / القيم وتحليلها واحدة تلو الأخرى. يمكنك أيضًا تنفيذ مهام محددة لكل حلقة.

فيما يلي مثال بسيط لاستخدام حلقات VBA في Excel.

افترض أن لديك مجموعة بيانات وتريد تمييز كل الخلايا في صفوف متساوية. يمكنك استخدام حلقة VBA لتصفح النطاق وتحليل رقم كل خلية. إذا اتضح أنه متساوٍ ، فأنت تعطيه لونًا ، وإلا ستتركه كما هو.

الآن ، هذا بالطبع بسيط جدًا في حلقات Excel VBA (ويمكنك أيضًا القيام بذلك باستخدام التنسيق الشرطي).

في الحياة الواقعية ، يمكنك القيام بالكثير مع حلقات VBA في Excel والتي يمكن أن تساعدك في أتمتة المهام.

فيما يلي بعض الأمثلة العملية حيث يمكن أن تكون حلقات VBA مفيدة:

  • تنفيذ حلقات عبر نطاق من الخلايا وتحليل كل خلية (قم بتمييز الخلايا التي تحتوي على نص محدد فيه).
  • تكرار جميع أوراق العمل والقيام بشيء مع كل منها (مثل حمايتها / عدم حمايتها).
  • مرر جميع المصنفات المفتوحة (واحفظ كل مصنف أو أغلق كل المصنف باستثناء المصنف النشط).
  • تنفيذ حلقة من خلال جميع الأحرف في خلية (واستخراج الجزء الرقمي من سلسلة).
  • حلقة من خلال جميع القيم مجموعة.
  • مرر جميع المخططات / الكائنات (واعطي حدودًا أو غير لون الخلفية).

الآن لاستخدام الحلقات التكارية  في Excel VBA بشكل أفضل ، تحتاج إلى معرفة الأنواع المختلفة الموجودة وبناء الجملة الصحيح لكل منها.
تتيح لك حلقة "FOR/ NEXT" الانتقال إلى مجموعة من التعليمات البرمجية لعدد مرات محددة.

على سبيل المثال ، إذا طلبت منك إضافة الأعداد الصحيحة من 1 إلى 10 يدويًا ، فستقوم بإضافة الرقمين الأولين ، ثم إضافة الرقم الثالث إلى النتيجة ، ثم إضافة الرقم الرابع إلى النتيجة ، إلخ ..


أليس كذلك؟

يتم استخدام نفس المنطق في الحلقة التكرارية  (For – Next) في VBA.

يمكنك تحديد عدد المرات التي تريد تشغيل الحلقة فيها وكذلك تحديد ما تريد أن يفعله الكود في كل مرة يتم فيها تشغيل الحلقة.

فيما يلي بناء جملة الحلقة التالية:
For Counter = Start To End [Step Value]
[Code Block to Execute]
Next [counter]

في حلقة For Next ، يمكنك استخدام عداد (أو أي متغير) سيتم استخدامه لتشغيل الحلقة. يتيح لك هذا العداد تشغيل هذه الحلقة لعدد مرات مطلوبة.

على سبيل المثال ، إذا أردت إضافة أول 10 أعداد صحيحة موجبة ، فستكون قيمة العداد من 1 إلى 10.

دعنا نلقي نظرة على بعض الأمثلة لنفهم بشكل أفضل كيف تعمل الحلقة التالية.

مثال 1 - إضافة أول 10 أعداد صحيحة موجبة

يوجد أدناه الكود الذي سيضيف أول 10 أعداد صحيحة موجبة باستخدام حلقة For Next.

سيعرض بعد ذلك مربع رسالة يوضح مجموع هذه الأرقام.
Sub AddNumbers()
Dim Total As Integer
Dim Count As Integer
Total = 0
For Count = 1 To 10
Total = Total + Count
Next Count
MsgBox Total
End Sub
في هذا الرمز ، يتم تعيين قيمة Total على 0 قبل الدخول في حلقة For Next.

بمجرد دخوله إلى الحلقة ، فإنه يحتفظ بالقيمة الإجمالية بعد كل حلقة. لذلك بعد الحلقة الأولى ، عندما يكون العداد 1 ، تصبح قيمة "الإجمالي" 1 ، وبعد الحلقة الثانية تصبح 3 (1 + 2) ، وهكذا.

وأخيرًا ، عندما تنتهي الحلقة ، يحتوي متغير "Total" على مجموع الأعداد الصحيحة العشرة الأولى.


ثم يعرض MsgBox النتيجة ببساطة في مربع رسالة.

وسيتم شرح بقية الحلقات التكرارية تباعا ان شاء الله 
اذا اعجبك المقال لاتنسى مشاركتة عبر وسائل التواصل الاجتماعى 

من نحن

authorمرحبا، أسمي عماد غازى وهذه مدونتي أسعى دائما لأقدم لكم أفضل المواضيع الخاصة بالاوفيس
المزيد عني →

التصنيفات

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *

إجمالي مرات مشاهدة الصفحة