Centré du Texte dans une TextBox
Bonjour
J’ai un zone textBox dans propriété de l’objet j’ai
TextAlibn : 2 ou fmTextAlignCenter
MultiLine : True
WordWrap : True
Dans ma zone textBox ça donne ça
________________
| Bonjour |
| |
|_____________|
Je voudrai qu’il soit centré
_______________
| |
| Bonjour |
|______________|
Si que l’un peut m’aider.
Merci
Bonjour,
Avec les propriétés de ta textBox tu peux juste centrer horizontalement
pour centrer verticalement je te propose cette astuce :
selectionne ton texte > format > centrer sur la feuille > centrer verticalement
Cordialement
NL
Bonjour,
Alors ce que je te propose est assez scabreux mais comme il est très difficile de centrer verticalement du texte dans un TextBox ou même dans un Label car il n'y a pas de propriété permettant cela.
Regarde si ça te convient. Tu poses un contrôle Label sur ta Form (ici nommé "Label1") et tu lances ! Ce qui est un peut gênant c'est la position du curseur qui n'est pas juste devant le texte.
ça fonctionne de la manière suivante, le TextBox a sa fonte de la même couleur que le fond et le Label reçois le texte tapé dans le TextBox puis le Label est positionné au centre du TextBox :
Private Sub UserForm_Initialize()
With Label1
.Caption = ""
.BackStyle = fmBackStyleTransparent
.BorderStyle = fmBorderStyleNone
.Height = 12
.Width = 0
.Font.Size = txtTexte.Font.Size
.Font.Name = txtTexte.Font.Name
.WordWrap = True
End With
With txtTexte
.ForeColor = .BackColor
.AutoSize = False
.TextAlign = fmTextAlignCenter
.WordWrap = False
End With
End Sub
Private Sub txtTexte_Change()
Dim Largeur As Single
Label1.Caption = txtTexte.Text
'récupère la largeur par rapport au texte en mettant
'AutoSize à True puis le remet à False de façon à ce que
'le texte de la 1ère ligne soit sur la largeur du TextBox
Label1.AutoSize = True: Largeur = Label1.Width: Label1.AutoSize = False
'même largeur pour les deux
Label1.Width = txtTexte.Width
'centre verticalement et horizontalement
Label1.Left = txtTexte.Left + txtTexte.Width / 2 - Largeur / 2
Label1.Top = txtTexte.Top + txtTexte.Height / 2 - Label1.Height / 2
'Une fois la 1ère ligne remplie, la largeur du Label reste identique
'à celle de la TextBox et on peut autoriser adaptation de la largeur au texte
If Label1.Width >= txtTexte.Width Then Label1.AutoSize = True
End Sub