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

منع التعديل فى اى خلية بها بيانات


الردود الموصى بها

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

 

اولا : اتقدم بالشكر لكل القائمين والمشاركين على المنتدى

 

ثانياً : انا اعمل مراجع حسابات واقوم بتصميم شيتات اكسيل للمحاسبين للعمل عليها ولكن تواجهنى مشكلة تتمثل فى

 

قيام مستخدم شيت الاكسيل بالتعديل فى البيانات باثر رجعى

 

المطلوب : حماية اى خلية تحتوى بمجرد احتوائها على بيانات بحيث لا يتمكن اى شخص من تعديلها

 

يارب اكون عرف اوصف المشكلة بصورة واضحة 

 

والسلام عليكم ورحمة الله وبركاته

  • Like 1
رابط هذا التعليق
شارك

 السلام عليكم ورحمة الله وبركات اخى/ اسلام مراد

 

من الممكن ان تقوم بإخفاء معادلات الشيت الذى تقوم بتصميمه ، كذالك تقوم بعمل حمايه على المعادلات وإليك التوضيح

 

1-حدد بالماوس(selection) على ما تريد اخفائه وعمل حمايه له مثلا العمود A4:D4 ثم انقر بيمين الماوس واختار formatcells ثم protecttion ثم Hidden ثم OK

 

2-اختر من القائمه Review الاختيار Protectsheet ثم اكتب رقم سرى ثم OK ثم اعد كتابه الرقم السرى مره اخرى (لا يشترط ان تكون محدد على الخلايا المخفى ، اى تكون فى اى مكان فى الشيت)

 

الملاحظات:

 

1-تم اخفاء كافه المعادلات التى تم التحديد عليها مسبقا وكذالك تم عمل حمايه عليها

 

تنبيه هام:

 

1-ستجد ان الشيت كله مغلق ولا يقبل الكتابه فيه وهذا ربما يكون غير مطلوب

ولتفادى ذلك قم بفك الباسورد ثم حدد بالماوس على المناطق التى تريد ان يسمح بها بالكتابه والتعديل فيها واختار formatcells ثم protecttion ثم امسح علامه الصح من امام  Locked  ثم OK 

 

2-اعد عمل رقم سرى من خلال الخطوه السابقه.

رابط هذا التعليق
شارك

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

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

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

مثال لبيان الحالة :-

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

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

ارجو ان تكون المشكلة محل نقا

رابط هذا التعليق
شارك

السلام عليكم

 

اخي إسلام

 

فعل الحماية للأوراق التي كنت عامل لها حماية

ثم إستخدم الكود التالي

فرضا أن رمز الحماية للأوراق هو " 123 "

 

Public Sub Ali_Prodc()
Dim Sh As Worksheet
Dim Rng As Range
Ch_P
For Each Sh In ThisWorkbook.Worksheets
If Sh.ProtectContents = True Then Sh.Unprotect Password:="123"
If Not Sh.Cells.HasFormula Then Sh.Cells.Locked = False: Sh.Cells.FormulaHidden = True
 For Each Rng In Sh.UsedRange
  If Rng.Value > Empty Then Rng.Locked = True
 Next
If Sh.Cells(1, "IV") = "True" Then Sh.Protect Password:="123"
Next
End Sub
Private Sub Ch_P()
Dim Sn As Worksheet
For Each Sn In ThisWorkbook.Worksheets
If Sn.ProtectContents = True Then Sn.Cells(1, "IV") = "True"
Next
End Sub

 

 

جرب الكود وبلغنى بالنتائج

رابط هذا التعليق
شارك

السلام عليكم

الاخ الكريم

 

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

حماية أكثر من نطاق في الورقة بدون حماية الورقة

عسي ان ينفع معك او نقوم بالتعديل عليه لنصل الي طلبك الذي تريده ( ان شاء الله )

وكما تريد

جزاك الله خيرا

 

 

 

كود لحماية أكثر من نطاق بدون حماية الورقة.rar

  • Like 3
  • Thanks 2
رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

اخى الكريم عباد

اشكرك شكراً تعجز الكليمات عن وصفة لمتابعتك لموضوعى وجزاك الله عنى كل خير

الكود المرسل يفى بالغرض بصورة وافية

ولكن ينقصنى شىء كمان

انا عملت زرار لتنفيذ الكود لتجربتة لكن السؤال

هل ينفع الكود ده يتنفذ فى كل مرة يتم فيها حفظ الملف بدون ان يكون للمستخدم اى دخل فى تنفيذ الكود ؟

بمعنى ان المستخدم اول ما يخلص شغل ويعمل حفظ يتم تنفيذ الكود ؟

 

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

رابط هذا التعليق
شارك

السلام عليكم

 

اخي إسلام

 

حط هذا الكود في حدث Thisworkbook

عند الحفظ من واجهة الإكسل

أو من الإختصار "Ctrl" + "S"  يفعل الكود

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call Ali_Prodc
End Sub

 

 

وهذا الكود السابق وعليه تعديلات بسيطه

لتلافي الأخطاء

 

Public Sub Ali_Prodc()
Dim Sh As Worksheet
Dim Rng As Range
Ch_P
For Each Sh In ThisWorkbook.Worksheets
If Sh.ProtectContents = True Then Sh.Unprotect Password:="123": Sh.Cells.Locked = False
If Not Sh.Cells.HasFormula Then Sh.Cells.Locked = False Else Sh.Cells.FormulaHidden = True
 For Each Rng In Sh.UsedRange
  If Rng.Value > Empty Or Rng.HasFormula Then Rng.Locked = True
 Next
If Sh.Cells(1, "IV") = "True" Then Sh.Protect Password:="123"
Next
End Sub
Private Sub Ch_P()
Dim Sn As Worksheet
For Each Sn In ThisWorkbook.Worksheets
If Sn.ProtectContents = True Then Sn.Unprotect Password:="123": Sn.Cells(1, "IV") = "True": Sn.Protect Password:="123"
Next
End Sub

 

ارجو التجربه واي ملاحظات أنا موجود

 

تحياتي

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

الاستاذ القدير / عباد

 

دائما اكوادك روعه

وفي الحقيقة انت الاروع

جزاك الله خيرا

رابط هذا التعليق
شارك

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

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

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

وبارك الله فيك

رابط هذا التعليق
شارك

������ �����

 

��� ����� ��� 

����� ��� ����� ������ ���� ���� ���

 

��� himass

����� ��� ����� ������� ������

 

��� ����� ������ ���� ��� ����� ������ ��� �� ���� ���� ��� ��

Public Sub Ali_Prodc()
Dim Sh As Worksheet
Dim Rng As Range
Ch_P
On Error Resume Next
With Application
  .ScreenUpdating = False
  .Calculation = xlCalculationManual
  .EnableEvents = False
For Each Sh In ThisWorkbook.Worksheets
If Sh.ProtectContents = True Then Sh.Unprotect Password:="123": Sh.Cells.Locked = False
If Not Sh.Cells.HasFormula Then Sh.Cells.Locked = False Else Sh.Cells.FormulaHidden = True
With Sh.Cells
  .SpecialCells(2).Locked = True
  .SpecialCells(-4123).Locked = True
End With
If Sh.Cells(1, "IV") = "True" Then Sh.Protect Password:="123"
Next
  .EnableEvents = True
  .Calculation = xlCalculationAutomatic
  .ScreenUpdating = True
End With
End Sub
Private Sub Ch_P()
Dim Sn As Worksheet
For Each Sn In ThisWorkbook.Worksheets
If Sn.ProtectContents = True Then Sn.Unprotect Password:="123": Sn.Cells(1, "IV") = "True": Sn.Protect Password:="123"
Next
End Sub

تم تعديل بواسطه حمادة عمر
رابط هذا التعليق
شارك

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

بارك الله فيك يا استاذنا  الغالى  وزادك الله علما  نافعا

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

رابط هذا التعليق
شارك

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

الكتابه التى اعلى الكود وفيها اسمي غير واضحه وتظهر لى فى شكل مربعات  فهل هذا نوع الخط

على العموم تعجز كلمات الشكر  والثناء عن وصف عملك وتضحيتك بوقتك وعلمك لتنفع به المسلمين  - اللهم اجعله فى ميزان حسناتك يوم القيامه   اللهم امين

رابط هذا التعليق
شارك

السلام عليكم

 

اخي الفاضل himass

اشكرك على كلامك المشجع

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

الذي نتمنى من الله ان نتوصل الى ربع مالديهم من علم

واما بخصوص الخط

جميع ردود الموضوع هذا تظهر لدي كلها حروف بهذا الشكل ظˆظ‚ظ„ ط§ط¹ظ

ولاكن عند الخروج من حسابي والدخول بدون الحساب تظهر الردود بالشكل الطبيعي

ولااادري ماسبب الرد الاخير ظهر بشكل مربعات

واشكرك مجددا على خلقك الكريم وكلماتك الطيبه

 

تقبل تحياتي وشكري

رابط هذا التعليق
شارك

خالص الشكر والتقدير استاذنا  الغالى و الكبير / عباد  وهذا هو تواضع العلماء

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

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

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

والى اللقاء باذن الله فى مشاركات اخرى

  • Like 1
رابط هذا التعليق
شارك

  • 2 weeks later...

السلام عليكم ورحمة الله وبركاته

استاذى الكبير واخى الجليل / أ.عابد

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

وحضرتك سبق واضفت دعديل على الكود ليقوم بهذا الغرض لكنى فشلت فى الطبيق

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

رابط هذا التعليق
شارك

  • 2 weeks later...

اولا : الحمد لله والشكر لله

ثانيا : كل الشكر والتقدير للقائمين على هذا المنتدى الرائع

 لقد تم حل مشكلتى والكود يعمل بصورة رائعة والشيت المرفق تطبيق على الكود

جزا الله كل من ساهم فى ذلك خيرا

cash (1).rar

  • Like 1
رابط هذا التعليق
شارك

اخي : عباد

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

والشكر موصول لصاحب المبادرة بالسؤال اخونا : اسلام مراد 

رابط هذا التعليق
شارك

  • 2 months later...

السلام عليكم ورحمة الله وبركاته 
 

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

انا عارف انى بطلب مستحيل بس انتم   الامل الوحيد  بعد الله

ولكم منى جزيل الشكر

رابط هذا التعليق
شارك

  • 7 months later...

السلام عليكم 
أخوتى الأعزاء أنا جديد معكم فى الموقع واستفدت كثيرا من خبراتكم العالية وأتمنى أن تدوم مشاركاتى معكم 

بخصوص الكود السابق حاولت تجربته تكرارا ومرارا لكن يظهرلى خطأ فى الكود Rng.Locked = True

كما هو موضح بالصورة ... كيف يمكن التغلب على هذه المشكلة 

404491761.png

رابط هذا التعليق
شارك

  • 2 weeks later...
  • 2 months later...

السلام عليكم

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

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

  If Rng.Value > Empty Or Rng.HasFormula Then Rng.Locked = True

كيف يمكننى التغلب على هذه المشكلة 

أنا فى حاجة لهذا الكود ضرووورى 

وجزاكم الله خير 

رابط هذا التعليق
شارك

  • 1 month later...

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

رابط هذا التعليق
شارك

  • 1 year later...
في ٢١‏/١‏/٢٠١٤ at 09:33, Muhamed Gamil said:

السلام عليكم 
أخوتى الأعزاء أنا جديد معكم فى الموقع واستفدت كثيرا من خبراتكم العالية وأتمنى أن تدوم مشاركاتى معكم 

بخصوص الكود السابق حاولت تجربته تكرارا ومرارا لكن يظهرلى خطأ فى الكود Rng.Locked = True

كما هو موضح بالصورة ... كيف يمكن التغلب على هذه المشكلة 

404491761.png

ظهرت عندى نفس المشكله بالصوره 

فهل من مساعده من اخواننا الكرام

 

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information