VERSION 5.00
Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} UserForm6 
   Caption         =   "UserForm6"
   ClientHeight    =   5235
   ClientLeft      =   120
   ClientTop       =   465
   ClientWidth     =   13950
   OleObjectBlob   =   "UserForm6.frx":0000
   StartUpPosition =   1  'CenterOwner
End
Attribute VB_Name = "UserForm6"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub CommandButton1_Click()
'    With Me.ListView1.ColumnHeaders(3)
'        .Width = TextLength(.index)
'    End With
ResizeColumnHeaders
End Sub

Private Sub ListView1_BeforeLabelEdit(Cancel As Integer)

End Sub

Private Sub ListView1_Click()
Debug.Print "After resizing "; Me.ListView1.ColumnHeaders(3).Width
Debug.Print "Difference "; Me.ListView1.ColumnHeaders(3).Width - Me.lblTextMeasure.Width
End Sub


Private Sub UserForm_Initialize()
    Dim lsvItem As ListItem
    With Me.ListView1
        .Appearance = ccFlat
        .FullRowSelect = True
        .Gridlines = True
        .MultiSelect = True
        .View = lvwReport
        
        With .ColumnHeaders
            .Clear
            .Add , , "Titre 1", 50
            .Add , , "Titre 2", 50
            .Add , , "Titre 3 avec une grande longeur", 50
            
        End With
        With .ListItems
            .Clear
            
            Set lsvItem = .Add(, , "Test titres 1")
            With lsvItem
            
                .ListSubItems.Add , , "Test titre 2"
                .ListSubItems.Add , , "Test titre 3"


            End With

        End With
    End With
End Sub

Public Function TextLength(item As Byte) As Long
    With Me.lblTextMeasure
        .AutoSize = False
        .Width = Me.InsideWidth
        .Top = 0
        .Left = 0
        .Visible = False
        .BorderStyle = fmBorderStyleSingle
        .Font.Name = Me.ListView1.Font
        .Font.Bold = Me.ListView1.Font.Bold
        .Font.Italic = Me.ListView1.Font.Italic
        .Font.Size = Me.ListView1.Font.Size
        .Caption = Me.ListView1.ColumnHeaders(item).Text
        .AutoSize = True
        TextLength = .Width + 10
    End With
End Function

Sub ResizeColumnHeaders()
    Static ListViewWidth

    Dim item As ColumnHeader
    For Each item In Me.ListView1.ColumnHeaders
        With item
            .Width = TextLength(.index)
            ListViewWidth = ListViewWidth + .Width
        End With
        With Me.ListView1
            If .Width < ListViewWidth Then .Width = .Width + (ListViewWidth - .Width)
        End With
    Next item

End Sub
