VB6 Impression peu orthodoxe (Urgent)

Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004 - 30 nov. 2004 à 14:19
Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004 - 30 nov. 2004 à 16:31
Voila mon problème, lors d'impression multi page (impression simple aucun problème) se lance, suite à ma tâche d'impression, une tâche de plusieurs 10ène de pages. le résultat est l'impression anarchique de diverses éléments de mon texte jusqu'au manque de papier dans la plupart des cas (type un mot par feuille).

Suite à une étude de mon algo et avec différents points d'arrêt, aucune boucle ni double impression ne s'effectue.

Petite précision, je travaille sur VB6 , SE Win NT4.0

Si quelqu'un pourrait m'expliquer ce phénoméne, ou mieu, pourrait me donner une solution, merci d'avance.

5 réponses

dthuler Messages postés 121 Date d'inscription dimanche 9 mars 2003 Statut Membre Dernière intervention 29 avril 2009
30 nov. 2004 à 14:48
Une pitite question, termines-tu ton impression par EndDoc ?

~~ Brainiax ~~ 8-)
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 à 15:40
Oui dans une procédure à part nommée "FinImpression" qui imprime le bas de page sur la dernière feuille.

En fait l'intégralité de mon document s'imprime parfaitement. C'est une autre tâche d'impression qui se lance juste dérrière et qui elle contient des 10ène (voir des 100ène) de pages.

Ce phénomène ne se produit que lors d'une impression multi pages, quand mon document ne contient qu'une seule page, seule mon document apparait dans le gestionnaire.

Par ailleur l'option "KillDoc" n'a aucun effet sur cette "monstrueuse" impression.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 nov. 2004 à 15:48
Tu utilises quel type d'imprimante ? Quel pilote ?

Christophe R.
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 à 16:16
Canon lbp-800 à priorie drivers d'origine, en fait c'est une Appli pro donc sur mon lieu de travail.

Ta remarque crenaud76 m'as fait essayer sur une imprimante HP, et la ça s'imprime parfaitement, l'impression surdimensionnée ne se produit pas, je vais quand même faire d'autre test sur d'autre imprimante.

Merci à tous pour votre aide. je vais tenter de mettre à jours les drivers imprimante voir si cela résout le problème sur ce PC.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kouran666 Messages postés 20 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 14 décembre 2004
30 nov. 2004 à 16:31
Mince, dsl ça continue mais sur la HP il y a eu un décalage de 5 min avant que cela ne se produise. La mise à jour drivers ni change rien.

Après analyse des l'impression supp, il s'avérerais que le problème vienne de la partie impression des données de la flexgrid car c'estr le contenu qui se réimprime de façon anarchique.
Or ce problème se produisant suite à une impression de plusieures pages, cela doit venir de cette procédure :

dsl pour la longueur :

'se lance si la longueur de la première page et dépassée
Private Sub PageSuivante()

'ligne ou la lecture de la flexgrid c'est arrêter
j = Currentj

With Printer
.NewPage
.Font = "MS Sans Serif"
Printer.ScaleMode = 7
.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
For i = 0 To 7
.CurrentY = 3
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
.FontSize = 9
.FontBold = False
For j = j To Compteur - 1
For i = 0 To 7
.CurrentY = 3.1 + 0.5 * (j - nbLignes)
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 j - nbLignes > 39 And j < Compteur - 1 Then
nbLignes = j - 1
CurrentPage = CurrentPage + 1
Currentj = j + 1
PageSuivante ElseIf j Compteur - 1 And Imprime True Then
Imprime = False
FinImpression
End If
Next j
End With

End Sub
0
Rejoignez-nous