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

نجوم المشاركات

  1. محمد هشام.

    محمد هشام.

    الخبراء


    • نقاط

      146

    • Posts

      1,214


  2. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      54

    • Posts

      11,894


  3. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      42

    • Posts

      9,814


  4. M.Abd Allah

    M.Abd Allah

    03 عضو مميز


    • نقاط

      39

    • Posts

      137


Popular Content

Showing content with the highest reputation since 20 يون, 2024 in all areas

  1. شرف ليا انى اضيف موضوع وسط اساتذتى https://www.mediafire.com/file/pzr38qxqwg4e2a2/Ferry_Login_v1-_free.accdb/file Ferry Login v1free.accdb
    9 points
  2. السلام عليكم 🙂 هذا الموقع يعطي ترتيب أكثر قواعد بيانات العالم استخداما: https://db-engines.com/en/ranking/relational+dbms والترتيب متغير شهريا ، ففي هذا الشهر: 6/2024 ، يكون ترتيب الاكسس رقم 8 عالميا : . واليكم طريقة تقييمهم للترتيب من: https://db-engines.com/en/ranking_definition وهنا تمت ترجمته آليا الى العربية: جعفر
    6 points
  3. لديك اخطاء في تحديد اسماء الخلايا كما في الصورة المرفقة تم تعديل الكود ليسهل التعامل معه Private Sub CommandButton2_Click() 'بحث Dim WS As Worksheet, F As Worksheet Dim Irow As Long, Clé As String, i As Long Set WS = Sheets("Sheet2"): Set F = Sheets("Sheet1"): Clé = F.[E3] Application.ScreenUpdating = False If Clé = Empty Then: MsgBox "برجاء إدخال اسم للبحث عن بياناته", vbCritical, "فلاح": Exit Sub Irow = WS.Cells(WS.Rows.Count, "B").End(xlUp).Row Set rng = WS.Range("B3:B" & Irow).Find(Clé, LookIn:=xlValues, _ lookat:=xlWhole, SearchDirection:=xlPrevious) If rng Is Nothing Then: MsgBox " الاسم غير موجود", vbExclamation, Clé: Exit Sub For i = 3 To Irow If WS.Cells(i, 2) = Clé Then ' Colmun (D) F.[D5] = WS.Cells(i, "B") F.[D7] = WS.Cells(i, "C"): F.[D9] = WS.Cells(i, "D"): F.[D11] = WS.Cells(i, "E") F.[D13] = WS.Cells(i, "F"): F.[D15] = WS.Cells(i, "G"): F.[D17] = WS.Cells(i, "H") F.[D19] = WS.Cells(i, "I"): F.[D21] = WS.Cells(i, "J"): F.[D23] = WS.Cells(i, "K") ' Colmun (G) F.[G7] = WS.Cells(i, "L"): F.[G9] = WS.Cells(i, "M"): F.[G11] = WS.Cells(i, "N") F.[G13] = WS.Cells(i, "O"): F.[G15] = WS.Cells(i, "P"): F.[G17] = WS.Cells(i, "Q") F.[G19] = WS.Cells(i, "R"): F.[G21] = WS.Cells(i, "S"): F.[G23] = WS.Cells(i, "T") ' Colmun (J) F.[J7] = WS.Cells(i, "U") F.[J9] = WS.Cells(i, "V"): F.[J11] = WS.Cells(i, "W") F.[J13] = WS.Cells(i, "X"): F.[J15] = WS.Cells(i, "Y") End If Next Application.ScreenUpdating = True End Sub مع تعديل كود الترحيل بالشكل التالي Private Sub CommandButton1_Click() ' اظافة Dim WS As Worksheet: Dim F As Worksheet Set WS = Sheets("Sheet1"): Set F = Sheets("Sheet2") Application.ScreenUpdating = False F.Range("B" & F.Rows.Count).End(xlUp).Offset(1).Resize(, _ 24).Value = Application.Index(WS.Range _ ("D5,D7,D9,D11,D13,D15,D17,D19,D21,D23,G7,G9,G11,G13,G15,G17,G19,G21,G23,J7,J9,J11,J13,J15"), _ 1, 1, Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)) With F.Range("A3:A" & F.Cells(Rows.Count, "B").End(xlUp).Row) .Value = Evaluate("ROW(" & .Address & ")-2") End With Lr = F.Range("A65500").End(xlUp).Row b = F.Cells(2, F.Columns.Count).End(xlToLeft).Column F.Range(F.Cells(3, 1), F.Cells(Lr, b)).Borders.Weight = xlThin ' افراغ CommandButton4_Click Application.ScreenUpdating = True MsgBox "تم اضافة البيانات بنجاح" End Sub 123 (1).xlsm
    6 points
  4. اولا شكرا على الهدية ثانيا اسمح لي بإضافة الملف في الموضوع بعد الضغط والاصلاح للملف من خلال الاكسس ... لان ملف الميديا يمكن حذفه بعد فترة من الزمن وسوف يخسر المنتدى هذه الهدية القيمة ..... Ferry Login v1free.accdb
    5 points
  5. اعرض الملف استبدال أسماء كل الملفات فى مجلد بحثت عنه ولم اجده ـ على الرغم اني اذكر اضافته سابقا فاضيفه الان لمن يحتاج مثل هذا الكود 1- استخدم الكود السابق نشره لتوثيق كافة اسماء الملفات فى مجلد مكتبة الموقع - تطبيق لتوثيق قائمة بالمجلدات و الملفات و خصائصها - مفيد جداً او كتب اسماء الملفات الحالية الموجودة فى المجلد المستهدف مباشرة فى العمود B 2 - ثم اكتب فى العمود D اسماء الملفات الجديدة 3- شغل الكود لاستبدال اسماء الملفات ، و اختار المجلد المستهدف Sub RenameMultipleFiles() ' add old file name to column B , and new File name to Col D With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show = -1 Then selectDirectory = .SelectedItems(1) dFileList = Dir(selectDirectory & Application.PathSeparator & "*") Do Until dFileList = "" curRow = 0 On Error Resume Next 'read old file name from column B curRow = Application.Match(dFileList, Range("B:B"), 0) If curRow > 0 Then 'cganeg to new file name from column D Name selectDirectory & Application.PathSeparator & dFileList As _ selectDirectory & Application.PathSeparator & Cells(curRow, "D").Value End If dFileList = Dir Loop End If End With End Sub صاحب الملف محمد طاهر عرفه تمت الاضافه 06 يول, 2024 الاقسام قسم الإكسيل  
    4 points
  6. وعليكم السلام ورحمة الله تعالى وبركاته Option Compare Text Public Property Get F() As Worksheet: Set F = Worksheets("Sheet1") End Property Sub Sort_Category() Dim OneRng As Range Dim lr As Long lr = F.Cells(Rows.Count, "E").End(xlUp).Row Set OneRng = F.Range("A2:L" & lr) With OneRng .Sort Key1:=.Columns(5), Order1:=xlDescending, Header:=xlNo End With End Sub '***************************** Sub Filter_and_create_Sheets() Application.DisplayAlerts = False Application.ScreenUpdating = False F.[w1] = F.[E1] RngA = F.[A1].CurrentRegion.Rows.Count RngB = F.[A1].CurrentRegion.Columns.Count F.[A1].Resize(RngA, RngB).AdvancedFilter Action:=xlFilterCopy, _ CopyToRange:=F.[w1], Unique:=True For Each c In F.Range("W2:W" & F.[W65000].End(xlUp).Row) F.[W2] = c.Value On Error Resume Next Sheets(CStr(c.Value)).Delete On Error GoTo 0 Sheets.Add After:=Sheets(Sheets.Count) Set n = ActiveSheet n.Name = CStr(c.Value) n.DisplayRightToLeft = True F.[A1].Resize(RngA, RngB).AdvancedFilter Action:=xlFilterCopy _ , CriteriaRange:=F.[W1:W2], CopyToRange:=[A1] For r = 1 To 12 n.Cells.EntireRow.AutoFit n.Columns(r).ColumnWidth = F.Columns(r).ColumnWidth Application.ErrorCheckingOptions.NumberAsText = False Next Next c F.Activate End Sub تقرير صف أول 2025.xlsm
    4 points
  7. وعليكم السلام ورحمة الله تعالى وبركاته بطريقة مختلفة Sub CopyRow_Item() Dim i&, j&, n&, cnt&, r&, lr&, a As Boolean Dim arr() As Variant, rCrit As Variant, rng As Variant Dim WS As Worksheet: Set WS = ThisWorkbook.Sheets("قاعدة العملاء") cnt = 2 With WS If [N1] = Empty Then MsgBox "اصحى و اكتب التاريخ", vbExclamation: Exit Sub Application.ScreenUpdating = False lr = .Columns("b:k").Find(What:="*", _ SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row a = True n = 0 rng = .Range("B2:K" & .Range("B" & Rows.Count).End(xlUp).Row).Value cnt = .Cells(.Rows.Count, "AM").End(xlUp).Row ReDim arr(1 To UBound(rng), 1 To UBound(rng, 2)) For i = 1 To UBound(rng) If rng(i, 6) <> "" Or rng(i, 7) <> "" Then a = False n = n + 1 For j = 1 To UBound(rng, 2) arr(n, j) = rng(i, j) Next j End If Next i If n > 0 Then .Range("AM" & cnt + 1).Resize(n, UBound(arr, 2)) = arr cnt = cnt + n For r = 2 To lr Union(.Range("F" & r).Resize(, 2), .Range("I" & r)).ClearContents Next r Application.Goto .Range("AM" & 2), True: [N1] = "" End If End With Application.ScreenUpdating = True If a Then MsgBox "الرجاء إظافـــة التحصيلات", vbExclamation Else MsgBox "الحمد لله - تم ترحيل التحصيلات بنجاح " & vbNewLine & _ " مستر إيهاب الاسوانى", 64 End If End Sub كود ترحيل V3.xlsm
    4 points
  8. اذا كنت قد فهمت طلبك بشكل صحيح فالتعديل التالي سوف يوفي بالغرض Option Compare Text Dim a, i As Long Dim OneRng(), Rng, rCrit1, rCrit2 Dim d As Object, ComboAry As Variant Private Const Cpt As String = "Compte magasin" Private Const tbl As String = "Table1" Dim Crit(), headers(), choix(), colClé, Cnt, Item_Code Private Sub UserForm_Initialize() Dim Irow& Set f = Sheets(Cpt) a = Sheets(Cpt).ListObjects("Table1").DataBodyRange.Columns("A:X") Set d = CreateObject("scripting.dictionary") d.CompareMode = vbTextCompare Irow = f.Columns("I:N").Find(What:="*", SearchDirection:=xlPrevious, _ SearchOrder:=xlByRows).Row Set Cnt = f.Range("G2:N" & Irow): Crit = Cnt.value headers = Application.Index(Cnt.Offset(-1).value, 1) Me.ComboBox10.List = Application.Transpose(f.Range("J1:N1").value) ComboAry = Array("ComboBox1", "ComboBox3", "ComboBox5", _ "ComboBox9", "ComboBox10", "ComboBox13", "ComboBox12") For i = 0 To UBound(ComboAry): Me.Controls(ComboAry(i)).value = "*": Next i '''''''' Code..... ''''''''''''''''''''' End Sub ******************************************************************** Private Sub ComboBox10_Change() Item_Code = Val(Me.ComboBox12): Prices = Me.ComboBox10 If IsNumeric(Me.ComboBox10) Then _ tmp = Val(Me.ComboBox10) Else tmp = Prices colClé = Application.Match(tmp, headers, 0) For i = LBound(Crit) To UBound(Crit) If UCase(Crit(i, 1)) = UCase(Item_Code) And _ Prices <> "*" Then Me.TextBox7.value = Crit(i, colClé) Next i End Sub بيانات فاتورة 3.xlsm
    4 points
  9. الكود بطريقة اخرى مع الشرح لتتمكن من تعديله بما يناسبك Public Sub CopyData2() Dim rCrit() As String: ReDim rCrit(1 To 2): Const SrcRow = "EA" Dim x&, i&, Cnt&, arr&, lr&, lastRow&, Cpt As Long Dim Search_Row As Long, Star_Row As Long, Col As Range Dim rngA As Variant, rngB As Variant, OneRng As Range Dim WS As Worksheet: Set WS = Sheets("cheet4") Dim srcWS As Worksheet: Set srcWS = Sheets("شيت الدور الثاني صف رابع ") ' تحديد صف البداية Star_Row = 16: ' عمود الفلترة Search_Row = 131 'تحديد صف وضع البيانات المرحلة Cnt = 10 With Application .ScreenUpdating = False .Calculation = xlManual lastRow = WS.Range(SrcRow & WS.Rows.Count).End(xlUp).Row lr = srcWS.Columns("C:AP").Find(What:="*", _ SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row 'معايير الفلترة rCrit(1) = "غ": rCrit(2) = "*" & "دور ثان" & "*" 'الاعمدة المرحلة rngA = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _ 28, 40, 52, 64, 76, 88, 100, 112, 116, Search_Row) 'الاعمدة المرحل اليها rngB = Array(3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, _ 15, 18, 21, 24, 27, 30, 33, 36, 39, 42) '("EA")'التحقق من وجود المعايير على عمود arr = Application.Sum _ (Application.IfError(Application.Match(rCrit, WS.Columns(Search_Row), 0), 0)) If arr = 0 Then: MsgBox " المرجوا التحقق من صحة المعايير ", _ vbCritical, "انتباه": Exit Sub 'افراغ البيانات السابقة For x = 0 To UBound(rngB) Set Col = srcWS.Range(srcWS.Cells(Cnt, rngB(x)), srcWS.Cells(lr, rngB(x))) Col.ClearContents Next x With WS If .AutoFilterMode Then .AutoFilterMode = False ' تحديد نطاق البيانات With WS.Range("C15:EA15") .AutoFilter Search_Row - 2, rCrit, xlFilterValues ' نسخ الاعمدة المرئية For i = 0 To UBound(rngA) Set OneRng = WS.Range(WS.Cells(Star_Row, _ rngA(i)), WS.Cells(lastRow, rngA(i))).SpecialCells(xlCellTypeVisible) OneRng.Copy 'لصق البيانات srcWS.Cells(Cnt, rngB(i)).PasteSpecial Paste:=xlPasteValuesAndNumberFormats Next i .AutoFilter End With End With .CutCopyMode = False .Calculation = xlAutomatic .ScreenUpdating = True End With End Sub SAAD V3.xlsm
    4 points
  10. السلام عليكم ورحمة الله وبركاته الموضوع ترفيهي نوعا ما : حنين الى الماضي بصراحة كنت احب هذه اللعبة جدا جدا جدا وانا صغير راودتني فكرة تصميم اللعبة من خلال الاكسس وهذه تجربتي اتمني ان تنال رضاكم PuzzleGame.zip
    4 points
  11. وعليكم السلام ورحمة الله تعالى وبركاته جرب هدا الحل ربما يناسبك Sub CopyRanges() Dim i As Long, a As Long, lr As Long Dim OneRng As Variant, arr As Variant, Irow As Long, C As Long Dim oldData() As Variant, newData() As Variant Dim xlnCalcMethod As XlCalculation Dim WS As Worksheet: Set WS = Sheets("نتيجةت4") Dim f As Worksheet: Set f = Sheets("نتيجة تقييم41") Irow = f.Cells.SpecialCells(xlCellTypeLastCell).Row oldData = Array("غ", "ازرق", "اخضر", "اصفر", "احمر") newData = Array("لم يتقن المعارف", "يفوق التوقعات", "امتلك المعارف والمهارات", "يحتاج لبعض الدعم", "لم يتقن المعارف") a = WS.Columns("E:AE").Find(What:="*", _ SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row With Application xlnCalcMethod = .Calculation .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False f.Range("E11:R" & f.Rows.Count).ClearContents OneRng = Array("F13:F" & a, "H13:H" & a, "J13:J" & a, "l13:l" & a, "N13:N" & a, "P13:P" & a, _ "R13:R" & a, "U13:U" & a, "W13:W" & a, "Y13:Y" & a, "AA13:AA" & a, "AC13:AC" & a, "AE13:AE" & a) arr = Array("E11", "F11", "G11", "H11", "I11", "J11", "K11", "L11", "M11", "N11", "O11", "P11", "Q11") For i = 0 To UBound(OneRng) WS.Range(OneRng(i)).Copy f.Range(arr(i)).PasteSpecial xlPasteValues Application.CutCopyMode = False Next lr = f.Columns("E:Q").Find(What:="*", _ SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row Set Rng = f.Range("E11:Q" & lr) For C = LBound(oldData) To UBound(oldData) Rng.Replace oldData(C), newData(C), xlWhole, , , , False, False Next With f.Range("R11:R" & lr) .Formula = "=IF(" & WS.Name & "!F13="""",""""," & WS.Name & "!AF13)" .Value = .Value End With .Calculation = xlnCalcMethod .EnableEvents = True .ScreenUpdating = True End With End Sub تحويل الى كود V2.xlsm
    4 points
  12. وعليكم السلام ورحمة الله تعالى وبركاته جرب هدا Private Sub CommandButton1_Click() Sum = Evaluate("=SUMIFS(F3:F100000,B3:B100000,"">=""&I2,B3:B100000,""<=""&j2)") Me.TextBox1.Value = Format(Sum, "#,##0.0") End Sub sumif.xlsm
    4 points
  13. الاكسيس والموبايل استحالة التوافق بينهما مهما حاولت فلا تتعب نفسك ابحث عن لغة اخرى
    3 points
  14. اسف انا لسه واخد بالى انه سؤال يشبه التحدى انا قولت دعوة للتطوير ويل مع بعض نطوره واتعلم منكم اكتر lمرفق تعديل للتنسيق اعتقد ظبط شوية ونطوره برضه مع بعض Gemini API.rar
    3 points
  15. انا لم اجرب بعد 2 اقترح اضافة صندوق نص و كود استبدال نجمة "*" بسطر جديد يسحب النص الى نص بسطر جديد للتنسيق
    3 points
  16. اخي هدا طلب مختلف لا علاقة له بهدا الموضوع حاول فتح موضوع جديد بطلبك مع مزيدا من التوضيح او ارفاق عينة للنتائج المتوقعة وان شاء الله سنحاول مساعدتك
    3 points
  17. الله ينور عليك يا عبقرينو 😊😊 مش بقولك بتذاكر من ورانا
    3 points
  18. وعليكم السلام ورحمة الله تعالى وبركاته اولا اشكرك استاد فوزي على هده الكلمات الطيبة هدا شرف وفخر انوله منك ووفقنا الله واياكم لما يحب ويرضى تفضل اخي جرب هدا Option Explicit Sub Delete_tables() Dim ws As Worksheet Dim i As Long, lr As Long, r As Range, j As Long Set ws = Worksheets("كشف الطباعة") Application.ScreenUpdating = False Set r = [H1] With ws lr = .Cells(.Rows.Count, "a").End(xlUp).Row j = r * 35 For i = j To lr If Range("a" & i) > j Then .Range(ws.Cells(j, "A"), .Cells(lr, "E")).Clear End If Next i End With Application.ScreenUpdating = True End Sub حذف الجداول v2.xlsm
    3 points
  19. وعليكم السلام 🙂 الفرز يجب ان يكون عن طريق حقل المعرف. الاستعلام: . والدالة في الوحدة النمطية: Function Concat(PR As Double) Dim rst As Recordset Dim i As Long, RC As Long Set rst = CurrentDb.OpenRecordset("select [Category] From PRindex Where [PuReq]=" & PR & " Order by [المعرف]") rst.MoveLast: rst.MoveFirst: RC = rst.RecordCount For i = 1 To RC Concat = Concat & "," & rst!Category rst.MoveNext Next i Concat = Mid(Concat, 2) rst.Close: Set rst = Nothing End Function . والنتيجة: 1617.PRindex.accdb.zip
    3 points
  20. السلام عليكم ورحمة الله أخي الفاضل (موسى) اسمح لي بشرح الفكرة نيابة عن أخي الخبير (ابو خليل) كان طلبي هو أن يتم طباعة كلمة (مستجد) و (دمج) و (قرار) بنفس هذا الترتيب ولكن الاكسس يقوم بترتيبهم ابجديا فيقوم بطباعة دمج أولا ثم دمج ثم قرار وللتحايل على هذا الأمر قام أخي (ابو خليل) بعمل جدول وقام بإسناد رقم ID للكلمات الثلاث بالترتيب (مستجد) 1 (دمج) 2 (قرار) 3 ثم قام بعمل استعلام داخل property sheet في قسم Row Source ليقوم التقرير بعرضهم بالترتيب حسب رقم ID متجاوزا بذلك الترتيب الأبجدي للأكسس ثم يقوم مربع النص المسمى (الحالة) في التقرير بأخذ النص أو الكلمات (مستجد) و (دمج) و (قرار) بترتيب ID ثم يقوم التقرير بتكرار الكلمات الثلاث في كل صفحاته لأن مربع النص المسمى (الحالة) موضوع في (الحالة Hader) وأي نص يوضع في شريط مكتوب عليه (Hader) أو رأس في التقرير سيقوم التقرير بتكراره في كل الصفحات. كيف يعرف التقرير أين يضع الكلمات (مستجد) و (دمج) و (قرار)؟ يتم ذلك عن طريق من حقل الحالة في الجدول المسمى (الرقمية) حيث يقوم التقرير بعمل مجموعة وفرز عل الجدول ليضع كل حالة أمام الكلمات (مستجد) و (دمج) و (قرار) الخاصة بها. أرجو أن أكون قد أوضحت قدر الإمكان وشكراً لكم جميعاً.
    3 points
  21. اليك طريقة متبعة غالبا عند تصميم قواعد البيانات 3.rar
    3 points
  22. شكراً لك أخي الحبيب @ahmed draz على لطفك وكلماتك الطيبة .. المنتدى عامر بالمحبة الموصولة بين أعضائه 🥰 . ونتمنى أن نكون عند حسن الظن 💐
    3 points
  23. وعليكم السلام ورحمة الله وبركاته أكواد VBA لا تعمل على الجوال لأن الجوال لا يدعم تشغيل برامج Excel التي تحتوي على VBA
    3 points
  24. تعديل مرفق استاذ @Foksh 😇 1- ان شاء كود لكافة عناصر الفورم فقط اختيار النموذج 2- يفتح حدث الفورم فقط لصق ctrl +V ملاحظة فقط اضافة حدث عند الفتح حتى لو كان فارغ admin.rar
    3 points
  25. Sub RemoveChars() Dim lr&, Cel As Range, A As String, r As Range lr = Cells(Rows.Count, "b").End(xlUp).Row Application.ScreenUpdating = False Set r = Range("b2:b" & lr) For Each Cel In r A = Replace(Cel.Value, ",", " ") Cel.Value = A Next Cel Application.ScreenUpdating = True End Sub
    3 points
  26. وعليكم السلام ورحمة الله وبركاته تفضل =SUBSTITUTE(B2;",";" ")
    3 points
  27. ما الغرض من فك حماية جميع اوراق العمل لتقوم بافراغ الخلايا المحددة على ورقة عمل واحدة جرب هدا Sub Protect() Dim x As Worksheet Set x = ActiveSheet Application.ScreenUpdating = False x.Unprotect "bac20022002" With Selection .ClearContents End With x.Protect "bac20022002" Application.ScreenUpdating = True End Sub
    3 points
  28. بطريقة اخرى Option Compare Text Public Property Get F() As Worksheet: Set F = Worksheets("12 د بنون") End Property Public Property Get lr() As Long: lr = F.Columns("C:J").Find(What:="*", _ SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row End Property Sub Sort_Names() 'ترتيب ابجدي Dim OneRng As Range Set OneRng = F.Range("C11:J" & lr) With OneRng .Sort Key1:=.Columns(1), Order1:=xlAscending, Header:=xlNo End With End Sub '*********** Sub Sort_TOTAL() 'ترتيب تنازلي Dim OneRng As Range Set OneRng = F.Range("C11:J" & lr) With OneRng .Sort Key1:=.Columns(7), Order1:=xlDescending, Header:=xlNo End With End Sub '********* Sub Sort_TOTAL2() 'ترتيب تصاعدي Dim OneRng As Range Set OneRng = F.Range("C11:J" & lr) With OneRng .Sort Key1:=.Columns(7), Order1:=xlAscending, Header:=xlNo End With End Sub فرز Final.xlsb
    3 points
  29. تفضل اخي @محمد زيدان2024 تم تعديل الاكواد لتتناسب مع طلبك Option Compare Text Public Property Get f() As Worksheet: Set f = Worksheets("12 د بنون") End Property '================29/06/2024 by:MOHAMEED HICHAM www.officena.net "منتدى الاكسيل" ' '=========================================================================================== Sub TriTotal_Descending_Order() 'ترتيب تنازلي Dim a() Dim r As Range a = f.Range("C11:J" & f.[C65000].End(xlUp).Row).Value Set r = f.Range("C11:J" & f.[C65000].End(xlUp).Row) ' تحديد نطاق معين 'a = [C11:J38].Value: Set r = [C11:J38] ' <<=======عمود المجموع======== Call Quick(a(), LBound(a), _ UBound(a), 7, False): r.Value2 = a End Sub '**********فرز سريع************* Sub Quick(a(), gauc, droi, Cnt, ordre) Total = a((gauc + droi) \ 2, Cnt) Rng = gauc: d = droi Do If ordre Then Do While a(Rng, Cnt) < Total: Rng = Rng + 1: Loop Do While Total < a(d, Cnt): d = d - 1: Loop Else Do While a(Rng, Cnt) > Total: Rng = Rng + 1: Loop Do While Total > a(d, Cnt): d = d - 1: Loop End If If Rng <= d Then For i = LBound(a, 2) To UBound(a, 2) temp = a(Rng, i): a(Rng, i) = a(d, i): a(d, i) = temp Next i Rng = Rng + 1: d = d - 1 End If Loop While Rng <= d If Rng < droi Then Call Quick(a, Rng, droi, Cnt, ordre) If gauc < d Then Call Quick(a, gauc, d, Cnt, ordre) End Sub '************************************ Sub Tri_Colmun_Name() 'ترتيب ابجدي Dim clé() As String, index() As Long, Rng As Range a = f.Range("C11:J" & f.[C65000].End(xlUp).Row).Value Dim b(): Set Rng = f.[C11] ReDim b(LBound(a) To UBound(a), LBound(a, 2) To UBound(a, 2)) Set rCrit = CreateObject("System.Collections.Sortedlist") For i = LBound(a) To UBound(a) rCrit.Add a(i, 1) & i, i Next i For tmp = LBound(a) To UBound(a) For arr = LBound(a, 2) To UBound(a, 2) b(tmp, arr) = a(rCrit.GetByIndex(tmp - 1), arr) Next arr Next tmp Rng.Resize(UBound(b), UBound(b, 2)).Value2 = b End Sub '************************************* Sub Tri_Total_Colmun() 'ترتيب تصاعدي Dim clé() As String, index() As Long, Rng As Range a = f.Range("C11:J" & f.[C65000].End(xlUp).Row).Value Dim b(): Set Rng = f.[C11] ReDim b(LBound(a) To UBound(a), LBound(a, 2) To UBound(a, 2)) Set rCrit = CreateObject("System.Collections.Sortedlist") For i = LBound(a) To UBound(a) rCrit.Add a(i, 7) & i, i Next i For tmp = LBound(a) To UBound(a) For arr = LBound(a, 2) To UBound(a, 2) b(tmp, arr) = a(rCrit.GetByIndex(tmp - 1), arr) Next arr Next tmp Rng.Resize(UBound(b), UBound(b, 2)).Value2 = b End Sub فرز V3.xlsb
    3 points
  30. لا لوم عليك اخي عبداللطيف كلام الأخ في الفيدو ( قرقرة) ليس لها معنى ، حتى انه هو بنفسه اعترف ان البرنامج الوسيط لم يعمل شيئا وايضا استيراد الكائنات الى قاعدة جديدة استرسال في الجهل وفي ايصال معلومة خاطئة ..... الحل الصحيح هو تفعيل الشيفت من خارج قاعدة البيانات .. وفي منتدانا الكثير من البرامج تقدم هذه الخدمة .. واكيد لا يخفى عليك هذا . حينها يمكنك الدخول الى تصميم قاعدة البيانات وتعديل ما تريد . ملحوظة .. ذهاب الأخ الى جدول اليوزر للاطلاع على اسم المستخدم وكلمة المرور خطوة غبية .. غالبا المبرمج المحترف يقوم بتشفير الحقول حتى لا يتمكن احد من قراءتها
    3 points
  31. ولكن الظاهر في الفيديو هو الدخول للبرنامج لنفترض ان المرفق قاعدة بيانات اكسس حقيقية ، وليست مجرد تسمية امتداد .. لانه كل ملف تضع له امتداد اي تطبيق تظهر صورة التطبيق على الملف اولا .. الملف تالف لا يوجد به كائنات الكلمة الصحيحة الوحيدة التي تم العثور عليها هي Standard Jet DB ...................................................................... ولكن هذا ليس محل نقاشنا انت تتكلم في الفيديو عن كسر حماية الدخول للبرنامج في قاعدة بيانات اكسس accdb وانه لا يمكن استيراد الكائنات الا بعد الكسر فالمفترض انك تضع مثالك الذي عرضته في الفيديو قبل معالجته وكسره .. لنحاول معك الاستيراد بدون وسيط
    3 points
  32. ادن يجب الحصول على ترابط 3 عناصر combobox 10 / 12 / 13 '**** **** A New Addition ************ Private Sub ComboBox10_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 4)) = UCase(ComboBox12.value) And _ UCase(a(i, 5)) = UCase(ComboBox13.value) Then ' قائمة عمود السعر d(a(i, 10)) = "*": ComboBox10.List = d.keys 'جلب قيمة عمود سعر التجزئة Me.TextBox7.value = a(i, 14) End If Next End Sub '**** Replacing ******** Private Sub ComboBox12_Change() ComboBox13.value = "*" ComboBox10.value = "*" Me.TextBox7.value = "*" End Sub "===Just a possibility=========== 'لجلب السعر 'If Me.ComboBox10.value <> "*" Then _ 'Me.TextBox7.value = Me.ComboBox10.value End Sub اليك الملف بعد اظافة الاكواد بيانات فاتورة2.xlsm
    3 points
  33. اخي بما انك تريد انشاء قاعدة بيانات لتعبئة عناصر اليوزرفورم بشكل ديناميكي ومترابط اسهل طريقة بالنسبة لك هي انشاء جدول على ورقة Compte magasin يتضمن جميع الاعمدة المرغوب الاشتغال عليها مع حدف جميع الاعمدة الفارغة وتسميته مثلا ب Table1 واستبدال الاكواد الموجودة على النمودج لديك بالكود التالي شكل الملف بعد التعديل '24/06/2024 by:MOHAMEED HICHAM www.officena.net "منتدى الاكسيل" ' Dim a, i As Long Dim d As Object, ComboAry As Variant Private Const Cpt As String = "Compte magasin" Private Const tbl As String = "Table1" Private Sub UserForm_Initialize() a = Sheets(Cpt).ListObjects("Table1").DataBodyRange.Columns("A:X") Set d = CreateObject("scripting.dictionary") d.CompareMode = vbTextCompare ComboAry = Array("ComboBox1", "ComboBox3", "ComboBox5", "ComboBox9", "ComboBox12") For i = 0 To UBound(ComboAry): Me.Controls(ComboAry(i)).value = "*": Next i End Sub Private Sub ComboBox1_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) d(a(i, 2)) = "*" Next ComboBox1.List = d.keys End Sub Private Sub ComboBox2_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 2)) = UCase(ComboBox1.value) Then d(a(i, 3)) = "*" Next ComboBox2.List = d.keys End Sub Private Sub ComboBox3_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) d(a(i, 21)) = "*" Next ComboBox3.List = d.keys End Sub Private Sub ComboBox4_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 21)) = UCase(ComboBox3.value) Then d(a(i, 22)) = "*" Next ComboBox4.List = d.keys End Sub Private Sub ComboBox5_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) d(a(i, 23)) = "*" Next ComboBox5.List = d.keys End Sub Private Sub ComboBox11_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 23)) = UCase(ComboBox5.value) Then d(a(i, 24)) = "*" Next ComboBox11.List = d.keys End Sub Private Sub ComboBox9_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) d(a(i, 19)) = "*" Next ComboBox9.List = d.keys End Sub Private Sub ComboBox8_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 19)) = UCase(ComboBox9.value) Then d(a(i, 18)) = "*" Next ComboBox8.List = d.keys End Sub Private Sub ComboBox12_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) d(a(i, 4)) = "*" Next ComboBox12.List = d.keys End Sub Private Sub ComboBox13_DropButtonClick() Dim i As Long d.RemoveAll For i = LBound(a) To UBound(a) If UCase(a(i, 4)) = UCase(ComboBox12.value) Then d(a(i, 5)) = "*" Next ComboBox13.List = d.keys End Sub '************************* Private Sub ComboBox1_Change() ComboBox2.value = "*" End Sub Private Sub ComboBox3_Change() ComboBox4.value = "*" End Sub Private Sub ComboBox5_Change() ComboBox11.value = "*" End Sub Private Sub ComboBox9_Change() ComboBox8.value = "*" End Sub Private Sub ComboBox12_Change() ComboBox13.value = "*" End Sub
    3 points
  34. السلام عليكم ورحمة الله تعالى وبركاته جرب هدا =IFERROR(INDEX(اجمالي6!$A$4:$A$600;AGGREGATE(15;6;ROW(اجمالي6!$A$1:$A$600)/(اجمالي6!$AH$4:$AH$600="ذكر")/(اجمالي6!$AE$4:$AE$600="ناجح ومنقول للصف الأول الاعدادي");ROW(اجمالي6!A1));1);"") TEST.xlsx
    3 points
  35. السلام عليكم ورحمة الله تعالى وبركاته عارف ان الموضوع قديم وانا كنت قلت عاوز لها روقان واحلى سطل شاى وللاسف كان عندى مشكلة فى الشاى وبمجرد حل المشكلة عدت اليكم سريعا شوفوا انا بصراحة كنت بدأت في التصميم ولا اعرف سبب انشغالي واليوم وانا ابحث عن شيء في حاسوبي وجدت المرفق وتذكرت الموضوع وقررت ان اكمل ما بدأته أعجبتني أفكار الأستاذ @Moosak وختامها مسك طبعا ابهرني أستاذي الجليل ومعلمي القدير الأستاذ @أبو إبراهيم الغامدي ساحر ربط الاكس بلغة الـ HTML وأخيرا أفكاري المتواضعة OfficenaPattern.accdb
    3 points
  36. يسعدنا اننا استطعنا مساعدتك ادن اليك حل اخر في حالة عدم الرغبة باستخدام المعادلات Sub ExtractFromText2() Dim arr() As String, Cell As Range, i As Integer, lr& Set WS = Sheets("ATIF") Application.ScreenUpdating = False WS.Range("b2:C" & WS.Rows.Count).ClearContents lr = WS.Cells(Rows.Count, "A").End(xlUp).Row For Each Cell In Range("A2:A" & lr) arr = Split(Trim(Cell), "-") If UBound(arr) <> 0 Then For i = 0 To UBound(arr) Cell.Offset(, i + 1) = arr(i) Next End If Next Application.ScreenUpdating = True End Sub '*********OR*********** Sub ExtractFromText3() Dim r As Range, lr& Set WS = Sheets("ATIF") Application.ScreenUpdating = False With WS .Range("B2:C" & .Rows.Count).ClearContents lr = .Cells(Rows.Count, "A").End(xlUp).Row For Each r In Range("A2:A" & lr) .Range(r.Offset(0, 1), r.Offset(0, 2)).Value = Split(r, "-") Next r End With Application.ScreenUpdating = True End Sub
    3 points
  37. السلام عليكم ورحمة الله. اولا سامحوني على الأسئلة الكتير اللي بسالها لكم. وسامحوني اني قصرت معكم بعدم الضغط على أفضل مشاركة مع العلم انني لم أعرف هذا من قبل. انا كنت فاكر اني لما ارد بس على المشكلة انها تمت، انها كده أفضل مشاركة. وربنا يزيدكم من علمه وفضله لكل أساتذة الموقع كامل ويقويكم ويعينكم على خدمة الناس. واخيرا السموحة للاساتذة الكرام لكل موقع أوفيسنا.
    3 points
  38. تفاديا للاخطاء لا تنسى تغديل السطر الخاص بافراغ البيانات السابقة الى f.Range("D11:R" & f.Rows.Count).ClearContents
    3 points
  39. يسعدنا اننا استطعنا مساعدتك
    3 points
  40. اخي الكريم المسالة سهلة يكفي تحديد العمود المرغوب نسخ بياناته في السطر الاول مع تحديد خلية بداية اللصق في السطر الثاني ' Sheets("نتيجةت4")اسماء الاعمدة المرغوب ترحيلها OneRng = Array("F13:F" & a, "H13:H" & a, "J13:J" & a, "l13:l" & a, "N13:N" & a, "P13:P" & a, _ "R13:R" & a, "U13:U" & a, "W13:W" & a, "Y13:Y" & a, "AA13:AA" & a, "AC13:AC" & a, "AE13:AE" & a, _ "A13:A" & a) '<=======عمود المسلسل======== ' خلية اللصق Sheets("نتيجة تقييم41") arr = Array("E11", "F11", "G11", "H11", "I11", "J11", "K11", "L11", "M11", "N11", "O11", "P11", "Q11", _ "D11")'<=====اول خلية على عمود تاريخ الميلاد======== تحويل الى كود V3.xlsm
    3 points
  41. يمكنك اظافة اسم ورقة العمل داخل الكود بهدا الشكل Private Sub CommandButton1_Click() Dim sh As Worksheet Set sh = Sheets("Sheet1") Sum = Evaluate("=SUMIFS(" & sh.Name & "!F3:F100000," & _ sh.Name & "!B3:B100000,"">=""&" & sh.Name & "!I2,B3:B100000,""<=""&" & sh.Name & "!j2)") Me.TextBox1.Value = Format(Sum, "#,##0.0") End Sub او الاعتماد على مربع Combobox لاختيار ورقة العمل المرغوب تنفيد الكود عليها Private Sub UserForm_Initialize() For Each s In ActiveWorkbook.Sheets Me.ComboBox1.AddItem s.Name Next s End Sub '******************** Private Sub CommandButton1_Click() If Me.ComboBox1 <> "" Then X = Me.ComboBox1.Value Set n = ThisWorkbook.Sheets(X) Sum = Evaluate("=SUMIFS(" & n.Name & "!F3:F100000," & n.Name & "!B3:B100000,"">=""&" & n.Name & _ "!I2,B3:B100000,""<=""&" & n.Name & "!j2)") Me.TextBox1.Value = Format(Sum, "#,##0.0") End If End Sub sumif v2.xlsm
    3 points
  42. وعليكم السلام ورحمة الله تعالى وبركاته تفضل اخي الكريم Option Explicit Sub Découpe_45() Dim WS As Worksheet, WS2 As Worksheet Dim i As Long, j As Long, k As Long, x As Long Dim Cpt As Long, r As Long, headers As Range Set WS = ThisWorkbook.Sheets("ورقة1"): Set WS2 = ThisWorkbook.Sheets("ورقة3") Application.ScreenUpdating = False With WS2.Range("A4:F" & WS2.Rows.Count) .Cells.ClearFormats: .Cells.ClearContents End With j = 5: Cpt = 45: Set headers = WS.[A4:F4] k = WS.Range("A:F").Find("*", SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious).Row For i = j To k Step Cpt If i = j Then headers.Copy Destination:=WS2.[A4] WS.Range("A" & i & ":F" & i + Cpt - 1).Copy Destination:=WS2.Range("A" & j) Else x = WS2.Range("A:F").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 7 headers.Copy Destination:=WS2.Range("A" & x) WS.Range("A" & i & ":F" & i + Cpt - 1).Copy Destination:=WS2.Range("A" & x + 1) End If Next i For r = 1 To 6 WS2.Cells.EntireRow.AutoFit WS2.Columns(r).ColumnWidth = WS.Columns(r).ColumnWidth Application.ErrorCheckingOptions.NumberAsText = False Next Application.ScreenUpdating = True End Sub جدول 2024.xlsb
    3 points
  43. اولا: . ثم يفتح لك هذا النموذج ، 1. اكتب اسم الحقل (الكلمة التي تريد البحث عنها) الذي تريد ان تبحث عنه في جميع كائنات البرنامج ، حسب ما تم التأشير عليه من جداول واستعلامات وتقارير ونماذج وكود ، 4. انقر البحث ، فيعطيك قائمة بكل كائن فيه هذه الكلمة (تنقر مرتين فيفتح لك الكائن ، وتقدر تغير الكلمة يدويا) ، وبعد ان تطمئن انه لا يوجد خلط وكل شيء واضح ، يمكنك النقر على رقم 2 وتكتب كلمة التغيير/الاستبدال التلقائي لهذه الكلمة في جميع الكائنات.
    3 points
  44. وعليكم السلام 🙂 اما انا فلم افلح مع الذكاء الصناعي !! ما ادري ، يمكن اسألتي صعبة 😁 الخطأ يقول: اول قيمة في الدالة ، نوع المتغير studentID في الدالة IsTeacherAssigned هو Integer . بينما بدلا عن تدخل قيمة Integer ، انت ادخلت قيمة من نوع: . الخطأ في السطر: . سهله 🙂 جعفر
    3 points
  45. هدا ملف مغاير اخي الكريم على العموم تفضل هده الاكواد الخاصة بك بعد تعديلها Private Sub CommandButton2_Click() 'بحث Dim WS As Worksheet, F As Worksheet, J As Long Dim rng As Range, LastRow As Long, Clé As String Set WS = Sheets("Sheet1"): Set F = Sheets("Sheet2"): Clé = WS.[E3] Application.ScreenUpdating = False If Clé = Empty Then: MsgBox "برجاء إدخال اسم للبحث عن بياناته", vbCritical, "فلاح": Exit Sub LastRow = F.Cells(F.Rows.Count, "B").End(xlUp).Row Set rng = F.Range("B3:B" & LastRow).Find(Clé, LookIn:=xlValues, _ lookat:=xlWhole, SearchDirection:=xlPrevious) If rng Is Nothing Then MsgBox " الاسم غير موجود", vbExclamation, Clé Else J = rng.Row WS.[D5].Value = F.Cells(J, 2).Value: WS.[D7].Value = F.Cells(J, 3).Value WS.[D9].Value = F.Cells(J, 4).Value: WS.[D11].Value = F.Cells(J, 5).Value WS.[D13].Value = F.Cells(J, 6).Value: WS.[D15].Value = F.Cells(J, 7).Value WS.[D17].Value = F.Cells(J, 8).Value: WS.[D19].Value = F.Cells(J, 9).Value WS.[D21].Value = F.Cells(J, 10).Value: WS.[D23].Value = F.Cells(J, 11).Value WS.[G7].Value = F.Cells(J, 12).Value: WS.[G9].Value = F.Cells(J, 13).Value WS.[G11].Value = F.Cells(J, 14).Value: WS.[G13].Value = F.Cells(J, 15).Value WS.[G15].Value = F.Cells(J, 16).Value: WS.[G17].Value = F.Cells(J, 17).Value WS.[G19].Value = F.Cells(J, 18).Value: WS.[G21].Value = F.Cells(J, 19).Value WS.[G23].Value = F.Cells(J, 20).Value Application.ScreenUpdating = True End If End Sub اما بالنسبة لكود التعديل يمكنك اتمامه بنفس الطريقة Private Sub CommandButton5_Click() 'تعديل Dim WS As Worksheet, WS2 As Worksheet Dim LastRow As Long, i As Long Set WS = Sheets("Sheet2"): Set WS2 = Sheets("Sheet1") LastRow = WS.Cells(WS.Rows.Count, 2).End(xlUp).Row For i = 3 To LastRow If WS.Range("B" & i).Value = WS2.[E3] Then WS.Range("B" & i) = WS2.Range("D5") WS.Range("C" & i) = WS2.Range("D7") WS.Range("D" & i) = WS2.Range("D9") WS.Range("E" & i) = WS2.Range("D11") WS.Range("F" & i) = WS2.Range("D13") 'اتمم الكود '''''''''''''''''''' '''''''''''''''''''' MsgBox "تم تعديل البيانات بنجاح" End If Next i Application.ScreenUpdating = True End Sub 123.xlsm
    3 points
  46. جرب هل هدا ما تقصده Sub TEST() Dim WS As Worksheet: Dim F As Worksheet Set WS = Sheets("ورقة2"): Set F = Sheets("ورقة3") Application.ScreenUpdating = False F.Range("B" & F.Rows.Count).End(xlUp).Offset(1).Resize(, _ 26).Value = Application.Index(WS.Range _ ("D5,C7,C9,C11,D13,E15,D17,D19,D21,J7,J9,J11,J13,J15,J17,I19,K19,J21,O7,O9,O11,N13,N15,N17,O19,O21"), _ 1, 1, Array(2, 3, 1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, _ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26)) With F.Range("A4:A" & F.Cells(Rows.Count, "B").End(xlUp).Row) .Value = Evaluate("ROW(" & .Address & ")-3") End With Application.ScreenUpdating = True MsgBox "تم ترحيل البيانات بنجاح" End Sub New ورقة عمل Microsoft Excel 2.xlsm
    3 points
  47. السلام عليكم ورحمة الله تعالى وبركاته اعرف ان الفكرة نوعا ما ليست جديدة كليا ولكن انا قمت بتطوير الفكرة بقدر الإمكان وفق رؤيتي القاصرة المرفق والفكرة مازالت قيد التجربة والتطوير لذلك اطلب العفو والسماح في حال وقوع أي أخطاء في انتظار آرائكم وارحب بإضافة الأفكار طبعا و يحبذا لو يتم تطبيق عمليا على المرفق مباشرة وإعادة رفعه من جديد OfficenaSQL2VBA.accdb
    2 points
  48. وعليكم السلام ورحمة الله وبركاته على حسب ما فهت تفضل هذا مثال1.xlsx
    2 points
×
×
  • اضف...

Important Information