Impression sur papier pour un logiciel VB.net

Fermé
Gradi Messages postés 16 Date d'inscription vendredi 7 décembre 2012 Statut Membre Dernière intervention 27 décembre 2012 - 27 déc. 2012 à 10:32
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 27 janv. 2013 à 18:42
Bonjour,

j'ai un Problème concernant l'impression sur papier d'une interface VB.net, j'ai écrit un programme VB.net et je veux une situation imprimer sur papier, tel que facture, rapport.

Y a-t-il quelqu'un qui peut m'aider en me donnant le code pour la précédure pour que le programme imprime sur papier. Merci d'avance
A voir également:

8 réponses

Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
27 janv. 2013 à 12:11
Bonsoir, code:

Public Class Form1

    Private Sub Form2ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form2ToolStripMenuItem.Click
        Form2.MdiParent = Me
        Form2.Show()

        Form2.Location = calcul_position()
    End Sub

    Private Sub Form3ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Form3ToolStripMenuItem.Click
        Form3.MdiParent = Me
        Form3.Show()
        Form3.Location = calcul_position()
    End Sub
    '**************************************************************
    '* Fonction calculant la position adéquate pour un formulaire *
    '**************************************************************
    Public Function calcul_position() As Point
        Dim nbform As Integer
        '** Stockage dans la variable "nbform" du nombre de formulaires ouverts dans
        '** le formulaire de menu
        nbform = Me.MdiChildren.Length

        '** Calcul de la position adéquate pour le coin supérieur gauche du formulaire
        '** On définit un point dont les coordonnées X et Y sont calculées de la façon suivante :
        '** - Si 1 formulaire ouvert, cela veut dire que le formulaire à traiter est le seul ouvert
        '**   ==> les coordonnées seront donc (0,0), c'est à dire que le formulaire se placera
        '**       dans le coin supérieur gauche du formulaire de menu.
        '** - Si 2 formulaires ouverts, les coordonnées seront (30,30), c'est à dire que le
        '**   formulaire sera décalé de 30 pixels vers le bas et de 30 pixels vers la droite
        '** - Si 3 formulaires ouverts, les coordonnées seront (60,60), c'est à dire que le
        '**   formulaire sera décalé de 2x30 pixels vers le bas et de 2x30 pixels vers la droite
        '** - Et ainsi de suite.
        Dim p As New Point((nbform - 1) * 30, (nbform - 1) * 30)
        Return p
    End Function
End Class


Et sur ta 2éme page :

Imports System.Data.OleDb
Imports Microsoft.Reporting.WinForms
Imports System.Drawing.Printing

Public Class Form2

    Dim maconnexion As New OleDbConnection
    Dim rdr As OleDbDataReader
    Dim debut As Integer
    Dim numpage As Integer

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim chaineconnexion As String
        chaineconnexion = "provider=microsoft.jet.oledb.4.0; data source=" & Application.StartupPath & "\basetest.mdb"
        maconnexion.ConnectionString = chaineconnexion
        maconnexion.Open()



        debut = 1


        Dim pd As New PrintDocument()
        'Si on voulait se mettre en format paysage, il faudrait activer l'instruction suivante
        'pd.DefaultPageSettings.Landscape = True

        'L'instruction suivante indique que lorsque l'événement "Printpage"
        '(c'est à dire "impression d'une page") se produira sur l'objet "pd",
        'il y aura appel de la procédure "impression_page" (écrite plus bas)
        'C'est dans cette procédure que l'on va programmer l'impression
        AddHandler pd.PrintPage, AddressOf Me.impression_page

        'Création d'un objet "PrintPreviewDialog" et affichage,
        'pour afficher un aperçu avant impression de l'état
        Dim dllg As New PrintPreviewDialog
        dllg.Document = pd
        dllg.ShowDialog()

    End Sub
    '*** Procédure appelée pour chaque page imprimée ****
    Private Sub impression_page(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs)
        'ypos = coordonnée verticale, par rapport au haut de la feuille
        Dim ypos As Integer = ev.MarginBounds.Top ' Marginbounds.top désigne la marge haute

        'xpos = coordonnée horizontale, par rapport au bord gauche de la feuille
        Dim xpos As Integer = ev.MarginBounds.Left

        Dim f As New Font("Times", 11)
        Dim hauteurligne As Integer = f.GetHeight(ev.Graphics)
        Dim resultat As Boolean
        Dim largeurcol As Integer
        Dim largeurligne As Integer = ev.MarginBounds.Width


        'Détermination du nombre de lignes par page.
        'MarginBounds.Height = hauteur de la page, diminuée des marges haute et basse
        Dim nblignes As Integer = ev.MarginBounds.Height / hauteurligne
        Dim cpt As Integer = 0

        'Première lecture de la requête quand on commence l'état
        If debut = 1 Then
            Dim req As String
            req = "select nomorgan, commune from organisateur"
            Dim cmd As New OleDbCommand(req, maconnexion)
            rdr = cmd.ExecuteReader()
            rdr.Read()
            numpage = 1
        End If

        '***************************
        '* Ecriture entête de page *
        '***************************
        ev.Graphics.DrawString("LISTE DES ORGANISATEURS     - Page " & numpage, f, Brushes.Black, xpos, ypos)
        ypos = ypos + hauteurligne
        cpt = cpt + 1
        'Comme dans cet exemple, on va mettre simplement 2 champs sur l'état,
        'on fixe une largeur de colonne égale à la largeur de la page divisée par 2
        largeurcol = ev.MarginBounds.Width / 2

        'Traçage d'un premier rectangle pour encadrer l'entête de colonne "NOM ORGANISATEUR"
        ev.Graphics.DrawRectangle(Pens.Black, xpos, ypos, largeurcol, hauteurligne)

        'Traçage d'un deuxième rectangle pour encadrer l'entête de colonne "COMMUNE"
        ev.Graphics.DrawRectangle(Pens.Black, xpos + largeurcol, ypos, largeurcol, hauteurligne)

        'Ecriture des entêtes de colonnes. Les écritues se feront bien à l'intérieur des cadres
        'car on n'a pas changé la valeur de ypos
        ev.Graphics.DrawString("NOM ORGANISATEUR", f, Brushes.Black, xpos, ypos)
        ev.Graphics.DrawString("COMMUNE", f, Brushes.Black, xpos + largeurcol, ypos)
        debut = 0
        ypos = ypos + hauteurligne
        cpt = cpt + 1


        'On boucle tant que le nb de lignes par page n'est pas atteint
        While cpt < nblignes
            'Ecriture du petit trait vertical figurant au début de chaque ligne 
            ev.Graphics.DrawLine(Pens.Black, xpos, ypos, xpos, ypos + hauteurligne)

            ev.Graphics.DrawString(rdr.Item("nomorgan"), f, Brushes.Black, xpos, ypos)

            'Ecriture du petit trait vertical figurant entre les 2 colonnes
            ev.Graphics.DrawLine(Pens.Black, xpos + largeurcol, ypos, xpos + largeurcol, ypos + hauteurligne)

            ev.Graphics.DrawString(rdr.Item("commune"), f, Brushes.Black, xpos + largeurcol, ypos)

            'Ecriture du petit trait vertical figurant à la fin de chaque ligne 
            ev.Graphics.DrawLine(Pens.Black, xpos + largeurligne + 1, ypos, xpos + largeurligne + 1, ypos + hauteurligne)

            ypos = ypos + hauteurligne
            cpt = cpt + 1
            resultat = rdr.Read()
            If resultat = False Then
                Exit While
            End If
        End While

        'Ecriture du trait horizontal de fin de page
        ev.Graphics.DrawLine(Pens.Black, xpos, ypos, xpos + largeurligne + 1, ypos)

        'S'il y a encore des lignes, on réimprime une page
        If resultat = True Then
            ev.HasMorePages = True
            numpage = numpage + 1
        Else
            ev.HasMorePages = False
            'On repositionne à 1 la variable "debut" car quand l'utilisateur cliquera sur le bouton d'impression
            ' sur la fenêtre d'aperçu avant impression, il y a réexécution de cette procédure "impression_page"
            debut = 1
            rdr.Close()
        End If


    End Sub
End Class
1
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
15 janv. 2013 à 15:14
bonjour, envoie moi ton mail par MP, je peux te passer quelque chose ce soir si tu trouve pas
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
15 janv. 2013 à 16:11
Bonjour Youra87,

Pourquoi ne pas faire profiter la communauté ?

En passant, meilleurs voeux.
0
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
17 janv. 2013 à 21:54
dsl comment ça marche m'empêche de poster mon code... c'est pratique pour partager avec la communauté XD
0

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

Posez votre question
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
18 janv. 2013 à 09:13
T'es bien le seul à ne pouvoir mettre du code sur Comment ça marche.
Il faut bien des exceptions.
Un problème technique ?
0
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
Modifié par Youra87 le 26/01/2013 à 11:42
c'est bon ... enfin non toujours pas .... !!!!!! je colle mon code je prévisualise tout se passe bien je fait répondre ça me l'affiche bien et dés que je rafraichie .... y a plus de réponse.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 26/01/2013 à 14:16
Bonjour,
Si tu ne peu pas poster ton code c'est qu'il contient des mots interdis sur CCM,
Mots grossiers..
ou tel c.r.a.c.k (sans les points bien sûre )
En MP y passe pas non plus ?
A+
EDIT :
je colle mon code je prévisualise tout se passe bien je fait répondre ça me l'affiche bien et dés que je rafraichie .... y a plus de réponse.
Tu dois cliquer sur le bouton Valider..

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
27 janv. 2013 à 12:14
mon post c'est "bonjour , voici mon code : < code > " donc .... je sais pas j'ai encore réessayé ça ne veut toujours pas :/ suis - je ban,interdit de post, y a t'il des limite de taille pour les réponse ?? :/
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
27 janv. 2013 à 13:13
Bonjour Youra87,

Je dois te donner quelques explications à ce sujet.

Ce site est un forum de discussion .. pas vraiment fait pour poster des long codes voire plusieurs fichiers.

On utilise une astuces pour poster des fichier .. on les dépose sur un site de stockage, tel que www.cjoint.com où on peut choisir privé ou non, la durée de stockage, etc.

La personne qui dépose son fichier récupère le lien et le poste avec son message, pour que ceux qui veulent aidé puisse le récupérer et, éventuellement, travailler dessus.

Attention, les codes et fichiers ne doivent pas contenir d'éléments confidentiels ou des données personnelles.

Bon dimanche,
Heliotte.
0
Youra87 Messages postés 47 Date d'inscription mardi 10 avril 2012 Statut Membre Dernière intervention 20 décembre 2013 11
27 janv. 2013 à 15:47
ok c'est bon mon code est posté .. merci encore Heliotte a ne rien y comprendre, peut être parce que j'ai donné le nom de la personne qui est a l'origine de ce code :/ bon dimanche
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
27 janv. 2013 à 18:42
Merci pour ton code Youra, la communauté peut en profiter à présent.
Heliotte.
0