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

تعديل محرك البحث عن السلعة


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

السلام عليكم 

اللهم صلي على محمد وال محمد 

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

وتمنياتي لكم بالموفقية

واشكر جميع الأعضاء والمشرفين الكرام 

 

 

فاتورة مبيعات مميزه 3 (1).xlsm

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

طبعا تفضل اخي الكريم بحث متطور ـ بحيث انك تبحث من أي حرف في البيانات ليس فقط بداية البيانات 🙂 

وهذا هو الكود المستخدم :

Private Sub Find_T()
    Dim ws As Worksheet
    Dim searchRange As Range
    Dim cell As Range
    Dim searchText As String
    Dim rowValues As Variant
    Dim i As Integer
    Dim j As Integer
    Dim dict As Object
    Dim rowKey As String
    Dim numCols As Integer
    Dim columnWidths As String
    Dim tempList As Collection
    Dim finalList() As Variant
    Dim rowCount As Integer
    Dim rowHeight As Integer
    Dim maxVisibleRows As Integer
    Dim listBoxHeight As Integer
    Dim maxListBoxHeight As Integer

    ' تعيين ارتفاع الصف الواحد (يمكنك تعديله حسب الحاجة)
    rowHeight = 15

    ' الحصول على النص الذي تم إدخاله في ComboBox
    searchText = Trim(CM_TextFind.Text)

    ' إذا كان النص فارغًا، اجعل الـ ListBox غير مرئي واخرج من الدالة
    If Len(searchText) = 0 Then
        Me.CM_ListFind.Visible = False
        Exit Sub
    End If

    ' إعداد معجم لتخزين الصفوف المضافة وتجنب التكرار
    Set dict = CreateObject("Scripting.Dictionary")
    Set tempList = New Collection

    ' تحديد ورقة العمل ونطاق البحث
    Set ws = ThisWorkbook.Sheets("Sheet2") ' غيّر اسم الورقة إذا لزم الأمر
    Set searchRange = ws.Range("b2:c1000") ' غيّر النطاق بناءً على بياناتك

    ' مسح محتويات ListBox
    CM_ListFind.Clear

    ' تحديد عدد الأعمدة في ListBox بناءً على نطاق البيانات
    numCols = searchRange.Columns.Count
    CM_ListFind.ColumnCount = numCols

    ' تعيين عرض الأعمدة
    columnWidths = Join(Application.Transpose(Application.Transpose(Array(100, 20))), ";")
    CM_ListFind.columnWidths = columnWidths

    ' البحث عن النص في كل خلية بالنطاق وإضافة الصفوف المتطابقة إلى Collection
    For Each cell In searchRange.Rows
        If Len(searchText) > 0 Then
            rowValues = cell.Value
            rowKey = Join(Application.Index(rowValues, 1, 0), Chr(0))
            
            ' تحقق من وجود النص في أي خلية من الصف
            For i = 1 To UBound(rowValues, 2)
                If InStr(1, rowValues(1, i), searchText, vbTextCompare) > 0 Then
                    ' إضافة الصف إلى Collection إذا لم يكن موجودًا بالفعل
                    If Not dict.Exists(rowKey) Then
                        dict.Add rowKey, Nothing
                        
                        ' إضافة الصف إلى Collection
                        tempList.Add rowValues
                    End If
                    Exit For ' لا حاجة للتحقق من باقي الأعمدة في هذا الصف
                End If
            Next i
        End If
    Next cell

    ' تحويل Collection إلى مصفوفة ثنائية الأبعاد
    If tempList.Count > 0 Then
        ReDim finalList(1 To tempList.Count, 1 To numCols)
        rowCount = 0
        For Each rowValues In tempList
            rowCount = rowCount + 1
            For j = 1 To numCols
                finalList(rowCount, j) = rowValues(1, j)
            Next j
        Next rowValues
        
        ' تعيين البيانات من المصفوفة النهائية إلى ListBox
        CM_ListFind.List = finalList

        ' حساب عدد الصفوف القابلة للعرض بناءً على ارتفاع النموذج
        maxVisibleRows = Int(Me.InsideHeight / rowHeight) - 1

        ' تعديل ارتفاع الـ ListBox بناءً على عدد الصفوف
        If tempList.Count < maxVisibleRows Then
            listBoxHeight = tempList.Count * rowHeight
        Else
            listBoxHeight = maxVisibleRows * rowHeight
        End If

        ' تعيين الحد الأقصى لارتفاع الـ ListBox (يمكنك تعديله حسب الحاجة)
        maxListBoxHeight = 300 ' تحديد قيمة مناسبة للارتفاع الأقصى للـ ListBox

        ' التأكد من أن ارتفاع الـ ListBox لا يتجاوز الحد الأقصى
        If listBoxHeight > maxListBoxHeight Then
            listBoxHeight = maxListBoxHeight
        End If

        ' تعيين ارتفاع الـ ListBox
        CM_ListFind.Height = listBoxHeight

        ' التأكد من عرض الـ ListBox
        Me.CM_ListFind.Visible = True
    Else
        ' إذا لم يكن هناك بيانات، اجعل الـ ListBox غير مرئي
        Me.CM_ListFind.Visible = False
    End If

    ' إضافة تأخير بسيط للتأكد من أن البيانات تم تحميلها بشكل كامل
    DoEvents
End Sub

فاتورة مبيعات مميزه 3 (1).xlsm

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

اخي العزيز اشكرك جزيل الشكر على هذا الجهد والأبداع 

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

ممنون منك 

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   1 عضو متواجد الان

×
×
  • اضف...

Important Information