Remplacez votre TextBox par un Label (c'est idiot de prendre une TextBox pour quelque chose qui n'est pas modifiable), prenez ma Private Sub AjusterLab telle qu'elle est, et utilisez la partout ou vous voulez lui faire afficher un texte dans un Label, sur le modèle de l'instruction unique des Sub CBnTexteLong_Click et CBnTexteCourt_Click.Mais comment l'adapter à mon UserForm?
'***************************************
'les 3 boutons
Private Sub AddModif_Click() ' bouton mixte ajout/modif
Dim DL&
Select Case AddModif.Caption
Case "Ajouter"
DL = ActiveWorkbook.Worksheets("Lexique").Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Lexique")
.Cells(DL, "A").Value = ComboBox1.Value
.Cells(DL, "B").Value = TextBox3.Value
End With
Case "Modifier"
With ComboBox1: ligne = .List(.ListIndex, 2) - 1: End With
Sheets("Lexique").Cells(ligne, "B") = TextBox3.Value
End Select
relist ' remise a jour de la comboboxdans l'ordre et avec les donnée a jour dynamiquement
End Sub
Private Sub AjusterObj(ByVal Obj As MSForms.Control, Optional ByVal HImposée As Long = 0)
Dim HInit As Double, Haut As Double, Bas As Double, X As Double, Ctl As MSForms.Control
HInit = Obj.Height: Haut = Obj.Top: Bas = Haut + HInit
If HImposée > 0 Then
Obj.Height = HImposée
Else: X = Obj.Width
Obj.AutoSize = True
Obj.AutoSize = False
Obj.Width = X: End If
X = Obj.Height - HInit: If X = 0 Then Exit Sub
For Each Ctl In Me.Controls
If Ctl.Top > Bas Then Ctl.Top = Ctl.Top + X
Next Ctl
Me.Height = Me.Height + X
End Sub
Private Sub TextBox1_Change()
With sizeur
.AutoSize = False
.Width = TextBox1.Width - 10
.Caption = TextBox1.Value
.AutoSize = True
End With
TextBox1.Height = sizeur.Height '+ 10 + 5
End Sub
Private Sub UserForm_Initialize()
sizeur.Height = TextBox1.Height
End Sub
Dim plusY#
'
Private Sub TextBox1_Change()
With sizeur
.AutoSize = False
.Width = TextBox1.Width - 10 'si je met pas -10 ca ne colle pas avec le wrap avec bordure ou pas sur le label
.Caption = TextBox1.Value
.AutoSize = True
End With
TextBox1.Height = sizeur.Height + plusY
End Sub
Private Sub UserForm_Initialize()
With sizeur
.Font.Size = TextBox1.Font.Size
.Font.Name = TextBox1.Font.Name
.Caption = "A"
.AutoSize = True
plusY = .Height + 5 ' si je met pas +5 ou moins ca ne colle pas pour la first ligne avec bordure ou pas sur le label
End With
End Sub