Kouran666
Messages postés20Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention14 décembre 2004
-
29 nov. 2004 à 16:00
Kouran666
Messages postés20Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention14 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.