Comment imprimer une datagrid?

Signaler
Messages postés
8
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
14 février 2007
-
Messages postés
1
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
15 mars 2010
-
Bonjour,

j'ai une datagrid dans mon application que je veux imprimer, le tableau contient plusieur lignes et colonnes donc j'utilise des assenseur pour voir la totalité tu tableau.

avec ce code:

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

Dim myPaintArgs As New PaintEventArgs(e.Graphics, New Rectangle(New _
Point(0, 0), Me.Size))

Me.InvokePaint(DataGrid10, myPaintArgs)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

PrintDocument1.Print()

End Sub

//********************

j'ai pu imprimer le tableau mais pas la totalité seulement la partie qui est observable, si je bouge un peux l'assenseur et je l'ance l'imprission cette nouvelle partie que je voix sera imprimer.

Donc mon probleme c que comment je peux imprimer la totalité du tableau

Merci.

<!-- / message -->

9 réponses

Messages postés
292
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
27 novembre 2009

Cet exemple imprime un contrôle DataGrid.



Private Sub PrintGrid_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles PrintGrid.Click
PrintDocument1.Print()
End Sub

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles _
PrintDocument1.PrintPage
Dim myPaintArgs As New PaintEventArgs(e.Graphics, New Rectangle(New _
Point(0, 0), Me.Size))
Me.InvokePaint(DataGrid1, myPaintArgs)
End Sub

Cet exemple nécessite :

<li>un contrôle Button, nommé PrintGrid, dans le formulaire  </li><li>un contrôle DataGrid nommé DataGrid1 </li><li>un composant PrintDocument nommé PrintDocument1

</li>
Messages postés
8
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
14 février 2007

Bonjour Mr le cancre,

vous avez recopier le meme exemple que moi je pense

vous avez une idé comment resoudre ce genre de pb svp
c'est tres important pour moi, est ce que vous pouvez m'aidez. :(
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,


Voici la fonction pour imprimer un datagrid (elle imprime tout le contenu du datagrid même ce qui n'est pas visible)


Il suffit juste d'appeler la fonction et de lui envoyer en paramètre ton datagrid


Exemple : si ton datagrid s'appelle DataGrid1, pour l'imprimer tu mets imprimer_datagrid(DataGrid1)


Voici le code :

Sub imprimer_datagrid(ByVal ds As DataGrid)

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)

   
' ici on compte le nombre de lignes et de colonnes du datatable
    Dim nbrLigne As Integer = ds.Tables("da").Rows.Count - 1
     Dim nbrColon As Integer = ds.Tables("da").Columns.Count - 1
     Dim x, y As Integer

    For x = 0 To nbrColon
   
   
' ici on prends le titre des colonnes du datatable
        xlSheet.Cells(1, x + 1) = ds.Tables("da").Columns(x).ColumnName
        ' on mets la première ligne en gras
        xlSheet.Rows(1).Font.Bold = True

   
   
' pour chaque colonne et chaque ligne on transfert les données
vers le fichier excel
        For y = 0 To nbrLigne
   
        xlSheet.Cells(y +
3, x + 1) = DataGrid1.Item(y, x)

            xlSheet.Cells(iCol + 3, 4).HorizontalAlignment = 3   ' Centrer horizontalement les cellules

         Next
    Next

        ' Paramétrer les marges de la feuille

        xlSheet.PageSetup.LeftMargin = 0.393700787401575     ' Marge de gauche

        xlSheet.PageSetup.RightMargin = 0.393700787401575    ' Marge de droite

        xlSheet.PageSetup.TopMargin = 0.393700787401575      ' Marge du haut

        xlSheet.PageSetup.BottomMargin = 0.393700787401575   ' Marge du bas


        ' Afficher le quadrillage sur la feuille

        xlSheet.PageSetup.PrintGridlines = True


        ' Afficher le tableau de manière centrer horizontalement sur la feuille

        xlSheet.PageSetup.CenterHorizontally = True


        ' Paramétrer la feuille en mode Paysage

        xlSheet.PageSetup.Orientation = 2

        xlApp.ActiveSheet.printout() ' Lancer l'impression
        xlApp.Quit()   ' Supprime le processus lié à l'impression une fois celle ci terminée

End Sub

N'oubliez pas d'accepter la réponse si elle a réglé votre problème
Messages postés
8
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
14 février 2007

merci pour ta reponse mais là j'ai un message d'erreur au niveau de "ds,iCol,DataGrid1
" comme koi c une variable inconnu
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,


       J'avais quelque petit erreur dans la
fonction maintenant elle devrait normalement bien fonctionner.




Il suffit juste d'appeler la fonction et de lui envoyer en paramètre ton datagrid


Exemple : si ton datagrid s'appelle DataGrid1, pour l'imprimer tu mets imprimer_datagrid(DataGrid1)


Voici le code :


Sub imprimer_datagrid(ds As DataGrid)

    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet

    xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
    xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
    xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)

   
' ici on compte le nombre de lignes et de colonnes du datatable
    Dim nbrLigne As Integer = ds.Tables("da").Rows.Count - 1
     Dim nbrColon As Integer = ds.Tables("da").Columns.Count - 1
     Dim x, y As Integer

    For x = 0 To nbrColon
   
   
' ici on prends le titre des colonnes du datatable
        xlSheet.Cells(1, x + 1) = ds.Tables("da").Columns(x).ColumnName
        ' on mets la première ligne en gras
        xlSheet.Rows(1).Font.Bold = True

   
   
' pour chaque colonne et chaque ligne on transfert les données
vers le fichier excel
        For y = 0 To nbrLigne
   
        xlSheet.Cells(y +
3, x + 1) = DataGrid1.Item(y, x)
            xlSheet.Cells(y + 3, 4).HorizontalAlignment = 3   ' Centrer horizontalement les cellules
         Next
    Next

       ' Paramétrer les marges de la feuille

        xlSheet.PageSetup.LeftMargin = 0.393700787401575     ' Marge de gauche

        xlSheet.PageSetup.RightMargin = 0.393700787401575   ' Marge de droite

        xlSheet.PageSetup.TopMargin = 0.393700787401575     ' Marge du haut

        xlSheet.PageSetup.BottomMargin = 0.393700787401575   ' Marge du bas


       ' Afficher le quadrillage sur la feuille

        xlSheet.PageSetup.PrintGridlines = True


        ' Afficher le tableau de manière centrer horizontalement sur la feuille

        xlSheet.PageSetup.CenterHorizontally = True


        ' Paramétrer la feuille en mode Paysage

        xlSheet.PageSetup.Orientation = 2

        xlApp.ActiveSheet.printout()' Lancer l'impression
        xlApp.Quit()   ' Supprime le processus lié à l'impression une fois celle ci terminée

End Sub

N'oubliez pas d'accepter la réponse si elle a réglé votre problème 
Messages postés
8
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
14 février 2007

ca marche pas.

est ce que vous avez une autre methode svp aidez moi c tres urgent et je suis encore debutant :(
Messages postés
8
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
14 février 2007

Merci bien votre code fonction bien mais il ya un petit probleme.

lors de l'imprission et quand j'ai une cellule qui contient toute une phrase (plusieurs carracterre)
la totalité de la cellule n'est pas imprimer.

tu peux m'aider stp à regler ce petit pb. :)
Messages postés
3
Date d'inscription
vendredi 25 septembre 2009
Statut
Membre
Dernière intervention
25 septembre 2009

bonjour j'ai trouvé un pblème dans les deux instructions suivantes:
xlApp.ActiveSheet.printout()' Lancer l'impression
xlApp.Quit() ' Supprime le processus lié à l'impression une fois celle ci terminée
Messages postés
1
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
15 mars 2010

Bonjour à tous, je suis débutant en VB, je suis sur ce morceau de code depuis quelques heures...
Après avoir résolu quelques soucis je bloque à ce niveau la:

Dim nbrLigne As Integer = ds.Tables("da").Rows.Count - 1

En fait j'ai du mal à comprendre, on passe un DataGrid "ds" mais dans VS2008, cela m'indique que 'Tables' is not a member of System.Windows.Forms.DataGrid



Where is a problem!?

Merci infiniment pour votre aide