Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPublic Function BH_DGResize(ByRef DGGrid As Object, ByVal MaxHeight As Integer, _ Optional ByRef DGLines As Variant, _ Optional ByVal RowsCount As Long = -1, _ Optional ByVal WidthCenter As Single) Dim intVisibleRows As Integer, intOffset As Integer, intWidth As Integer, X As Integer On Error Resume Next Const LINE_TOP = 0 Const LINE_RIGHT = 1 Const LINE_BOTTOM = 2 Const LINE_LEFT = 3 DGGrid.HeadLines = IIf(DGGrid.ColumnHeaders, DGGrid.HeadLines, 0) intVisibleRows = ((MaxHeight / (DGGrid.RowHeight + 11)) - DGGrid.HeadLines) DGGrid.Height MaxHeight: DGGrid.VisibleRows intVisibleRows Select Case DGGrid.VisibleRows Case 0, 1, 2: intOffset = 5 ' Ne pas mettre à zéro Case 3, 4, 5: intOffset = 12 Case Is < 10: intOffset = 12 Case Is > 9: intOffset = 12 ' + (intVisibleRows / 10)) End Select For X = 0 To DGGrid.Columns.Count intWidth = intWidth + IIf(DGGrid.Columns(X).Visible, (DGGrid.Columns(X).Width + 5), 5) Next DGGrid.Height = ((DGGrid.RowHeight + intOffset) * (BH_MinValue(intVisibleRows, DGGrid.VisibleRows) + DGGrid.HeadLines)) If DGGrid.Row < 0 Then DGGrid.Height = ((DGGrid.RowHeight + intOffset) * BH_MaxValue(DGGrid.HeadLines, 1)) DGLines(LINE_TOP).Visible False: DGLines(LINE_RIGHT).Visible False DGLines(LINE_BOTTOM).Visible False: DGLines(LINE_LEFT).Visible False DGGrid.Width = intWidth + IIf(DGGrid.RecordSelectors, 300, 0) '10) Else DGGrid.Height = ((DGGrid.RowHeight + intOffset) * (BH_MinValue(intVisibleRows, DGGrid.VisibleRows) + DGGrid.HeadLines)) If DGGrid.VisibleRows > intVisibleRows Then DGGrid.Height = DGGrid.Height + 25 If RowsCount >= 0 Then If DGGrid.ScrollBars dbgAutomatic Or DGGrid.ScrollBars dbgBoth Or DGGrid.ScrollBars = dbgVertical Then Select Case DGGrid.Columns.Count Case 0, 1, 2: intOffset = 5 ' Ne pas mettre à zéro Case 3, 4, 5: intOffset = 10 Case Is < 10: intOffset = 17 Case Is > 9: intOffset = (15 + (DGGrid.Columns.Count / 10)) End Select DGGrid.Width = intWidth + ((intOffset * DGGrid.VisibleCols) + 0) + IIf(DGGrid.RecordSelectors, 300, 10) If RowsCount >= DGGrid.VisibleRows Then DGGrid.Height MaxHeight: DGGrid.VisibleRows intVisibleRows End If End If Else DGGrid.Width = intWidth + IIf(DGGrid.VisibleRows < DGGrid.ApproxCount, 260, 0) DGGrid.Width = DGGrid.Width + IIf(DGGrid.RecordSelectors, 300, 0) DGGrid.ScrollBars = IIf(intVisibleRows < DGGrid.ApproxCount, dbgAutomatic, dbgNone) End If DGGrid.Height DGGrid.Height + IIf(DGGrid.HeadLines 0, 50, 5) If WidthCenter > 0 Then DGGrid.Left = ((WidthCenter - (DGGrid.Width + 100)) / 2) End If If Not IsMissing(DGLines) Then If UCase(TypeName(DGLines(0))) = "LINE" Then ' DGLines(LINE_TOP).Visible True: DGLines(LINE_RIGHT).Visible True ' DGLines(LINE_BOTTOM).Visible True: DGLines(LINE_LEFT).Visible True DGLines(LINE_TOP).X1 DGGrid.Left - 50: DGLines(LINE_TOP).X2 DGGrid.Left + DGGrid.Width + 10 DGLines(LINE_TOP).Y1 DGGrid.Top - 50: DGLines(LINE_TOP).Y2 DGGrid.Top - 50 DGLines(LINE_RIGHT).X1 = DGGrid.Left + DGGrid.Width + 20 DGLines(LINE_RIGHT).X2 = DGGrid.Left + DGGrid.Width + 20 DGLines(LINE_RIGHT).Y1 DGGrid.Top - 10: DGLines(LINE_RIGHT).Y2 DGGrid.Top + DGGrid.Height + 50 DGLines(LINE_BOTTOM).X1 DGGrid.Left - 50: DGLines(LINE_BOTTOM).X2 DGGrid.Left + DGGrid.Width + 10 DGLines(LINE_BOTTOM).Y1 = DGGrid.Top + DGGrid.Height + 50 DGLines(LINE_BOTTOM).Y2 = DGGrid.Top + DGGrid.Height + 50 DGLines(LINE_LEFT).X1 DGGrid.Left - 50: DGLines(LINE_LEFT).X2 DGGrid.Left - 50 DGLines(LINE_LEFT).Y1 DGGrid.Top - 10: DGLines(LINE_LEFT).Y2 DGGrid.Top + DGGrid.Height + 50 End If End If End If End Function Public Function BH_MaxValue(ByVal Value1 As Long, ByVal Value2 As Long) As Long BH_MaxValue = IIf(Value1 < Value2, Value2, Value1) End Function Public Function BH_MinValue(ByVal Value1 As Long, ByVal Value2 As Long) As Long BH_MinValue = IIf(Value1 > Value2, Value2, Value1) End Function