المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : كيف ادمج الاكسل مع الاوتو بلي


صادق النية
08-03-2015, 10:16 AM
السلام عليكم ورحمة الله وبركاته شباب كيفكم ... اريد ان ابحث في 3 ملفات أكسل فقلت اسوي برنامج بحث اكتب العبارة التي اريدها وهو يبحث في الملفات مباشرة ويعطينا الناتج وفي اي ملف اكسل وجدها يعني هل الاول او الثاني او الثالث
رجاء افيدوني وجزاكم الله خير الجزاء

فرح صالحي
08-03-2015, 03:33 PM
السلام عليكم ورحمة الله وبركاته
ملف مفتوح للاخ هيثم قد يفيدك في بحثك
http://www.mediafire.com/download/f93kl0099y7l8ss
موفق بإذن الله .:abc_152:.. لك مني أجمل تحية .

صادق النية
09-03-2015, 09:01 AM
جزاك الله خير أخي ... كان قصدي ان البحث يتم عن ما بداخل الملف من نصوف سواء أكان الملف اكسل او وورد ... يعني ليس اسم الملف وانما ما بداخل الملف ويعطي لي الناتج ... يعني مثل برامج الفهارس المكتبية

فرح صالحي
10-03-2015, 09:45 PM
السلام عليكم ورحمة الله وبركاته
اخي (فاقد الشيء لا يعطيه )
هذا كود بلغة php يستجيب تماما لطلبك اذ انه يفهرس محتويات الملف المعين اذا كانت لك القدرة التقنية على تحويله الى لغة lua فقد وجدت ضالتك ،عكس ذلك هذا ماجاد به الفقير الى العلم

<?php
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
// lecture des REPERTOIRES en PROFONDEUR (à partir de "$rep") et COMPTAGE du nombre de fichiers (avec fonction récursive)
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------
// http://www.ac-creteil.fr/util/progra...epertoires.php
/* script rep1.php
* affichage récursif du contenu d'un répertoire, avec parcours en "profondeur d'abord"
* pour cela dès que l'on a atteint et reconnu un sous-répertoire, on le parcours
* prioritairement en appelant récursivement la fonction de parcours pour ce répertoire.
*/

function parcours_rep($rep, $ssrep, $racine, $i) // fonction récursive ("racine" est là pour retrancher cette racine au chemin complet afin de remplir le tableau)
{
if (is_dir($rep)) // Ouvre le dossier "racine" ("/photos_web/galeries/" par exemple) et lit tous les répertoires
{
if( $dir = opendir($rep) ) // Ouvre le dossier "racine" et lit tous les répertoires
{
while( ($fichier = readdir($dir)) !== false )
{
if ($fichier != "." && $fichier != ".." )
{
$chemin = $rep.$fichier;
if (is_dir($chemin)) // Est-ce que $chemin est un répertoire ?
{
global $liste_rep;
global $i;
$liste_rep[$i] = substr($chemin, strlen($racine)); // PLace les fichiers dans un tableau ($liste_rep[] = à la fin)
echo 'i = '.$i.' - ';
echo 'liste_rep = '.$liste_rep[$i].'<br/>';
// echo 'chemin = '.$chemin."<br>";
$i++;
parcours_rep($chemin.'/', ($ssrep==''?$fichier:$ssrep.'/'.$fichier) , $racine , $i); // fonction récursive
}
/* else // si on veut afficher les fichiers du répertoire (ou sous répertoire)
{
$liste_galeries[$i] = substr($chemin, strlen($racine)); // PLace les fichiers dans un tableau
echo 'galerie '.$i. ' = ' . $liste_galeries[$i].'<br/>';
}
*/ }
}
}
} // -------------------------------------- fin de la lecture des répertoires -------------------------------------------------------------------
else
{
echo "le répertoire \"$rep\" n'existe pas ...";
}
closeDir($dir);
return $liste_rep;
} // ---------------------------------------------------------------- fin de la fonction -------------------------------------------------------------------

$liste_repertoires = array();
$liste_galeries = array();
$i=0; // $i = tous les répertoires
$nb_rep=0;
echo "Affichage d'un rép. avec parcours en PROFONDEUR d'abord <br/>";
//$repertoire= '../../photos_web/galeries/'; // "$repertoire" défini dans le programme d'appel
$liste_repertoires = parcours_rep($racine, '', $racine, $i=0);
$nb_galeries = (count($liste_galeries));
$nb_rep = (count($liste_repertoires));
echo 'nb_rep = '.$nb_rep.'<br/>';
// Classement des répertoires ( "sort" = tri croissant "rsort" = tri décroissant)
sort($liste_galeries); // ou rsort($liste_galeries);
sort($liste_repertoires); // ou rsort($liste_repertoires);
for ($i=0; $i<$nb_rep; $i++)
{
if ($liste_repertoires[$i] != '')
{
echo 'liste_rep '.$i.' = '.$liste_repertoires[$i].'<br/>';
}
}

// ================================================== ================================================== ========================
?>
والسلام عليكم ورحمة الله وبركاته
:abc_152:

المـهاجر
12-03-2015, 10:34 AM
هذا كود بلغة php يستجيب تماما لطلبك


يعمل 100 % :abc_051:

فرح صالحي
12-03-2015, 10:59 AM
يعمل 100 % :abc_051:

السلام عليكم ورحمة الله وبركاته
نورنا أخي اذا كان لا يعمل فبامكانك مساعدة الاخ صادق النية في مشكلته
اذا كانت سخرية منك فالله يهديك
موفق بإذن الله ..:abc_152:. لك مني أجمل تحية .

المـهاجر
12-03-2015, 11:15 AM
اذا كان لا يعمل

ذكرت لك انه يعمل و ليس العكس

اذا كانت سخرية

أعوذ بالله ان أكون من الجاهلين

اذا كانت لك القدرة التقنية على تحويله الى لغة lua فقد وجدت ضالتك ،

أنا لا زلت عند رأيى
يعمل 100 % :abc_051:
زادك الله من العلم الوفير و بارك فيك

هدانا الله و إياكم
هذا و بالله التوفيق

فرح صالحي
13-03-2015, 10:21 AM
ذكرت لك انه يعمل و ليس العكس

أعوذ بالله ان أكون من الجاهلين



أنا لا زلت عند رأيى
يعمل 100 % :abc_051:
زادك الله من العلم الوفير و بارك فيك

هدانا الله و إياكم
هذا و بالله التوفيق
==========================
جازاك الله خيرا كثيرا ونفع بك
ماكان لي ان اسيء الظن بالناس
اعتذر منك اخي وساتفكرك بالدعاء في الجمعة بعد قليل
موفق بإذن الله ..:abc_152:. لك مني أجمل تحية .

ثامر أبو بلقيس
13-03-2015, 03:23 PM
بارك الله فيكم شكرا أخي صالحي على ثقافة الاعتذار :abc_138:

ثامر أبو بلقيس
13-03-2015, 03:41 PM
السلام عليكم ورحمة الله وبركاته
بخصوص طلب الاخ المتعلق بالبحث في ملفات الايكسل
كما ذكر لك أن العملية ليست سلسة
على كل سأضع تصورا نظريا قد يبادر زميل بتجسيده
--------
01 - عند دخول التجميعية تحول ملفات الايكسل الثلاث الموجودة في مجلد
البرنامج الى ملفات xml بعيدا عن مسار التجميعية
02 - عند كتابة المفردة المعنية بالبحث و ستكون اما Number أو String
يتم انشاء أمر دفعي باستغلال التعليمة os ليتم البحث في ملفات xml
هذا الامر سينتج ملفات نصية بنفس تسمية ملفات xml في كل ملف عدة أسطر
ما يهمنا في الملف النصي الواحد هو وجود احدى المفردتين Number أو String
لانه تواجد احداهما دال على أن مفردة البحث موجودة في الملف النصي المتوافقة تسميته مع تسمية ملف xml و
المتوافقة مع ملف الايكسل
و عند خروج التجميعية يتم حذف كل المجلد الذي تمت فيه العمليات
---------------
أعرف أن هذا الكلام غير مجد ... فقط واحد يبدأ و نتعاون
أشعر أنها ستكون هناك نتائج لابأس بها والله اعلم :abc_138:

المـهاجر
13-03-2015, 04:11 PM
لا توجد اى طريقة عملية متوفرة فى الوقت الراهن لكن يمكن محاولة

التحويل ل csv
عمل load لل csv فى grid (امر جاهز)
البحث فى الجريد (برمجة حلقة)

لدى بليجن من برمجتى يتعامل مباشرة مع ملف ال xls أو xlsx على مسنوى الهكس مباشرة
و يفهرس الملف إلى جدول لوا متعدد المستوى بعد تحليل دقيق للهيدر
و يكفل القراءة من خلية محددة او الملف كله و طرحه فى جريد او انبوت
يبحث بداخل ملفات الأكسل عن اى قيم و يرجع النتائج كمتغيرات لوا عادية
كما يضمن كتابة الملفات مباشرة من متغيرات لوا الى خلايا الملف
لا يرتبط بوجود برنامج الأكسل على الجهاز
لكنه للأسف غير مجانى

و لمنع التعارض مع الإدارة أفضل عدم طرحه
موفقين

ثامر أبو بلقيس
13-03-2015, 04:16 PM
بالتأكيد هذا عمل و جهد كبير .. يستحق التشجيع
ثم لماذا الادارة تعارض ابداعات اعضائها حتى و ان كانت بالمقابل ذاك حقك
-- عني سأتصل بك في الايام القادمة لشراء نسخة من البليجين أحتاجه كثيرا
موفق :abc_138:

المـهاجر
13-03-2015, 04:27 PM
اخى الكريم
لا مانع عندى

البليجن يفيد فى التعامل مع عدد كبير من الملفات فى آن واحد و بسرعة فائقة (بالمللى ثانية)
لو كنت تريد التعامل مع عدد صغير من الملفات و لا يفرق معك إضاعة ثانية أو ثانية و نصف فى الإجراء
فأنصحك بتوفير النقود و توجه فورا للإضافة luacom فهى مجانية و تستطيع من خلالها فعل كل ما تشاء
فقط يعيبها
1- أنها تستغرق وقتا طويل نسبيا
2- تستلزم وجود الأكسيل مثبتا على جهاز المستخدم
3- يكتنفها بعض الصعوبة (فى بداية التعامل مع luacom فقط )

لو تغاضينا عن الثلاثة عيوب
يمكن التعامل بدون البليجن

ثامر أبو بلقيس
13-03-2015, 04:34 PM
فعلا أخي الان اعمل على luacom لتحويل كما ذكرت ملفات الايكسل2003
الى ملفات XML
على أن يكون الكود للمرحلة التي ذكرت هو بعد تفعيل الاضافة
result = File.Find(_SourceFolder.."\\AutoPlay\\Docs", "*.xls", false, false, nil, nil);
for v,n in pairs(result) do
oExcelApp=luacom.CreateObject("Excel.Application")
oXLS=luacom.CreateObject("Excel.Document")
oXLS=oExcelApp.Workbooks:Open(n)
oXLS.Application.DisplayAlerts = False
XMLSavePath = String.Replace(n, ".xls", ".xml", false);
oXLS:SaveAs(XMLSavePath, 46)
oExcelApp:Quit()
end

المـهاجر
13-03-2015, 04:54 PM
لماذا xml ؟؟

لا تعقد الأمور على نفسك
هذا هو الكود بعد التعديل لينتج csv و هو ملف نص بسيط يسهل التعامل معه

result = File.Find(_SourceFolder.."\\AutoPlay\\Docs", "*.xls", false, false, nil, nil);
for v,n in pairs(result) do
oExcelApp=luacom.CreateObject("Excel.Application")
oXLS=luacom.CreateObject("Excel.Document")
oXLS=oExcelApp.Workbooks:Open(n)
oXLS.Application.DisplayAlerts = False
XMLSavePath = String.Replace(n, ".xls", ".csv", false);
oXLS:SaveAs(XMLSavePath, 6)
oExcelApp:Quit()
end

بعدها تستخدم لكل ملف csv دالة قراءة النصوص إلى تيبل Text.ReadtoTable
و لكل سطر من التيبل تستخدم دالة delemited string to table أو string.gmatch
ال delemiter يكون إما فاصلة أو فاصلة منقوطة (يمكنك كشفها بنفسك بل حتى يمكنك جعل البرنامج يكشفها بسهولة )
لتحصل على ما تريد بكل سهولة

المـهاجر
13-03-2015, 05:08 PM
تم تعديل الرد

تم تعديل كود المشاركة السابق
oXLS:SaveAs(XMLSavePath, 6)
تم تغيير الرقم 24 بالرقم 6 ليدعم العربية دعما كاملا (رقم الحفظ ل csv)
الرقم 24 لا يدعم العربية و يدخل بنا فى متاهات اليونيكود ( لا أعتقد ان ديرموت لاحظ أو عانى من ذلك )

فقط csv يعيبها أنها تحفظ الشيت الأول فقط
اعتقد الأمر اصبح بسيط
شكرا على مشاركة الكود

بالتوفيق
:abc_152:

ثامر أبو بلقيس
13-03-2015, 06:16 PM
السلام عليكم ورحمة الله وبركاته

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

سأشاركك ياطيب بهذا المقترح بسيط لكن مفيد جدا

للاستعلام في ملفات csv الناتجة استعمل هذا الكود
@ECHO OFF
FIND /I /N "سمير" "*.csv"> C:\01.txt
exit

وهو ملف bat سيبحث في ملفات csv الموجودة بجانبه
ليعطيك النتائج منظمة حين يبحث عن الاسم سمير فينا بعد يمكن تطويعه ليعمل مباشرة من داخل الاوتوبلاي
ولاحظ مثلا هذا الناتج

---------- 2.CSV
[1]100;سمير
[3]سمير;

---------- RRR.CSV

[؟؟؟] هو معبر عن تموقع الخلايا مع اعتبار الفاصلة المنقوطة

أأمل أني وفقت فيما اقترحت فقد لا نستدعي البيانات لداخل الاوتوبلاي :abc_138:

المـهاجر
13-03-2015, 09:28 PM
يمكنك التغاضى عن مسار ملف التكست لو كنت تريد حفظ الملف
01.txt
بجوار ملف البات
شكرا جزيلا على هذا الكود
:abc_022:

فقط تساؤل يحيرنى
هل يمكن جعل luacom يفتح ملفات اكسل ذات تسمية عربية أو تحتوى على محارف عربية فى مساراتها ؟

فرح صالحي
13-03-2015, 11:00 PM
السلام عليكم ورحمة الله وبركاته
هذا ملف مفتوح اظن انه يستجيب لطلب الاخ صادق النية
http://www.mediafire.com/download/sy3y1avkd2orakx/%D8%A7%D8%B3%D8%AA%D8%B9%D8%B1%D8%A7%D8%B6+%D9%85% D8%AD%D8%AA%D9%88%D9%8A%D8%A7%D8%AA+%D9%85%D8%AC%D 9%84%D8%AF.rar
موفق بإذن الله .:abc_152:.. لك مني أجمل تحية .

ثامر أبو بلقيس
14-03-2015, 10:26 AM
ا
كما يضمن كتابة الملفات مباشرة من متغيرات لوا الى خلايا الملف

انشغالي هو الكتابة و ليس القراءة اذ تعلق باللغة العربية فقط

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

هل المشكل في اختيار العنصر من داخل الاوتوبلاي ؟ هل سأجير على وضع ترجمة
الاسامي داخل الايكسل نفسه ؟ أضم انشغالي لما طرحت لماذا luacom لا يكتب بالعربي
خطوة تبقى تنقصني للتعامل مع الايكسل مباشرة + لم أجرب تعامله مع الخلايا المدمجة :abc_138:
السلام عليكم ورحمة الله :abc_138:

المـهاجر
14-03-2015, 07:45 PM
أضم انشغالي لما طرحت لماذا luacom لا يكتب بالعربي


يبدو ان تساؤلى لم يصل بشكل جيد
انا اقصد ان luacom لا يفتح ملف يكون إسمه مكتوب بالعربى
و ربما لا يفتح ملفا يتضمن مساره محارف عربية

ثامر أبو بلقيس
14-03-2015, 09:05 PM
نعم أخي المهاجر مررت بنفس المشكل
http://www13.0zz0.com/2015/03/14/22/406896082.jpg (http://www.0zz0.com)
ثق لو كنت أملك حلا لن أتأخر لحظة

في كتابته لكن يبدو أنه مشكل حقيقي

ضف له ما طرحته و هو أستطيع من خلال الاضافة قراءة ملف الايكسل

بالكامل أو بالخلية

لكن الكتابة العربية لم أوفق لغاية هاته اللحظة لتمرير كلمة للخلايا بواسطة هاته الاضافة لذلك قلت أضم إنشغالي

كونه مشكل لغة لنفس الاضافة :abc_138:

أأمل أن يحل الاشكال :abc_050:

المـهاجر
14-03-2015, 09:19 PM
تمنياتى بالتوفيق
:abc_152:

ثامر أبو بلقيس
14-03-2015, 10:30 PM
السلام عليكم ورحمة الله وبركاته
شكرا أخي
أخي المهاجر سأحاول بدء من هذه الملاحظة

ثامر مفردة تتعامل معها لغة الاضافة بالشكل

ط«ط§

قراءة

عند تمريرها كتابة في الايكسل تحصلت على تمرير الحرف " ثا "

يبدو أني سأنطلق في ايجاد الحل من هذه الملاحظة

المـهاجر
14-03-2015, 11:25 PM
انطلق فى رعاية الله
خالص تمنياتى بالتوفيق

صادق النية
16-03-2015, 12:14 PM
بارك الله في الجميع ومجهود تشكرون عليه ...

ثامر أبو بلقيس
16-03-2015, 11:41 PM
انطلق فى رعاية الله
خالص تمنياتى بالتوفيق

بارك الله فيك فعلا قررت الانطلاق إن شاء الله

و الحمد لله رب العالمين

فقد وفقت في رسم الخطوة الاولى الصحيحة بناء على عديد التجربة

تنقصني مرحلة متعلقة بالايكسل في حد ذاته

طرحت بخصوصها استفسار هنا

هنااااا (http://www.officena.net/ib/index.php?showtopic=59835#entry383765)

و لن أستسلم إلا عند وضع ملف مفتوح يسمح بالقراءة و الكتابة في الايكسل
و باللغة العربية يستفيد منه الزملاء

شكرا :abc_138:

فرح صالحي
20-03-2015, 06:44 PM
و لن أستسلم إلا عند وضع ملف مفتوح يسمح بالقراءة و الكتابة في الايكسل
و باللغة العربية يستفيد منه الزملاء

شكرا :abc_138:
:abc_050:بالتوفيق ان شاء الله :abc_050:

ثامر أبو بلقيس
27-03-2015, 09:22 PM
أخي صادق النية فيما يخص البحث في ملفات الايكسل قد تكون مقاربة
ترتبط ارتباطا وثيقا بالزمن المستغرق في عملية البحث حسب عدد الملفات ونطاق البحث في ذهني طريقتين
- الاولى
باستعمال عنصر Grid و استدعاء كل ملف ايكسل بداخله و من ثمة اجراء عملية البحث أو استغلال ملفات txt
الثانية تعرف أن عدد خلايا الورقة الواحدة في الايكسل عدد رهيب لاحظ :
16777216 خلية (65536 صف*256 عمود)
شوف كم سيتغرق من وقت في الدوران حول كل خلية إضافة الى انه عدة ملفات و ليس ملف واحد
أخي حتى لا يبق تساؤلك بدون رد
هات ملف مفتوح به ثلاث ملفات ايكسل و حدد لي نطاق البحث كأن أبحث مثلا في 26 *26 خلية عموديا و أفقيا
----------------------- موفق :abc_138: و سأعطيك الحل إن شاء الله

المـهاجر
29-03-2015, 11:20 PM
الثانية تعرف أن عدد خلايا الورقة الواحدة في الايكسل عدد رهيب لاحظ :
16777216 خلية (65536 صف*256 عمود)
شوف كم سيتغرق من وقت في الدوران حول كل خلية

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

تابع >>>>>>>

المـهاجر
29-03-2015, 11:22 PM
حدد لي نطاق البحث كأن أبحث مثلا في 26 *26 خلية عموديا و أفقيا

لا ضرورة للتحديد مطلقا
شاهد كيف سيتعرف الكود على منطقة البيانات و يحددها تلقائيا بدون حلقة كشف
و لن يتطرق للخلايا الفارغة ( الا اذا كانت ضمن نطاق البيانات)
local excel = luacom.CreateObject("Excel.Application")
excel.Visible = true
local wb = excel.Workbooks:Add()
local ws = wb.Worksheets(1)
for row=1,20 do
ws.Cells(row,1).Value2 = math.random()
ws.Cells(row,2).Value2 = math.random()
ws.Cells(row,3).Value2 = math.random()
end
The_range = ws.UsedRange
The_range:Select();

اترك لك مهمة البحث بداخل النطاق

ثامر أبو بلقيس
04-04-2015, 05:48 PM
السلام عليكم ورحمة الله وبركاته

أخي المهاجر ... معذرة عن التأخر في الرد لظروف

بارك الله فيك

لي عندك طلبات خاصة خارج نطاق الموضوع .. إن توفرت لديك المعلومة أفدني بهما
------------
01 - عند التعامل مع luacom كإضافة أو ملف دل
هل هناك تعليمة واضحة للطباعة كأن نطبع مثلا نطاق معين
02 - أرسل لي كل التعليمات المتعلقة بالتعامل مع الايكسل
على غرار :Select(); أعرف البعض المتعلق باستدعاء قيمة أو كتابتها
أو ما تعلق بتلوين خلية أو حجم و نوع الخط في الخلية أو حجم الخلية أو
ما تعلق بالمنحى البياني من تشكيل وعرض ... الخ أشعر بأنه توجد تعليمات أخرى
أفدني بها و خصوصا ما تعلق بالطباعة
03 - وهذا طلب خاص جدا و يتعلق بربط بيانات ايكسل على عدة أجهزة مثلا في مؤسسة
هناك جهاز رئيسي و أجهزة موزعة على موظفين عند تسجيل موظف حالة وفاة أو ميلاد على جهازه
كيف سيتم الربط بين الاجهزة ليتم تحديث البيانات في جميع الاجهزة بالتسجيل الجديد حتى لا يكرر مرة ثانية
---
شكرا و أعرف بأنك لن تتوانى في تقديم المساعدة
إن تأخر ردي فذاك بسبب صعوبة الاتصال :abc_138:
السلام عليكم ورحمة الله وبركاته

المـهاجر
05-04-2015, 07:40 PM
03 - وهذا طلب خاص جدا و يتعلق بربط بيانات ايكسل على عدة أجهزة مثلا في مؤسسة
هناك جهاز رئيسي و أجهزة موزعة على موظفين عند تسجيل موظف حالة وفاة أو ميلاد على جهازه
كيف سيتم الربط بين الاجهزة ليتم تحديث البيانات في جميع الاجهزة بالتسجيل الجديد حتى لا يكرر مرة ثانية


هذا سهل ممتنع (شديد السهولة شديد الإمتناع)
يخرج كثيرا عن نطاق الأوتوبلاى (اللهم الا فى اخراج العمل النهائى)
لكنه ينفذ بالأوتوبلاى بكل سهولة
يتعلق ب 4 أو 5 خبرات و مهارات شديدة التقدم و شديدة التخصص
يندر (او شبه ينعدم) ان تجد شرح او موضوع يجمعها و يربطها سويا

لو امكنك راسلنى على الخاص بإيميل جوجل خاص بك
تحياتى و احترامى :abc_152:

الأخ صادق
قريبا أنشر لك بليجن مجانى بسيط خاص بالبحث فى الإيكسل

ثامر أبو بلقيس
09-04-2015, 06:54 PM
لو امكنك راسلنى على الخاص بإيميل جوجل خاص بك
تحياتى و احترامى

إن شاء الله
شكرا على ما بدر منكم من حسن معاملة
وعلى هذه الروح المتعاونة :abc_138:

عظيمه
18-03-2016, 09:06 AM
بسم الله الرحمن الرحيم
اولاً : شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .
ثانياً: الأخواة الأفاضل شرفاء العلم والتعلم
برجاء المساعدة في مشروع به اسماء في جريد واريد اضافة RadioButton و ComboBox لل grid?
مع كل الشكر والتقدير والاحترام لكل شخص سواء المشرفين علي المنتدي أو الأساتذة المعلمين.

خالد المسيلي
11-10-2016, 08:46 PM
كل التقدير والاحترام