Imprimer Listview [Résolu]

jctgt 38 Messages postés vendredi 23 décembre 2005Date d'inscription 27 mars 2018 Dernière intervention - 27 déc. 2006 à 22:45 - Dernière réponse : cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention
- 31 déc. 2006 à 16:54
Bonjours,


J'ai un "listview" sur une "form" avec deux "Label" pour les titres
ainsi que deux "CommandButton" dont une est "Termier" et l'autre
"Imprimer"

Le tout apparait très bien à l'écran:  Les colonnes et la liste des items

J'ai cette commande pour imprimer:  "Me.PrintForm"

La formule s'imprime, mais il manque la liste des items qui ne s'imprime pas. Le titre des colonnes et le contour sont imprimé.

Y-aurait-il quelque chose qui n'est pas correct dans la propriété de la
"listview" ou y a-t-il une commande quelconque qui manque?


Merci de m'aider.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 28 déc. 2006 à 09:52
3
Merci
Salut,

Pour l'impression des données de la listView, c'est un peu plus complexe que cette seule instruction.
Tu peux aller voir dans les sources de VBFrance, celle-ci par exemple.
J'en ai une excellente chez moi ... mais je ne suis pas chez moi





Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.

Merci econs 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de econs
jctgt 38 Messages postés vendredi 23 décembre 2005Date d'inscription 27 mars 2018 Dernière intervention - 29 déc. 2006 à 14:02
0
Merci
Merci beaucoup,


Quand tu seras chez-toi, s'il-te-plait, envoie celle que tu as, peut-être est-elle moins compliquée!


Merci encore une fois.
Commenter la réponse de jctgt
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 31 déc. 2006 à 16:37
0
Merci
Salut,
Moi j'ai récuperé cela :

Private Sub Imprimer_Click()
'Appel de la procédure
 Call ImprimerListview1(Me.ListView1, "Ton titre", "Exemple : Inventaire du : " & StrConv(Format(Now, "dddd dd mmmm yyyy"), vbProperCase))
End Sub
Public Sub ImprimerListview1(ListView1 As ListView, stitre As String, ssoustitre As String, Optional ByVal snompolice As String "MS Sans Serif", Optional ByVal itaillepolice 8)
'Déclaration variable pour vérification qu'il y à bien un résultat dans la listwiev1
 Dim total


'Vérifiaction listwiev1
 For total = 0 To ListView1.ListItems.Count
 
 If ListView1.ListItems.Count = 0 Then
    Msgbox 'Tu informes l'utilisateur qu'il n'y à rien dans la listview
    Exit Sub
 End If


         
 On Error GoTo Err_Main


        Const lNB_MAX_ELEM_PAGE As Long = 35
        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
       
       
        stitre = UCase(Trim(stitre))
        'sApplication = App.Title & " VF " & CStr(App.Major) & "." & CStr(App.Minor) & "." & CStr(App.Revision)
        sDate = Format(Now, "dd/mm/yyyy")
       
        '     Calcul de la largeur totale des colonnes du listview
        lLargTot = 0
        For idxCol = 1 To ListView1.ColumnHeaders.Count
                lLargTot = lLargTot + ListView1.ColumnHeaders(idxCol).Width
        Next
       
        '     Détermination du nombre de pages, initialisation du numéro de la première page
        lNbPages = Int(ListView1.ListItems.Count / lNB_MAX_ELEM_PAGE) + 1
        lNumPageCour = 1
        '     Instancie l'imprimante cible (imprimante par défaut)
        With cmdd1
       
                .CancelError = True
                 On Error GoTo sortie
                .Flags = cdlPDPrintSetup
                .ShowPrinter
                .Orientation = cdlLandscape
                 Set p = Printer
        End With
        '     Initialisation de la page
        p.Orientation = vbPRORLandscape        p.Font snompolice: p.FontSize itaillepolice        p.ScaleHeight 100: p.ScaleWidth 100
                       
        '     Positionne le titre et le sous-titre de la page        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
       
        '     Positionne les en-têtes de colonnes
        p.CurrentX = 0
        For idxCol = 1 To ListView1.ColumnHeaders.Count
                lCurXtmp = p.CurrentX
                p.CurrentY = 10
                If ListView1.ColumnHeaders(idxCol).Width > 0 Then
                        p.FontBold = True: p.Print ListView1.ColumnHeaders(idxCol).Text
                End If
                p.CurrentX = lCurXtmp + (ListView1.ColumnHeaders(idxCol).Width * 100) / lLargTot
        Next
        p.Line (0, 13)-(100, 13)
       
        '     Ajout des éléments
        p.CurrentY = 14
        lComptElem = 0
       
        For Each liItem In ListView1.ListItems
                lCurYtmp = p.CurrentY
                For idxCol = 1 To ListView1.ColumnHeaders.Count
                        If ListView1.ColumnHeaders(idxCol).Width > 0 Then
                       
                                '     Détermine le nombre de caractères affichables
                                p.FontBold = False
                                lNbCarAff = Int(((ListView1.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 + (ListView1.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 + (ListView1.ColumnHeaders(idxCol - 1).Width * 100) / lLargTot
                        End If
                Next
               
                '     Incrémente le nombre d'éléments imprimés
                lComptElem = lComptElem + 1
                               
                If lComptElem = lNB_MAX_ELEM_PAGE Then
                        lComptElem = 0  '     Réinitialise le nomde d'élément ecrits
                        p.Line (0, 90)-(100, 90)        '     Trace la ligne de fin de liste                        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    '     Change de page
                        lNumPageCour = lNumPageCour + 1
                        '     Positionne le titre et le sous-titre de la page                        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
                       
                        '     Positionne les en-têtes de colonnes
                        p.CurrentX = 0
                        For idxCol = 1 To ListView1.ColumnHeaders.Count
                                lCurXtmp = p.CurrentX
                                p.CurrentY = 10
                                If ListView1.ColumnHeaders(idxCol).Width > 0 Then
                                        p.FontBold = True
                                        p.Print ListView1.ColumnHeaders(idxCol).Text
                                        p.FontBold = False
                                End If
                                p.CurrentX = lCurXtmp + (ListView1.ColumnHeaders(idxCol).Width * 100) / lLargTot
                        Next
                        p.Line (0, 13)-(100, 13)
                        p.CurrentY = 14
                End If
        Next liItem
       
        '     Ajoute le pied de page de la dernière page
        p.Line (0, 90)-(100, 90)        '     Trace la ligne de fin de liste        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.EndDoc        '     Lance l'impression du document créé
       
Fin:
        On Error Resume Next
        Set p = Nothing
        Exit Sub
       
Err_Main:
        If Not (p Is Nothing) Then p.KillDoc     'Annule l'impressino du document
        MsgBox err.Description, vbCritical, App.Title
        Resume Fin
       
        'End With
        Next total
       
sortie:

Il y a forcément mieux, mais c'est déjà un début !!
A+
Exploreur
Commenter la réponse de cs_Exploreur
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 31 déc. 2006 à 16:54
0
Merci
Euh..Pardon j'ai pas bien vu le lien de ECONS, c'est la même chose!!Veuillez m'excusez de la précipitation de répondre..Econs es-tu en mesure de supprimer ma réponse.Merci d'avance et bon réveillon.
A+
Exploreur


 
Commenter la réponse de cs_Exploreur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.