1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Sub Command1_Click()
Printer.ScaleMode = vbPixels 'par exemple
Printer.FontName = "Times New Roman"
ImprimeMultiLigne Text1.Text
Printer.EndDoc
End Sub
Private Sub ImprimeMultiLigne(Txt As String)
Dim Mots As Variant
Dim iPnt As Integer
Dim LargeurPage As Long 'largeur de la largeur utilisable sur l'imprimante
Dim LargeurMot As Long 'largeur du mot controlé
Dim LargeurLigne As Long 'largeur de la ligne avant chaque ajout de mot
Dim Ligne As String 'ligne a imprimer
Ligne = ""
LargeurPage = Printer.ScaleWidth
Mots = Split(Txt, " ") 'on decoupe en utilisant l'espase
For iPnt = 0 To UBound(Mots)
LargeurLigne = Printer.TextWidth(Ligne) 'largeur déjà utilisée
LargeurMot = Printer.TextWidth(Mots(iPnt) ) 'largeur du mot que l'on veut ajouter
If LargeurLigne + LargeurMot <= LargeurPage Then
'ca entre dans la largeur
Ligne = Ligne & Mots(iPnt) & " "
Else
'çà n'entre pas,
'on imprime,on redemarre avec une autre ligne
Printer.Print Ligne
Ligne = Mots(iPnt) & " "
End If
Next
'imprimer le reste
Printer.Print Ligne
End Sub |
Partager