Export vers Excel
Résolu
Lenouveauapprenti
Messages postés
306
Date d'inscription
Statut
Membre
Dernière intervention
-
Lenouveauapprenti Messages postés 306 Date d'inscription Statut Membre Dernière intervention -
Lenouveauapprenti Messages postés 306 Date d'inscription Statut Membre Dernière intervention -
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 :
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
A voir également:
- Export vers Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
2 réponses
Bonjour,
Soit passer par une commande Access ou par ADO
A voir pour ADO
https://docs.microsoft.com/fr-fr/office/troubleshoot/excel/transfer-data-to-excel-from-vb
Soit passer par une commande Access ou par ADO
A voir pour ADO
https://docs.microsoft.com/fr-fr/office/troubleshoot/excel/transfer-data-to-excel-from-vb
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
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
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.
Utilsez une requete sql avec un order by du champ qui est suppose enregistre dans l'ordre plutôt que ceci
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: