اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

طلب ظهور رسائل ثم ترحيل البيانات للخلايا المحدده


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

السلام عليكم

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

واستأذنكم في وضع المشاركة مرة اخرى حتى يتم تحديد الخطاء ليتم تصحيحه

شاكرالكم مقدما اهتمامكم

المشاركة هي

السلام عليكم

اخواني لدي مشكلة صغيره ..... وانا واثق ان لديكم الحل (( بإذن الله ))

المشكلة هي :

لدي عمود به رقم الموظف وعمود به الأسماء ( 20 اسماً فرضاً )

ولدي 12 عمود يمثل كل عمود شهر من اشهر السنة

اريد ادخال المبلغ الذي حصله كل موظف امام الخلية التي تمثل الشهر....... ولكن

اريد رسالة ادخال تطلب رقم الموظف

ورسالة ادخال الشهر ( رقم )

ورسالة ادخال المبلغ

ليتم وضع المبلغ في الخلية التي تشير الى الموظف مع الشهر المدخل

ولكم خالص الشكر والتقدير

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

السلام عليكم ...

هذا الكود و المدخلات جميعها أرقام (كما طلبت) :

Sub Salary()
Dim NumberEmployee As Long
Dim NumberMonth As Integer
Dim Salary As Double
NumberEmployee = Application.InputBox(prompt:="أدخل رقم الموظف", Title:="رقم الموظف", Type:=1)
NumberMonth = Application.InputBox(prompt:="أدخل رقم الشهر", Title:="رقم الشهر", Type:=1)
Salary = Application.InputBox(prompt:="أدخل قيمة الراتب", Title:="الراتب", Type:=1)
If NumberEmployee = False Or NumberMonth = False Or Salary = False Then
 Exit Sub
Else
 Set Employee = Sheets("Sheet1").Range("A1:A100").Find(NumberEmployee)
 Sheets("Sheet1").Cells(Employee.Row, NumberMonth + 2).Value = Salary
End If
End Sub

ولكن انتبه للملاحظات التالية :

- لقد وضعت مجال أرقام الموظفين A1:A100 ، ويمكنك تغييره كما تشاء (في السطر العاشر من الكود).

- لقد اعتبرت أن الأشهر تبدأ من العامود الثالث ، ويمكنك تغييره (في العامود 11 من الكود) بتعديل الرقم 2 (و الذي يمثل عدد الأعمدة الموجودة أمام عامود أول شهر) إلى أي رقم آخر.

- في حال تطابق رقمي موظفين ، يقوم الاكسل بإسناد الراتب لأول موظف يجده ؛ أنصحك هنا باستخدام قاعدة التحقق من الصحة Validation من إجل تفادي هذه الإشكالية.

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

السلام عليكم ...

عندي صديق يقول لي أن لغة البرمجة يمكنها عمل أي شيئ :d

على أية حال وبغض النظر عن قناعتي بمقولة صديقي ، فإنه يمكنك فعل ذلك بتغيير بسيط في الكود :

Sub Salary()
Dim NameEmployee As String
Dim NumberMonth As Integer
Dim Salary As Double
NameEmployee = Application.InputBox(prompt:="أدخل اسم الموظف", Title:="اسم الموظف", Type:=2)
NumberMonth = Application.InputBox(prompt:="أدخل رقم الشهر", Title:="رقم الشهر", Type:=1)
Salary = Application.InputBox(prompt:="أدخل قيمة الراتب", Title:="الراتب", Type:=1)
If NameEmployee = "False" Or NumberMonth = False Or Salary = False Then
 Exit Sub
Else
 Set Employee = Sheets("Sheet1").Range("B1:B100").Find(NameEmployee)
 Sheets("Sheet1").Cells(Employee.Row, NumberMonth + 2).Value = Salary
End If
End Sub

ملاحظة : افترضت أن أسماء الطلاب موجودة في العامود الثاني

بالتوفيق :fff:

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

اشكرك اخي الكريم

ولي طلب اذا تكرمت

حتى تصبح عملية الإدخال اكثر دقة

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

10 و 15 مثلاً

يظهر رسالة خطأ اذا كان قم الشهر لايساوي الرقم الموجود في الخلية B2 مثلاً

يظهر رسالة خطأ اذا كان الراتب لايساوي 1000 أو 2000

وشكر لك اولاً واخراً ...... وبارك الله في علمك

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

السلام عليكم ...

تفضل الكود :

Sub Salary()
Dim NumberEmployee As Long
Dim NumberMonth As Integer
Dim Salary As Double
NumberEmployee = Application.InputBox(prompt:="أدخل رقم الموظف", Title:="رقم الموظف", Type:=1)
NumberMonth = Application.InputBox(prompt:="أدخل رقم الشهر", Title:="رقم الشهر", Type:=1)
Salary = Application.InputBox(prompt:="أدخل قيمة الراتب", Title:="الراتب", Type:=1)
If NumberEmployee = False Or NumberMonth = False Or Salary = False Then
  Exit Sub
ElseIf NumberEmployee < 10 Or NumberEmployee > 15 Then
  MsgBox prompt:="رقم الموظف يجب أن يكون أكبر أو يساوي 10 و أصغر أو يساوي  15", Title:="خطأ"
  Exit Sub
ElseIf NumberMonth <> Sheets("Sheet1").Range("B2").Value Then
  MsgBox prompt:="رقم الشهر يجب أن يساوي الرقم الموجود في الخلية B2", Title:="خطأ"
  Exit Sub
ElseIf Salary <> 100 And Salary <> 200 Then
  MsgBox prompt:=" الراتب يجب أن يكون إما 100 أو 200", Title:="خطأ"
  Exit Sub
Else
  Set Employee = Sheets("Sheet1").Range("A1:A100").Find(NumberEmployee)
  Sheets("Sheet1").Cells(Employee.Row, NumberMonth + 2).Value = Salary
End If
End Sub

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

اشكرك اخي الكريم شكراً جزيلاً

الكود يعمل على مايرام (y)

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

السطر التالي

Set Employee = Sheets("Sheet1").Range("A1:A100").Find(NumberEmployee)

حسب مافهمت منه

انه يلتقط الرقم المدخل NumberEmployee ليضعه في السطر الذي يليه

سؤالي هل يمكن عمل نفس الشئ مع رقم الشهر ( العمود )

اسمح لي ان اوضح اكثر

افرض ان ارقام الأشهر غير مرتبة ( الشهر رقم 5 موجود مكان الشهر 1 مثلا )

واردت ادخال الراتب في الشهر 5

هل يمكنني كتابة رقم 5 فقط اذا طلب ادخال رقم الشهر كم نفعل مع الصفوف

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

ارجو ان يكون السؤال واضح :pp:

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

السلام عليكم ...

الكود التالي يبحث عن رقم الشهر في المجال A1:N1 :

Sub Salary()
Dim NumberEmployee As Long
Dim NumberMonth As Integer
Dim Salary As Double
NumberEmployee = Application.InputBox(prompt:="أدخل رقم الموظف", Title:="رقم الموظف", Type:=1)
NumberMonth = Application.InputBox(prompt:="أدخل رقم الشهر", Title:="رقم الشهر", Type:=1)
Salary = Application.InputBox(prompt:="أدخل قيمة الراتب", Title:="الراتب", Type:=1)
If NumberEmployee = False Or NumberMonth = False Or Salary = False Then
  Exit Sub
ElseIf NumberEmployee < 10 Or NumberEmployee > 15 Then
  MsgBox prompt:="رقم الموظف يجب أن يكون أكبر أو يساوي 10 و أصغر أو يساوي  15", Title:="خطأ"
  Exit Sub
ElseIf NumberMonth <> Sheets("Sheet1").Range("B2").Value Then
  MsgBox prompt:="رقم الشهر يجب أن يساوي الرقم الموجود في الخلية B2", Title:="خطأ"
  Exit Sub
ElseIf Salary <> 100 And Salary <> 200 Then
  MsgBox prompt:=" الراتب يجب أن يكون إما 100 أو 200", Title:="خطأ"
  Exit Sub
Else
 Set VMonth = Sheets("Sheet1").Range("A1:N1").Find(NumberMonth)
 Set Employee = Sheets("Sheet1").Range("A1:A100").Find(NumberEmployee)
 Sheets("Sheet1").Cells(Employee.Row, VMonth.Column).Value = Salary
End If
End Sub

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

شاكر لك اخي محمد :fff: (y) الكود يعمل بشكل صحيح

:d

ولكن الأفكار تتوالد يوم بعد يوم :( كلي امل ان يتسع لها ولنا صدرك الرحب

يالله قل وش تبي .......

ابشر اخوي محمد

اريد كرماً لا امرا

تذكر معي ان الأعمد الموجودة هي عمود لرقم الموظف ثم عمود لإسم الموظف ثم مجموعة من الأعمدة للشهور ...... طيب وش المطلوب

المطلوب اظهار رسالة ( للتأكد ) تبين اسم الموظف الذي ادخلنا له البيانات ، فإذا كان الأسم مطابق لرقم الموظف يتم وضع الراتب والاخروج او يتم الإدخال من جديد

ولك خالص الشكر والعرفان :rol:

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

السلام عليكم ...

الكود :

Sub Salary()
Dim NumberEmployee As Long
Dim NumberMonth As Integer
Dim Salary As Double
Dim Result As Integer
NumberEmployee = Application.InputBox(prompt:="أدخل رقم الموظف", Title:="رقم الموظف", Type:=1)
NumberMonth = Application.InputBox(prompt:="أدخل رقم الشهر", Title:="رقم الشهر", Type:=1)
Salary = Application.InputBox(prompt:="أدخل قيمة الراتب", Title:="الراتب", Type:=1)
If NumberEmployee = False Or NumberMonth = False Or Salary = False Then
  Exit Sub
ElseIf NumberEmployee < 10 Or NumberEmployee > 15 Then
  MsgBox prompt:="رقم الموظف يجب أن يكون أكبر أو يساوي 10 و أصغر أو يساوي  15", Title:="خطأ"
  Exit Sub
ElseIf NumberMonth <> Sheets("Sheet1").Range("B2").Value Then
  MsgBox prompt:="رقم الشهر يجب أن يساوي الرقم الموجود في الخلية B2", Title:="خطأ"
  Exit Sub
ElseIf Salary <> 100 And Salary <> 200 Then
  MsgBox prompt:=" الراتب يجب أن يكون إما 100 أو 200", Title:="خطأ"
  Exit Sub
Else
 Set VMonth = Sheets("Sheet1").Range("A1:N1").Find(NumberMonth)
 Set Employee = Sheets("Sheet1").Range("A1:A100").Find(NumberEmployee)
 Result = MsgBox("الموظف هو " & Sheets("Sheet1").Cells(Employee.Row, 2).Value, vbYesNo, "الموظف الناتج عن البحث")
 If Result = vbYes Then
  Sheets("Sheet1").Cells(Employee.Row, VMonth.Column).Value = Salary
 End If
End If
End Sub

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

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

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

Important Information