cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 4 avril 2019
-
9 sept. 2008 à 17:21
nadanido
Messages postés1Date d'inscriptionmercredi 29 avril 2009StatutMembreDernière intervention30 mai 2009
-
30 mai 2009 à 17:28
Bonjour,
Un bout de code qui imprime une ListView mais ou je peux moi même choisir le saut de page.
Exemple je fait le saut de page toute les 60 lignes via un compteur.
Il existe beaucoup de code qui imprime une ListView mais aucun n'a pensé que l'utilisateur peut éventuellement choisir la rupture de page.Nous n'imprimons pas uniquement sur du A4...
Si vous avez ce petit bout de code MERCI d'avance.
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 4 avril 2019 9 sept. 2008 à 17:42
Mais non toujours la même réponse...
Il suffit de chosir le nombre de ligne qui fera le saut de page et la ça marche.
J'ai un source de VBfrance qui imprime une ListView mais j'arrive pas à lui faire gérer le fait de sauter de page à un nombre bien qui j'aurais choisi.
cs_tolt
Messages postés269Date d'inscriptionmardi 17 décembre 2002StatutMembreDernière intervention 4 avril 2019 10 sept. 2008 à 07:27
Voilà le code.
Encore une fois je veux juste pouvoir choisir le nombre de ligne avant le saut de page.
Le passer en paramètre dans la fonction.Moi j'y arrive pas...
(Le code n'est pas de moi)
MERCI BEAUCOUP
Public Sub ImprimerListViewZV(lvwSource As ListView, sTitre As String, sSousTitre As String, Optional ByVal sNomPolice As String "Arial", Optional ByVal iTaillePolice As Integer 10, Optional Ori As String)
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 = 50 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
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
If liItem.Index > 50 Then Exit For
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