Impression d'une listview

cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019 - 27 août 2008 à 07:54
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 - 27 août 2008 à 16:31
Bonjour à tous,

J'ai pu reprendre un code qui marche très bien mais qui n'imprime que sur du A4.J'ai beau chercher et chercher comment le faire imprimer sur du papier zone vert 11pouces sur 38pouces mais j'y arrive pas.

Je vous indique le code ci-dessous et si vous avez une idée MERCI BEAUCOUP.


On Error GoTo Err_Main
Dim lNB_MAX_ELEM_PAGE As Long
Dim P As Printer
Dim lComptElem As Long
Dim liItem As ListItem
Dim idxCol As Integer
Dim lLargTot As Long
Dim lCurXtmp As Long, lCurYtmp As Long
Dim lNumPageCour As Long, lNbPages As Long
Dim sApplication As String, sDate As String
Dim lNbCarAff As Long

lNB_MAX_ELEM_PAGE = 35
If Ori "P" Then lNB_MAX_ELEM_PAGE 70

sTitre = UCase(Trim(sTitre))
sApplication = "Le logiciel " & titre
sDate = Format(Now, "dddd d mmmm yyyy")

lLargTot = 0
For idxCol = 1 To lvwSource.ColumnHeaders.Count
If lvwSource.ColumnHeaders(idxCol).Width <> 0 Then
lLargTot = lLargTot + lvwSource.ColumnHeaders(idxCol).Width
End If
Next

lNbPages = Int(lvwSource.ListItems.Count / lNB_MAX_ELEM_PAGE) + 1
lNumPageCour = 1

Set P = Printer

If Ori = "P" Then
P.Orientation = vbPRORPortrait
Else
P.Orientation = vbPRORLandscape
End If

P.Font sNomPolice: P.FontSize iTaillePolice
P.ScaleHeight 100: P.ScaleWidth 100

P.FontBold True: P.CurrentX 50 - (P.TextWidth(sTitre) / 2): P.CurrentY = 3: P.Print sTitre
P.FontBold False: P.CurrentX 90: P.CurrentY = 3: P.Print "Page " & CStr(lNumPageCour) & "/" & CStr(lNbPages)
P.FontBold False: P.CurrentX 50 - (P.TextWidth(sSousTitre)) / 2: P.CurrentY = 5: P.Print sSousTitre

P.CurrentX = 0
For idxCol = 1 To lvwSource.ColumnHeaders.Count
If lvwSource.ColumnHeaders(idxCol).Width <> 0 Then
lCurXtmp = P.CurrentX
P.CurrentY = 10
If lvwSource.ColumnHeaders(idxCol).Width > 0 Then
P.FontBold = True: P.Print lvwSource.ColumnHeaders(idxCol).Text
End If
P.CurrentX = lCurXtmp + (lvwSource.ColumnHeaders(idxCol).Width * 100) / lLargTot
End If
Next
P.Line (0, 13)-(100, 13)

P.CurrentY = 14
lComptElem = 0
For Each liItem In lvwSource.ListItems
lCurYtmp = P.CurrentY
For idxCol = 1 To lvwSource.ColumnHeaders.Count

If lvwSource.ColumnHeaders(idxCol).Width > 0 Then
P.FontBold = False
lNbCarAff = Int(((lvwSource.ColumnHeaders(idxCol).Width * 100) / lLargTot) / P.TextWidth("A"))
If idxCol = 1 Then
lCurXtmp = 0
P.CurrentX = lCurXtmp
P.CurrentY = lCurYtmp
P.FontBold = False: P.Print Left(liItem.Text, lNbCarAff)
Else
lCurXtmp = lCurXtmp + (lvwSource.ColumnHeaders(idxCol - 1).Width * 100) / lLargTot
P.CurrentX = lCurXtmp
P.CurrentY = lCurYtmp
P.FontBold = False: P.Print Left(liItem.SubItems(idxCol - 1), lNbCarAff)
End If
Else
lCurXtmp = lCurXtmp + (lvwSource.ColumnHeaders(idxCol - 1).Width * 100) / lLargTot
End If
Next

lComptElem = lComptElem + 1

If lComptElem = lNB_MAX_ELEM_PAGE Then
lComptElem = 0
P.Line (0, 90)-(100, 90)
P.CurrentX 5: P.CurrentY 93: P.FontBold = True: P.Print sApplication
P.CurrentX 85: P.CurrentY 93: P.FontBold = False: P.Print sDate
P.NewPage
lNumPageCour = lNumPageCour + 1

P.FontBold True: P.CurrentX 50 - (P.TextWidth(sTitre) / 2): P.CurrentY = 3: P.Print sTitre
P.FontBold False: P.CurrentX 90: P.CurrentY = 3: P.Print "Page " & CStr(lNumPageCour) & "/" & CStr(lNbPages)
P.FontBold False: P.CurrentX 50 - (P.TextWidth(sSousTitre)) / 2: P.CurrentY = 5: P.Print sSousTitre
P.CurrentX = 0
For idxCol = 1 To lvwSource.ColumnHeaders.Count

lCurXtmp = P.CurrentX
P.CurrentY = 10
If lvwSource.ColumnHeaders(idxCol).Width > 0 Then
P.FontBold = True
P.Print lvwSource.ColumnHeaders(idxCol).Text
P.FontBold = False
End If
P.CurrentX = lCurXtmp + (lvwSource.ColumnHeaders(idxCol).Width * 100) / lLargTot
Next
P.Line (0, 13)-(100, 13)
P.CurrentY = 14
End If
Next liItem

P.Line (0, 90)-(100, 90)
P.CurrentX 5: P.CurrentY 93: P.FontBold = True: P.Print titre
P.CurrentX 85: P.CurrentY 93: P.FontBold = False: P.Print sDate

P.EndDoc


fin:
On Error Resume Next
Set P = Nothing
Exit Sub

Err_Main:
If Not (P Is Nothing) Then P.KillDoc
MsgBox Err.Description, vbCritical, App.Title
Resume fin

11 réponses

dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
27 août 2008 à 11:28
Bonsoir ,
Je n'ai pas le temps de dechiffrer ce code sur VB6 mais il
est peut être fait uniquement pour une impression A4.
Par contre dans ce code ,
je ne vois pas l'instruction "PaperSize".Cette derniere
permet de choisir le format.
A+
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
27 août 2008 à 12:23
pourquoi ne pas utiliser un dialogue pour la mise en page
(page setup dialog en vb.net)

Bonjour chez vous !
0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
27 août 2008 à 12:31
Bonjour gillard ,
Son message est classé dans la rubrique VB6.
Je suppose qu'il travaille avec cette version.
A++
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
27 août 2008 à 12:36
gillard ?? c'est qui ???encore un nouveau ???
oui ,ok, j'avais compris, (c'est pourquoi j'ai mis ça entre parenthèses) et en vb6 il n'y a pas de dialog du genre?????????????????

Bonjour chez vous !
0

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

Posez votre question
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
27 août 2008 à 12:44
Je suis en VB6 effectivement  dedenet2...
Je recherche une solution que je ne trouve pas persollement et je suis pas nouveau sur VBfrance Mr gillardg !!!

Merci

tolt
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
27 août 2008 à 13:01
quel est le rapport entre le fair d'être nouveau et l'utilisation d'un dialog printer setup??

Bonjour chez vous !
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
27 août 2008 à 13:14
Celui là...Votre message qui dit ceci :gillard ?? c'est qui ???encore un nouveau ???

Mais ce n'est pas grave.Si vous avez la solution ????????????

tolt
0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
27 août 2008 à 13:36
Re ,
Excuse moi gillardg , je me tromperai plus !
je suis aussi nouveau sur le site !!!!!
Pour trouver une solution a son probleme , il faut du temps.




A++
0
cs_tolt Messages postés 269 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 4 avril 2019
27 août 2008 à 13:42
Vraiment pas de soucis Mr gillardg, vous savez à mon âge on est susceptible.
Je suis débutant mais j'aime bien chercher.Mais là je trouve pas...
Je fais un petit logiciel pour ma COPRO et nous avons une vieille imprimante et beaucoup de cartons de papier ZoneVert standard en continu que nous voulons encore utiliser.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
27 août 2008 à 14:07
dans les CommonDialog n' y a il donc pas un printer setting dialog en vb6 ??

est ce plus clair ainsi , en fait c'est la question que je me pose car je n'ai pas vb6 (je l'ai jeté en 2002 avec mon vieux PC)
mais si ce dialog existe il résoudra le problème
donc regarde dans vb6 => common dialog

Bonjour chez vous !
0
dedenet2 Messages postés 372 Date d'inscription vendredi 27 juillet 2007 Statut Membre Dernière intervention 22 juillet 2013 2
27 août 2008 à 16:31
Salut ,
Effectivement , le commondialog existe en VB6.
Il faut le charger ( Microsoft common dialog control 6) dans le projet.
Voici le code de base:
--------------------------------------------------------------------------------------------
Private Sub Command1_Click()
  Dim BeginPage, EndPage, NumCopies, i
  ' Attribue à CancelError la valeur True
  CommonDialog1.CancelError = True
  On Error GoTo ErrHandler
  ' Affiche la boîte de dialogue Impression
  CommonDialog1.ShowPrinter
  ' Récupère les valeurs définies par l'utilisateur dans la boîte
  ' de dialogue
  BeginPage = CommonDialog1.FromPage
  EndPage = CommonDialog1.ToPage
  NumCopies = CommonDialog1.Copies
  For i = 1 To NumCopies
   ' Insérer ici du code pour envoyer des données à l'imprimante
     
                 [UTILISER L'OUTIL PRINTER]

  
  Next i
  Exit Sub
ErrHandler:
  ' L'utilisateur a cliqué sur Annuler
  Exit Sub







End Sub





-----------------------------------------------------------------------------------------------------------------------  


Le commondialog n'exclut pas l'utilsation de l'instruction
"PRINTER".Ce qui permet de configurer le format du papier.

Utilisation des aides pour utiliser PRINTER s'impose.

A+++
0
Rejoignez-nous