CodeS-SourceS
Rechercher un code, un tuto, une réponse

Outils d'impression tableaux et documents avec mise en page pour vb6

Soyez le premier à donner votre avis sur cette source.

Vue 13 485 fois - Téléchargée 1 592 fois

Description

(Nouvelle version avec correction Bug le 3/02/04)

Cette librairie permet de créer et d'imprimer des tableaux ou des documents en couleur en respectant les polices de caractères choisies etc...
Par exemple, les chiffres peuvent être en Arial Gras taille 12 et alignés à droite dans les colonnes.

De nouvelles méthodes permettent de tracer les lignes et colonnes ainsi que de définir des couleurs de fonds par colonnes, lignes ou même plages de cellules.
J'ai également fais en sorte que la méthode découpe les tableaux sur plusieurs pages si besoin. (A tester...)

Je donne plus bas un exemple d'utilisation plus complet comme demandé qui
correspond à la capture d'écran.

Il faut enregistrer la dll (regsvr32) et la référencer dans son projet VB.
email : joshrbz@yahoo.fr

Source / Exemple :


Public Sub Test()
     Dim cPrintDoc As clsPrinterDocument
    Dim cLine As clsPrintLine
    Dim cPTab As clsPrintTab
    Dim cFoot As clsPrintParagraph
    Dim cFooter As clsPrintParagraph
    Dim cHeader As clsPrintParagraph
    Dim i As Integer
    
On Error GoTo DoPrintDocumentGotError
    
    'Init
    Set cPrintDoc = New clsPrinterDocument
    Set cFooter = New clsPrintParagraph
    Set cHeader = New clsPrintParagraph
    
    ' on laisse le pied de document vide mais on ajoute une ligne dans le
    ' header
    Set cLine = New clsPrintLine
    cLine.InitAsText "Exemple de tableaux en couleur", "Courier New", 6, True, True, , True
    cLine.SetXY 1000, 0
    cHeader.AddLine cLine
    
    cPrintDoc.Init cHeader, cFooter
    
    ' Marge de gauche
    cPrintDoc.sLeftMargin = 500
    ' Affiche le nombre de page en bas à droite
    cPrintDoc.blnWithPageNumber = True
    
    ' Corps du document : Exemple de ligne
    Set cLine = New clsPrintLine
    cLine.InitAsText "Intitulé de Document", "Times New Roman", 14, True
    cLine.SetXY 1000, 100
    cPrintDoc.AddPrintableObject cLine
     
    ' Corps du document : Exemple de ligne adresse
    Set cLine = New clsPrintLine
    cLine.InitAsText "Adresse", "Arial"
    cLine.SetXY 6000, 500
    cPrintDoc.AddPrintableObject cLine
    
    ' Tableau
    '*******************************************************
    Set cPTab = New clsPrintTab
    ' Initialise le tableau avec 5 colonnes en coordonnées 0,1000
    cPTab.Init 5, 0, 1000, , True
    'largeur et alignement pour chaque colonne
    cPTab.SetColProperties 0, 5000, , False
    cPTab.SetColProperties 1, 1200, , True
    cPTab.SetColProperties 2, 1200, , True
    cPTab.SetColProperties 3, 1200, , True
    cPTab.SetColProperties 4, 1200, , True

    'Affiche la bordure ?
    cPTab.blnWithBorder = True
    ' taille de la bordure
    cPTab.sngBorderWidth = 3
    'Affiche les traits de colonnes ?
    cPTab.blnWithColumn = True
    'Affiche les traits de lignes  ?
    cPTab.blnWithRow = True
    ' Couleur de fond générale
    cPTab.lBackGroundColor = &HFFC0FF
    
    ' couleur de la Colone 1
    Call cPTab.SetColBackGround(1, &HFF8080)
    ' couleur de la ligne 4
    Call cPTab.SetRowBackGround(4, vbMagenta)
    ' Les couleurs des lignes prédomines sur les colonnes ?
    cPTab.blnRowOverColBorder = False
    ' Couleur de la matrice ou plage de cellules de coordonnées (10,1) - (12,3) = vert
    Call cPTab.SetCellBackGround(10, 1, 12, 3, vbGreen)
    
    ' on remplit le tableau avec des valeurs pipeau : 20 lignes
    For i = 0 To 20
        cPTab.SetValue i, 0, "Ligne n " & i
        cPTab.SetValue i, 1, 100 * i
        cPTab.SetValue i, 2, Format(i * 6.55957, "# ###.00")
        cPTab.SetValue i, 3, i & "%"
        cPTab.SetValue i, 4, CStr(i)
    Next i

    ' on ajoute notre tableau au document à imprimer
    cPrintDoc.AddPrintableObject cPTab
       
    'on crée un second tableau : Exemple avec température
    '*************************************************************************************
    Set cPTab = New clsPrintTab
    ' Initialise le tableau avec 2 colonnes en coordonnées 2000,8000
    cPTab.Init 2, 2000, 8000, , True
    'largeur et alignement pour chaque colonne
    cPTab.SetColProperties 0, 2000, , False
    cPTab.SetColProperties 1, 1000, , True
    
    'Affiche la bordure ?
    cPTab.blnWithBorder = False
    'Affiche les traits de colonnes ?
    cPTab.blnWithColumn = False
    'Affiche les traits de lignes  ?
    cPTab.blnWithRow = True
    
    ' couleur de la Colonne 1
    Call cPTab.SetColBackGround(1, &HC0FFC0)
    ' couleur de la ligne 1
    Call cPTab.SetColBackGround(1, &HE0E0E0)
    ' Les couleurs des lignes prédomines sur les colonnes ?
    cPTab.blnRowOverColBorder = True
    
    ' on remplit le tableau avec des valeurs pipeau : 3 lignes
    cPTab.SetValue 0, 0, "MOIS"
    cPTab.SetValue 0, 1, "temp°"
    cPTab.SetValue 1, 0, "Janvier"
    cPTab.SetValue 1, 1, "3°C"
    cPTab.SetValue 2, 0, "Février"
    cPTab.SetValue 2, 1, "8°C"
    cPTab.SetValue 3, 0, "Mars"
    cPTab.SetValue 3, 1, "12°C"
       
    ' on ajoute notre tableau au document à imprimer
    cPrintDoc.AddPrintableObject cPTab
       
    '*******************************************************
    ' Partie Pied de document imprimé que sur la dernière page
    Set cFoot = New clsPrintParagraph
    
    Set cLine = New clsPrintLine
    cLine.InitAsText "Veuillez blablabla", "Arial"
    cLine.SetXY 500, 0
    cFoot.AddLine cLine
    

    Call cPrintDoc.SetDocumentFooter(cFoot)
    
    'On lance l'impression !!!!!!!
    cPrintDoc.DoPrint
    
    Exit Sub
DoPrintDocumentGotError:
    MsgBox "Print Error : " & Err.Description
End Sub

Conclusion :


Désolé pour l'API approximative...

Codes Sources

A voir également

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.