ajuster Userform en fonction de la largeur et de la hauteur du ListBox1

modus57

XLDnaute Occasionnel
Bonjour à tous.:)

Comment faire pour ajuster la largeur de l’Userform en fonction de la largeur d'un ListBox1.

En adaptant la procédure ci-dessous trouvée dans un autre forum, la hauteur de l’userform s’adapte à la hauteur du ListBox1.

Code:
Private Sub UserForm_Initialize()
Dim HauteurUserform, HauteurListBox1, HauteurListBox1Niew
    HauteurUserform = Me.Height
    HauteurListBox1 = Me.ListBox1.Height
    With ListBox1
        .ColumnCount = 4
        For i = 1 To Range("liste_data").Rows.Count
            .AddItem Cells(i, 1)
            .List(.ListCount - 1, 1) = Cells(i, 2)
            .List(.ListCount - 1, 2) = Cells(i, 3)
            .List(.ListCount - 1, 3) = Cells(i, 4)
        Next i
        'MsgBox Me.ListBox1.ListCount
        Me.ListBox1.Height = Me.ListBox1.ListCount * 10.5
        
        For i = 1 To .ColumnCount
            With Me.Controls.Add("Forms.TextBox.1", Name:="txtTemp" & i)
                .AutoSize = True
                .MultiLine = True
                .WordWrap = False
                .SelectionMargin = False
                With .Font
                    .Name = ListBox1.Font.Name
                    .Size = ListBox1.Font.Size
                End With
            End With
        Next i
        For i = 0 To .ListCount - 1
            Me.Controls("txtTemp1").Text = Me.Controls("txtTemp1").Text & vbCr & .List(i, 0)
            Me.Controls("txtTemp2").Text = Me.Controls("txtTemp2").Text & vbCr & .List(i, 1)
            Me.Controls("txtTemp3").Text = Me.Controls("txtTemp3").Text & vbCr & .List(i, 2)
            Me.Controls("txtTemp4").Text = Me.Controls("txtTemp4").Text & vbCr & .List(i, 3)
        Next i
        For i = 1 To .ColumnCount
            StrCWidths = StrCWidths & Me.Controls("txtTemp" & i).Width & ";"
            lngTotalWidth = lngTotalWidth + Me.Controls("txtTemp" & i).Width
            Me.Controls("txtTemp" & i).Visible = False
            Me.Controls.Remove ("txtTemp" & i)
        Next i
        .Width = lngTotalWidth + ListBox1.ColumnCount + 5
        .ColumnWidths = StrCWidths
    End With
    HauteurListBox1Niew = Me.ListBox1.Height
    Me.Height = HauteurUserform + (HauteurListBox1Niew - HauteurListBox1)
End Sub

J’ai beau cherché, je ne trouve pas de solution pour ajuster aussi la largeur.

Qui aurait une petite idée.

Merci d’avance pour votre réponse.
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : ajuster largeur Userform en fonction de la largeur du ListBox1

Bonjour modus57,

Peut-être tout simplement en remplaçant Height par Width ?

Ou alors, je n'ai rien compris, auquel cas un fichier exemple serait le bienvenu.

Cordialement.
 

modus57

XLDnaute Occasionnel
Re : ajuster largeur Userform en fonction de la largeur du ListBox1

Bonjour Papou-net.

Merci de t’intéressai à cette discussion.

Je te prie de m'excuser, j'ai mal libellé le titre. :rolleyes:

Ci-joint le fichier,.

@+
 

Pièces jointes

  • Userform et ListBox autosize_1.xlsm
    25 KB · Affichages: 67
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : ajuster Userform en fonction de la largeur et de la hauteur du ListBox1

RE :

C'est tout de suite plus parlant.

Il suffit donc d'ajouter la ligne Me.Width = ListBox1.Width + (ListBox1.Left * 2) juste avant la fin de la procédure.

Vois sur la copie de ton fichier ci-joint.

Cordialement.
 

Pièces jointes

  • Copie de Userform et ListBox autosize.xlsm
    24.1 KB · Affichages: 77

modus57

XLDnaute Occasionnel
Re : ajuster Userform en fonction de la largeur et de la hauteur du ListBox1

Re bonjour.

C'est super ça marche.

J'ai pas pensé à ta solution
Code:
Me.Width = ListBox1.Width + (ListBox1.Left * 2)

Si j'ai bien compris, il faut ajouter 2 x l'espace de gauche du ListBox1 au ListBox1.

Pourrais-tu confirmer SVP.
 

Papou-net

XLDnaute Barbatruc
Re : ajuster Userform en fonction de la largeur et de la hauteur du ListBox1

Re bonjour.

C'est super ça marche.

J'ai pas pensé à ta solution
Code:
Me.Width = ListBox1.Width + (ListBox1.Left * 2)

Si j'ai bien compris, il faut ajouter 2 x l'espace de gauche du ListBox1 au ListBox1.

Pourrais-tu confirmer SVP.

RE :

Oui, j'ai ajouté deux fois l'espace de gauche de la liste déroulante afin de la centrer dans la fenêtre. Mais rien ne t'empêche de définir une valeur fixe si tu le préfères.

Cordialement.
 

Discussions similaires

Réponses
4
Affichages
257
Réponses
17
Affichages
999

Statistiques des forums

Discussions
312 920
Messages
2 093 640
Membres
105 769
dernier inscrit
AVAST