Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3100 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Export d'Access vers Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Export d'Access vers Excel

n°1202379
harelde
Posté le 19-09-2005 à 14:13:55  profilanswer
 

Salut à tous,
 
Comme d'hab, j'ai des soucis avec les formats de dates !  :pt1cable:  
Ca me fait le coup à chaque fois que je développe une macro EXCEL ou ACCESS.
 
J'ai fait une requete sous Access que j'ai stocké dans un recordset.
Quand j'appuie sur un bouton "Exporter", le contenu de ce recordset est exporter vers EXCEL.
Ca marche pas mal.
J'ai utilisé le code suivant :
 
xlWs.Cells(2, 1).CopyFromRecordset rst
 
Là où je deviens chèvre, c'est qu'une fois arrivé dans ma feuille EXCEL, tous mes champs "date" sont en numérique.
Un peu chiant à lire.
Comment faire pour que mes formats de date soient conservés dans EXCEL ?
 
Merci de votre aide.
 
Laurent
 
 

mood
Publicité
Posté le 19-09-2005 à 14:13:55  profilanswer
 

n°1202527
olivthill
Posté le 19-09-2005 à 15:52:40  profilanswer
 

Il suffit peut-être, dans la feuille Excel résultante, de sélectionner les cellules qui sont supposées contenir les dates, et de leur donner le format "date".
 
Si cela ne marche pas, il faudrait, du côté Access, exporter en convertissant d'abord les dates avec l'instruction format().

n°1202603
harelde
Posté le 19-09-2005 à 16:38:10  profilanswer
 

Oui, bien sur !
Donner un format date une fois dans EXCEL, c'est simple et sans douleur.
Et si ça ne tenait qu'à moi, je ne me ferais pas chier à modifier mon code pour si peu.
 
Mais mes clients tirent la langue.
"Oui, c'est simple, mais vous ne pourriez tout de même pas..."
Je peux toujours leur coller deux baffes, mais ça ne résoudrait pas mon problème de format.
 
Convertir côté Access avec Format() ?
Mais côté Access, mes dates SONT en format Date !
C'est au cours de l'export que je perd ce format !
 
(Je déteste le lundi !)
 
Laurent

n°1202739
olivthill
Posté le 19-09-2005 à 19:23:49  profilanswer
 

Non, il ne faut pas coller des baffes aux clients qui ... paient.
A la place, si l'on suppose que les dates seront mises dans la colonne B, à partir de B2, voici comment les formatter :

 LineCount = rst.RecordCount
  For iLine = 1 To LineCount
     xlWs.Cells(iLine + 1, 2).NumberFormat = "dd/mm/yyyy"
  Next

En prime, il est possible d'ajuster la largeur et la hauteur des colonnes :

 xlApp.Selection.CurrentRegion.Columns.AutoFit
 xlApp.Selection.CurrentRegion.Rows.AutoFit

Et pourquoi ne pas aussi insérer le titre des colonnes ? Pendant que j'y suis, voici mon exemple en entier :

'Extract data to excel file
Private Sub B_export2excel_Click()
 
  Dim SQL_ligne As String, s As String
  'Dim bds As Database, rst As Recordset
 
  ' Retrieve data from table
  SQL_ligne = "SELECT id, date1, text1" & _
              " FROM T_test;"
  Set bds = CurrentDb
  Set rst = bds.OpenRecordset(SQL_ligne)
   
  ' Create an instance of Excel and add a workbook
  Set xlApp = CreateObject("Excel.Application" )
  Set xlWb = xlApp.Workbooks.Add
  Set xlWs = xlWb.Worksheets(1)
 
  ' Display Excel and give user control of Excel's lifetime
  xlApp.Visible = True
  xlApp.UserControl = True
 
  ' Copy field names to the first row of the worksheet
  fldCount = rst.Fields.Count
  For iCol = 1 To fldCount
     xlWs.Cells(1, iCol).Value = rst.Fields(iCol - 1).Name
  Next
 
  ' Copy entire recordset to excel starting from A2
  xlWs.Cells(2, 1).CopyFromRecordset rst
 
  ' Change the format
  LineCount = rst.RecordCount
  For iLine = 1 To LineCount
'     xlWs.Cells(iLine + 1, 2).NumberFormat = "yyyymmdd"
     xlWs.Cells(iLine + 1, 2).NumberFormat = "dd/mm/yyyy"
  Next
   
  ' Auto-fit the column widths and row heights
  xlApp.Selection.CurrentRegion.Columns.AutoFit
  xlApp.Selection.CurrentRegion.Rows.AutoFit
 
  ' Save an Excel file from MS Access using VBA
  xlApp.Application.ActiveWorkbook.SaveAs FileName:="c:\DEV\XL_test.xls"
       
  'Close the recordset
  rst.Close
   
  ' Quit Excel
  xlApp.Quit
 
End Sub

:)

n°1203117
harelde
Posté le 20-09-2005 à 11:33:37  profilanswer
 

Ah ouaip...
Je pense qu'un truc comme ça doit pouvoir fonctionner...
 
A un détail près  :pt1cable:  
 
Je récupère -1 dans rst.RecordCount !
J'avais déjà eu ce problème !
 
T'as une idée pour récupérer mon recordcount ?
 
Laurent (vais finir par y arriver !)
 

n°1203156
harelde
Posté le 20-09-2005 à 11:51:53  profilanswer
 

C'est bon...
J'ai réussi.
 
Merci !
 

n°1203903
AlainTech
Pas trouvé? Cherche encore!
Posté le 20-09-2005 à 23:17:21  profilanswer
 

1- Il est toujours sympa de dire comment on a résolu un problème.
 
2- Il est encore plus sympa de mettre [Résolu] dans le titre.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1379477
RavenShado​W1
Posté le 02-06-2006 à 09:18:02  profilanswer
 

Colle nous ton code ici stp :) comme ca les personnes ayant le meme probleme pourront a leur tour résoudre ce meme probleme :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Export d'Access vers Excel

 

Sujets relatifs
Insertion d'image dans Access[résolu] redirection vers une page autre site
Lien vers un fichierpiloter une base access depuis excel
Problème de version d'excelLink checker me detecte des liens vers des pages en erreur 404
VB sous excel: un tri sur un triAppel Procédure Stockée Access depuis WinForm VB .Net en OLEDB
[Visual Basic] Export de BD Access vers fichiers Excel...Access : export vers une table excel
Plus de sujets relatifs à : Export d'Access vers Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR