execrator
Messages postés16Date d'inscriptionmercredi 8 septembre 2004StatutMembreDernière intervention19 mars 2009
-
2 juin 2005 à 14:43
cs_Tibabou
Messages postés129Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention 7 juillet 2012
-
19 juin 2005 à 18:25
Bonjour mon programme sert à imprimer un fichier contenant du texte brut, seulement voila ce ficheir contient des caractères spéciaux comme " " qui correspond à un saut de page(fin du document on imprime su rune nouvelle page), seulement mon ficheir texte peut faire 1mo par exemple...Et pour imprimer sur des pages differentes je procède comme cela : j'enregistre le ficheir dans une variable string j'affiche la variable dans une richtextbox (pour la capacité) et apres je repere tous les caracttères " " j'enregistrent leurs coordonnées dan sun tabelau ensuite j'affiche dans chaque partie du texte qui correspond a une page dans une richtextbox differente. ensuite je supprime le caractère " " de chaque richtextbox pour ne pas limprimer et ensuite j'imprime chaque richtextbox.
le fichier en general contient que quelques pages mais ilpeu en contenir des centaines parfois dans ce cas la avant que l'impression de toutes les text box ce lance j'atend 15min
Private WithEvents txtObj As TextBox
Private Sub Form_Load()
Dim x(5000), i, j, k As Variant
Dim st, prem As String
Set txtObj = Controls.Add("VB.TextBox", "txtObj")
st = "print.spl"
Open st For Binary As #1
prem$ = Space$(FileLen(st))
Get #1, , prem$
Close #1
'Affiche le fichier dans la textbox(0)
Text1(0).Text = prem$
'Releve les coordonnées des differentes pages
'Le caractère ' ' correspond à un saut de page
x(0) = InStr(Text1(0).Text, " ")
If x(0) Then
i = 1
boucle = 0
While boucle = 0
x(i) = InStr(x(i - 1) + 1, Text1(0).Text, " ")
DoEvents
If x(i) Then
i = i + 1
Else
boucle = 1
End If
Wend
End If
'Affiche chaques pages dans une textbox differente
x(i) = Len(Text1(0))
If i > 1 Then
For j = 1 To i
Load Text1(j)
DoEvents
Text1(j).Text = Mid(Text1(0).Text, x(j - 1) + 1, x(j) - x(j - 1))
DoEvents
Next
End If
'Supprime le caractère ' '
For j = 1 To i - 1
Text1(j).Text = Left(Text1(j).Text, Len(Text1(j).Text) - 1)
DoEvents
Next
'On imprime
If i > 1 Then
For j = 1 To i
If (x(j) - x(j - 1) - 1 > 20) Then
Printer.Print Text1(j).Text
DoEvents
Printer.EndDoc
DoEvents
End If
Next
Else
Printer.Print Text1(0).Text
DoEvents
Printer.EndDoc
DoEvents
End If
cs_Tibabou
Messages postés129Date d'inscriptionmercredi 2 janvier 2002StatutMembreDernière intervention 7 juillet 2012 19 juin 2005 à 18:25
Salut,
Je vois pas pourquoi tu passes par des richtexttbox.
La recherche du caractère en question peut se faire directement dans la variable qui récupère le contenu du fichier.
Et ensuite pour limpression, tu peux pas utiliser left() et right() pour sélectionner la partie de ta variable à imprimer ?