Programme trop lent (travaille sur des chaines)

execrator Messages postés 16 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 19 mars 2009 - 2 juin 2005 à 14:43
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Derniè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


'Paramètrage de l'imprimante
Printer.FontName = "Lucida console"
Printer.FontSize = "9,75"
Printer.FontBold = True
Printer.Orientation = "2"


'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


End
End Sub

3 réponses

cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
2 juin 2005 à 14:47
Tu vas nous l'envoyer combien de fois ton post???????????????????????????
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
2 juin 2005 à 15:08
klr! ca s'arrete plus!!! :-D
0
cs_Tibabou Messages postés 129 Date d'inscription mercredi 2 janvier 2002 Statut Membre Derniè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 ?

Tibabou
0
Rejoignez-nous