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

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

قام بنشر

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

 

 

2222.rar

قام بنشر

السلام عليكم

 

استاذ سراب ,

 

جرب بدل الاكواد السابقة بهذه الاكواد .

 

ملاحظة : ما زال بطيء نسبيا عند البحث (اعتقد لو استخدم find سيصبح اسرع من loop ) و لكنه اصبح سريع جدا عند الاختيار من الليست بوكس بعد البحث .

Private Sub CommandButton20_Click()

If TextBox35.Text <> "" Then
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "100;0"
lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row
For T = 3 To lastrow
If InStr(Sheet1.Cells(T, 3).Text, TextBox35.Text) > 0 Then
ListBox1.AddItem
ListBox1.List(ListBox1.ListCount - 1, 0) = Sheet1.Cells(T, 3)
ListBox1.List(ListBox1.ListCount - 1, 1) = Sheet1.Cells(T, 3).Row
End If
Next
End If

End Sub

Private Sub ListBox1_Change()

i = ListBox1.List(ListBox1.ListIndex, 1)
For R = 1 To 10
Me.Controls("TextBox" & R).Value = Sheet1.Cells(i, R).Value
Next

End Sub
 

تحياتي

قام بنشر

ألف شكر أستاذ أحمد وبجد مجهودك أكثر من رائع ....

لكن قمت بتبديل الأكواد على قاعدة البيانات الأساسية - وهي أكبر من الفورم بكثير - وعملية البحث كانت تستغرق دقيقة أما بعد فكرتك الاخيرة أصبحت الفترة حوالي عشرون ثانية وهذا جيد ... وبالمناسبة ماذا تعني بعبارة ( اعتقد لو استخدم find سيصبح اسرع من loop )

أرجو ألا أكون مملا أو لحوحا لكن الفورم يأخذ كل تفكيري ...

قام بنشر

السلام عليكم

 

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

Private Sub CommandButton20_Click()
ListBox1.Clear
If TextBox35.Text <> "" Then
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "100;0"
If Application.WorksheetFunction.CountIf(Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row), "*" & TextBox35.Text & "*") > 0 Then
Application.ScreenUpdating = False
Dim arr()
Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="=*" & TextBox35.Text & "*"
ReDim arr(1 To 2, 1 To Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Cells.Count)
For Each c In Range("C3:c" & Range("c" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
arr(1, x + 1) = c.Value
arr(2, x + 1) = c.Row
x = x + 1
Next
[a1].AutoFilter
Application.ScreenUpdating = True
ListBox1.Column = arr
End If
End If
End Sub

Private Sub CommandButton21_Click()
ListBox1.Clear
If TextBox33.Text <> "" Then
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "100;0"
If Application.WorksheetFunction.CountIf(Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row), TextBox33.Text & "*") > 0 Then
Application.ScreenUpdating = False
Dim arr()
Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="=" & TextBox33.Text & "*"
ReDim arr(1 To 2, 1 To Range("C2:c" & Range("c" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible).Cells.Count)
For Each c In Range("C3:c" & Range("c" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
arr(1, x + 1) = c.Value
arr(2, x + 1) = c.Row
x = x + 1
Next
[a1].AutoFilter
Application.ScreenUpdating = True
ListBox1.Column = arr
End If
End If
End Sub

Private Sub ListBox1_Click()
i = ListBox1.List(ListBox1.ListIndex, 1)
For R = 1 To 10
Me.Controls("TextBox" & R).Value = Sheet1.Cells(i, R).Value
Next
End Sub

Private Sub CommandButton19_Click()
i = ListBox1.List(ListBox1.ListIndex, 1)
Cells(i, 1).Select
sama = MsgBox("åá ÊÑíÏ ÇáÐåÇÈ ááÇÓã ÇáãÍÏÏ ÇáÐí ÞãÊ ÈÇÎÊíÇÑå", vbYesNo, "ÑÓÇáÉ ÊÃßíÏ")
If sama = vbYes Then
UserForm1.Hide
Else
Exit Sub
End If
End Sub

تحياتي

  • Like 1
قام بنشر

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

قام بنشر

 

الفورم يعمل بشكل رائع الآن

 

 

حمدا لله 

 

و لا تتردد في اي استفسار مستقبلا 

 

حاول متابعة سلسلة استاذ حمادة عمر (سلسلة خطوة ب خطوة )  ستوفر عليك الكثير مسقبلا في فهم الاكواد .

 

تقبل خالص تحياتي

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information