'// on utilise ici une propriété de la TextBox
'// qui adapte la Longueur de ses lignes en fonction de sa Largeur.
'// après avoir défini la Largeur de la TextBox,
'// les Lignes apparaissent bien avec la bonne Longueur
'// mais le Texte n'est pas encore utilisable tel quel,
'// parce les fins de Lignes ne sont pas réellement présentes.
'// il faut donc parcourir la TextBox
'// et rajouter les vbCrLf aux bons endroits.
'// seulement après le Texte sera utilisable
'// soit pour être imprimé ou pour être écrit dans un fichier.
'// à noter que si sur l'écran le Texte n'apparaît pas avec la Longueur imposée
'// c'est parce que la résolution de l'écran n'est pas toujours de 72 dpi
'// qui est le standard pour l'imprimante.
Private Sub JustificationTexte(TxtBox As TextBox, NomPolice As String, TaillePolice As Single, LongueurEnMillimetres As Integer)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim Lg As Single
Dim Ln As Long
'// adapter la longueur de la TextBox en fonction de la police utilisée
TxtBox.Font = NomPolice
TxtBox.FontSize = TaillePolice
Lg = ScaleX(LongueurEnMillimetres, vbMillimeters, ScaleMode)
'// ajouter 4 pixels pour les bordures si nécessaire
If TxtBox.BorderStyle = 1 Then Lg = Lg + ScaleX(4, vbPixels, ScaleMode)
'// ajouter 17 pixels pour la Scrollbar Verticale si présente
If TxtBox.ScrollBars > 1 Then Lg = Lg + ScaleX(17, vbPixels, ScaleMode)
TxtBox.Width = Lg
'// ajouter une fin de Ligne à la fin du TextBox si elle n'existe pas
If Right$(TxtBox.Text, 2) <> vbCrLf Then TxtBox.Text = TxtBox.Text & vbCrLf
'// ajouter une fin de ligne à chaque ligne qui n'en a pas
Ln = Len(TxtBox.Text)
TxtBox.SelStart = 0
TxtBox.SetFocus
j = 0
While j < Ln
i = j + 1
SendKeys ("{DOWN}"): DoEvents
j = TxtBox.SelStart
SendKeys ("{LEFT}"): DoEvents
k = TxtBox.SelStart
If j - k = 1 Then
SendKeys ("{END}"): DoEvents
TxtBox.SelText = vbCrLf
Ln = Ln + 2
Else
SendKeys ("{HOME}{DOWN}"): DoEvents
End If
Wend
End Sub
'// exemple d'utisation
'// si Text1 contient le Texte à justifier:
JustificationTexte Text1, "arial", 8, 100