Gros bug d'impression VB6, multipages catastrophique

Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004 - 29 nov. 2004 à 16:00
Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004 - 30 nov. 2004 à 08:58
bonjours à tous, voila mon prob, mon programme sert à établir des devis. Or lorsque je lance l'impression, pour une page pas de prob il me la sort nikel en-tête pieds de page et c'est tout, mais dès que cela passe à la deuxième, c'est l'horreur !!

deux problème essentiels :
le premier, lors du passage à la 2éme page, la file de l'imprimante se remplie de plusieur 10éne de tache d'impression, comme une boucle sans fin, et là il imprime quasi-n'importe comment à partir de la second page.

le second et un problème de .current Y, lorsqu'il passe à la seconde feuille il m'imprime les en-tête de colonne à 3 cm du haut de la page puis recommence à .current Y = 0 l'impression du contenu de ma flexgrid.

Voici la partie du code qui me pose problème (dsl pour la longueur) :

'procédure lancée si impression dépasse la première page
Private Sub PageSuivante()

With Printer
.NewPage
Printer.ScaleMode = vbCentimeters
.CurrentX = 13.5
.CurrentY = 27.5
Printer.Print "Page : " & CurrentPage & "/" & nbPages
.FontBold = True
Printer.Line (0.5, 3.5)-(20.5, 3.5), vbBlack
.FontSize = 10
.CurrentX = 2
.CurrentY = 3
'en-tête de colonne
For i = 0 To 7
With MSFlexGrid1
.Col = i
.Row = 0
End With
If i = 0 Then
.CurrentX = 1
ElseIf i = 1 Then
.CurrentX = 4.5
ElseIf i = 2 Then
GoTo Suivant4
ElseIf i = 3 Then
.CurrentX = 11.6
ElseIf i = 4 Then
.CurrentX = 14.1
ElseIf i = 5 Then
.CurrentX = 15.3
ElseIf i = 6 Then
.CurrentX = 16.9
Else
.CurrentX = 17.8
End If
Printer.Print MSFlexGrid1.Text
Suivant4:
Next i
'iimpression de la flexgrid
.FontSize = 9
.FontBold = False
For j = j To Compteur - 1
For i = 0 To 7
.CurrentY = 3 + 0.5 * (j - nbLignes) 'nblignes déja imprime
With MSFlexGrid1
.Col = i
.Row = j
End With
If i = 0 Then
.CurrentX = 0.5
ElseIf i = 1 Then
.FontSize = 8
.CurrentX = 2.7
If Len(MSFlexGrid1.Text) > 18 Then
TextAbreg = Left(MSFlexGrid1.Text, 60)
Printer.Print TextAbreg
GoTo Suivant3
End If
ElseIf i = 2 Then
GoTo Suivant3
ElseIf i = 3 Then
.CurrentX = 11.3
If Len(MSFlexGrid1.Text) > 18 Then
TextAbreg = Left(MSFlexGrid1.Text, 18)
Printer.Print TextAbreg
GoTo Suivant3
End If
ElseIf i = 4 Then
.FontSize = 9
.CurrentX = 14.1 + 0.75 - .TextWidth(MSFlexGrid1.Text)
ElseIf i = 5 Then
.CurrentX = 15.8 + 0.7 - .TextWidth(MSFlexGrid1.Text)
If MSFlexGrid1.Text = "0,00" Then
GoTo Suivant3
End If
ElseIf i = 6 Then
.CurrentX = 17 + 0.5 - .TextWidth(MSFlexGrid1.Text)
Else
.CurrentX = 18.3 + 1.5 - .TextWidth(MSFlexGrid1.Text)
End If
Printer.Print MSFlexGrid1.Text
Suivant3:
Next i
If 3 + 0.5 * (j - nbLignes) >= 23 Then
nbLignes = j - 1
CurrentPage = CurrentPage + 1
PageSuivante
End If
Next j

FinImpression 'procedure d'impression de bas de page contenant le fameux ".EndDoc" + l'impression de fin de devis

End With

End Sub

Voila, et un très grand merci à tte personne se penchant sur mon problème.

3 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
30 nov. 2004 à 08:06
j'ai posé une source qui devrait t'aider dans l'algorithme !

It@li@
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
30 nov. 2004 à 08:07
ICI

It@li@
0
Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004
30 nov. 2004 à 08:58
merci je vais analyser ta source.
0
Rejoignez-nous