Export vers Excel [Résolu]

A voir également:Export vers excelExport vers excel - Saut de lignes ✓ - Forum - MySQL Export vers Excel impossible!!!!!!!!!!!!!!!!! ✓ - Forum - Webmaster Exportation vers excel SAS/AF ✓ - Forum - Programmation Exporter tableau excel vers word - Articles Export ebp vers excel ✓ - Forum - Excel

Bonjour

Note préalable : Je travaille dans l'environnement de VB6 avec Access.

J'ai Une Table en Access (Base de données ) qui contient 720 lignes (Enregistrements), que je faisais afficher sur une DataGrid (DGPlanCptable), avec 18 lignes et une barre de défilement ( vers : Haut et Bas ).
Quand je défile les enregistrements affichés je trouve les 720 lignes.

Mon problème : Lors de la pression de la commande ( Exporter ), l'exportation ne me réussissait pas quand le nombre de lignes dépasse 18, capacité d'affichage de ma DataGrid (DGPlanCptable) selon sa largeur (Height).

Merci de corriger mon code cité ci-dessous pour pouvoir exporter tout le contenu de ma Table en Access (TablePlanComptable), dans la Base de Données .

Mon code est comme suite :



Private Sub CmdExporter_Click()  Dim xlo As Object Dim I, J, L, k As Integer   On Error GoTo errxcel:    Set xlo = CreateObject("Excel.application")   I = RS.RecordCount RS.MoveFirst   DoEvents  xlo.Visible = True xlo.Workbooks.Add   J = DGPlanCptable.Columns.Count  For k = 0 To J - 1  xlo.Workbooks(1).Sheets(1).Cells(L + 1, k + 1) = DGPlanCptable.Columns(k).Caption   Next k  I = 0 RS.MoveFirst  Do While Not RS.EOF  For k = 0 To k - 1  DGPlanCptable.Col = k DGPlanCptable.Row = I  xlo.Workbooks(1).Sheets(1).Cells(I + 2, k + 1) = DGPlanCptable.Text   Next  RS.MoveNext  I = I + 1  Loop  Exit Sub  errxcel:   MsgBox "Aucune feuuille Excel n'est trouvée", vbCritical + vbInformation, "Info !"    End Sub 

Forum

A voir également:Export vers excelExport vers excel - Saut de lignes ✓ - Forum - MySQL Export vers Excel impossible!!!!!!!!!!!!!!!!! ✓ - Forum - Webmaster Exportation vers excel SAS/AF ✓ - Forum - Programmation Exporter tableau excel vers word - Articles Export ebp vers excel ✓ - Forum - Excel

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Soit passer par une commande Access ou par ADO
A voir pour ADO
https://support.microsoft.com/fr-fr/help/247412/methods-for-transferring-data-to-excel-from-visual-basic

Reply
réponses:
  • auteur

  • auteur

    Bonjour

    Merci pour m'avoir orienté vers ce support. Mon problème est résolu.
    Je vous remets mon code après une légère adaptation à mon besoin.

    Par ailleurs, il y'a Deux Observations, lesquelles puevent êtres corrigées manuellement.

    1 La copie des données se faisait d'une façon aléatoire ( Déclassée)
    2 L ' entête de la Table ne s'affiche pas



    Private Sub CmdExporter_Click()   'Create a Recordset from all the records in the Orders table    Dim sNWind As String    Dim conn As New ADODB.Connection        sNWind = _       "C:\Compta\BDCompta.mdb"    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _       sNWind & ";"    conn.CursorLocation = adUseClient    Set RS = conn.Execute("TablePlanComptable", , adCmdTable)        'Create a new workbook in Excel    Dim oExcel As Object    Dim oBook As Object    Dim oSheet As Object    Set oExcel = CreateObject("Excel.Application")    Set oBook = oExcel.Workbooks.Add    Set oSheet = oBook.Worksheets(1)        'Transfer the data to Excel    oSheet.Range("A1").CopyFromRecordset RS        'Save the Workbook and Quit Excel        On Error GoTo nnn:        CmnDialog.ShowOpen                     'oBook.SaveAs "C:\Book1.xls"     oExcel.Quit        'Close the connection    RS.Close    conn.Close        Unload Me     nnn:   end sub

  • auteur

    Re,

    1 La copie des données se faisait d'une façon aléatoire ( Déclassée)
    Pouvez expliquer un peu plus….

    2 L'entête de la Table ne s'affiche pas
    Tout a fait normal Thierry, car vous n'avez que les donnees dans un recordset.
    Vous devez ecrire les entetes

  • auteur

    Re

    Comme je vous le disais, Ces Deux observations sont corrigeables manuellement.
    Je voulais dire par ( déclassée), le transfert des données de la BD vers Excel ne respecte pas l'ordre de l'enregistrement dans la BD. Ce n'est pas grave.

  • auteur

    Re,
    Utilsez une requete sql avec un order by du champ qui est suppose enregistre dans l'ordre plutôt que ceci

    Set RS = conn.Execute("TablePlanComptable", , adCmdTable)

  • auteur

    Re

    Avec toute ma reconnaissance.

    Via la requête SQL avec Order by le transfert a bien réussi dans l'ordre des enregistrements.
    Suite de quoi le code est devenu comme suite:


    Private Sub CmdExporter_Click()   'Create a Recordset from all the records in the Orders table    Dim sNWind As String    Dim conn As New ADODB.Connection        sNWind = _       "C:\Compta\BDCompta.mdb"    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _       sNWind & ";"    conn.CursorLocation = adUseClient    'Set RS = conn.Execute("TablePlanComptable", , adCmdTable)        SQLs = "select * from TablePlanComptable where (Societe='" & CStr(VarSociete) & "')" & "order by Compte asc"         If RS.State = adStateOpen Then RS.Close    RS.Open SQLs, DB, adOpenKeyset, adLockPessimistic                'Create a new workbook in Excel    Dim oExcel As Object    Dim oBook As Object    Dim oSheet As Object    Set oExcel = CreateObject("Excel.Application")    Set oBook = oExcel.Workbooks.Add    Set oSheet = oBook.Worksheets(1)        'Transfer the data to Excel    oSheet.Range("A1").CopyFromRecordset RS        'Save the Workbook and Quit Excel        On Error GoTo nnn:        CmnDialog.ShowOpen                     'oBook.SaveAs "C:\Book1.xls"     oExcel.Quit        'Close the connection    RS.Close    conn.Close        Unload Me     nnn:     End Sub

  • auteur

    Bonjour,

    C'est ok, mais que faite vous des entêtes???

  • auteur

    Bonjour

    Comme vous me l'aviez dis . Je les ajoutais manuellement.

  • auteur

    Bonjour

    Comme vous me l'aviez dis auparavent. Je les ajoutais manuellement.

  • auteur

    Bonjour

    Concernant l'entête j'ai trouvé l'astuce, j'ai passé par la DataGrid.

    Je mets à votre appréciation mon code.


    Private Sub CmdExporter_Click()   'Définition des Connection, et Requête     Dim sNWind As String    Dim conn As New ADODB.Connection        sNWind = "C:\Compta\BDCompta.mdb"    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNWind & ";"    conn.CursorLocation = adUseClient        'Set RS = conn.Execute("TablePlanComptable", , adCmdTable)        SQLs = "select * from TablePlanComptable where (Societe='" & CStr(VarSociete) & "')" & "order by Compte asc"         '__________________________________        'Création de feuille de travail Excel         Dim oExcel As Object    Dim oBook As Object    Dim oSheet As Object    Dim J, k As Integer            '_____L'Entête de la Table        Set oExcel = CreateObject("Excel.Application")    Set oBook = oExcel.Workbooks.Add    Set oSheet = oBook.Worksheets(1)         J = DGPlanCptable.Columns.Count    For k = 0 To J - 1    oExcel.Workbooks(1).Sheets(1).Cells(L + 1, k + 1) = DGPlanCptable.Columns(k).Caption     Next k            '_______________________________________________           'Transfert des données de la BD vers Excel, Avec Copie des données à partir de la ligne n°2         oSheet.Range("A2").CopyFromRecordset RS        'Choix du lieu de sauvegarde            On Error GoTo nnn:        CmnDialog.ShowOpen                          oExcel.Quit            RS.Close    conn.Close        Unload Me     nnn:     End Sub

  • auteur

    Bonjour,

    Vous avez dû passe a cote de la datagrid car il n'y a pas de recherche et écriture d'entête dans ce code!!!!

  • auteur

    Bonjour

    Pas du tout, j'ai pu avoir mon entête, qui est déjà conçu sur ma Datagrid affiché.
    La commande "Exporter" est sur la feuille (Form) qui contient ma DataGrid.

    l'entête est obtenu par :

    J = DGPlanCptable.Columns.Count    For k = 0 To J - 1    oExcel.Workbooks(1).Sheets(1).Cells(L + 1, k + 1) = DGPlanCptable.Columns(k).Caption     Next k

  • auteur

    Re,
    En effet c'est moi qui suit passe a cote

  • auteur

    Re,

    En effet, c'est moi qui suit passe a cote

    Ok, pour le code

  • auteur

    Re

    Je ne peux que m'incliner devant vous par respect. J'ai appris beaucoup de chose avec vous

    un grand MERCI

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Re,
En effet, c'est moi qui suit passe a cote
Ok, pour ce code

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed