Comment imprimer une datagrid?

angelo2008 Messages postés 8 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 14 février 2007 - 5 févr. 2007 à 16:50
jeremm54 Messages postés 1 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 15 mars 2010 - 15 mars 2010 à 16:22
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

le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 novembre 2009
6 févr. 2007 à 02:45
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>
0
angelo2008 Messages postés 8 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 14 février 2007
6 févr. 2007 à 07:56
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. :(
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
6 févr. 2007 à 12:47
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
0
angelo2008 Messages postés 8 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 14 février 2007
8 févr. 2007 à 18:13
merci pour ta reponse mais là j'ai un message d'erreur au niveau de "ds,iCol,DataGrid1
" comme koi c une variable inconnu
0

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

Posez votre question
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
9 févr. 2007 à 09:22
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 
0
angelo2008 Messages postés 8 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 14 février 2007
9 févr. 2007 à 09:25
ca marche pas.

est ce que vous avez une autre methode svp aidez moi c tres urgent et je suis encore debutant :(
0
angelo2008 Messages postés 8 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 14 février 2007
9 févr. 2007 à 09:40
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. :)
0
azzouzmazza Messages postés 3 Date d'inscription vendredi 25 septembre 2009 Statut Membre Dernière intervention 25 septembre 2009
12 mai 2009 à 00:54
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
0
jeremm54 Messages postés 1 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 15 mars 2010
15 mars 2010 à 16:22
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
0
Rejoignez-nous