Copier/coller une feuille Excel avec ACCES

Copier/coller une feuille Excel avec ACCES - VB/VBA/VBS - Programmation

Marsh Posté le 25-04-2006 à 11:57:33    

Bonjour à tous,  
voici mon problème je souhaite copier la table que j'exporte dans la feuille "SXX" dans la feuille "S0" de mon fichier excel, tout ça en VB.
 
Voici mon code:
 

Code :
  1. Option Compare Database
  2. Sub ExportTblAccessInExcel()
  3. Dim Db As DAO.Database
  4. Dim Rs As DAO.Recordset
  5. Dim Xlapp As Excel.Application
  6. Dim XlBook As Excel.Workbook
  7. Dim XlSheet As Excel.Worksheet
  8. Dim NomFeuille As String
  9. On Error GoTo errOuvrirExcel
  10. Set Xlapp = GetObject(, "Excel.Application" )
  11. 'On Error GoTo oups:
  12. On Error GoTo 0
  13. Xlapp.Visible = True
  14. NomFeuille = "S" & DatePart("ww", Date) - 1
  15. 'SemainePré = "S" & DatePart("ww", Date) - 2
  16. Set XlBook = Xlapp.Workbooks.Open("C:\Documents and Settings\A4382\Bureau\stage\Nvx_clients_par_BG_2006_S14.xls" )
  17. 'Set XlSheet = XlBook.Worksheets("S0" )
  18. 'Set XlSheet = XlBook.Worksheets("Semaine S-1" )
  19. If FeuilleExiste(NomFeuille, XlBook) Then
  20.   Set XlSheet = XlBook.Worksheets("NomFeuille" )
  21.  
  22.    ' efface les données
  23.    XlSheet.Cells.Clear
  24. Else
  25.    ' Ajouter nouvelle feuille en dernière position
  26.    Set XlSheet = XlBook.Worksheets.Add(, XlBook.Worksheets(XlBook.Worksheets.Count - 2))
  27.    XlSheet.Name = NomFeuille
  28.  
  29. End If
  30. Set Db = CurrentDb
  31. ' Copie dans feuille (nouvelle ou effacée)
  32. Set Rs = Db.OpenRecordset("T31_Cumul_Nvx_clients_par_BG", , dbOpenForwardOnly)
  33. XlSheet.Range("A1" ).CopyFromRecordset Rs
  34. Set XlSheet = Nothing
  35. ' remise au début car le 'CopyFromRecordset' ne le fait pas
  36. Rs.MoveFirst
  37. XlSheet.Range("A1" ).CopyFromRecordset Rs
  38. ' Ferme les Var
  39. Rs.Close: Set Rs = Nothing
  40. Db.Close: Set Db = Nothing
  41. Set XlSheet = Nothing
  42. ' Sauve le fichier
  43. XlBook.Save
  44. XlBook.Close
  45. Set XlBook = Nothing
  46. Set Xlapp = Nothing
  47. Exit Sub
  48. errOuvrirExcel:
  49. 'Err 429 : Un serveur OLE Automation ne peut pas créer d'objet
  50. ' -> Excel n'est PAS encore ouvert.
  51. If Err = 429 Then
  52. Set Xlapp = CreateObject("Excel.Application" )
  53. Resume Next
  54. End If
  55. oups:
  56. MsgBox Err.Number & " - " & Err.Description
  57. End Sub
  58. Function FeuilleExiste(NomFeuille As String, Classeur As Excel.Workbook) As Boolean
  59. Dim errNum As Long, strName As String
  60.   errNum = 0: Err.Clear
  61.    On Error Resume Next
  62.    strName = Classeur.Worksheets(NomFeuille).Name
  63.    errNum = Err.Number
  64.    On Error GoTo 0
  65.    If errNum = 0 Then FeuilleExiste = True Else FeuilleExiste = False
  66. End Function


Message édité par PAULOM le 25-04-2006 à 12:01:04
Reply

Marsh Posté le 25-04-2006 à 11:57:33   

Reply

Marsh Posté le 25-04-2006 à 15:23:54    

Tout cela est très bien, mais tu n'as fait qu'exposer ton objectif. Quel est ton problème ?

Reply

Marsh Posté le 25-04-2006 à 15:59:07    

Mon probleme est que je n'arrive pas comment copier une feuille excel par l'intermédiaire de VB...
 
En gros je veux que 2 feuilles de mon fichier Excel aient les memes données sous un nom différent.

Reply

Marsh Posté le 25-04-2006 à 17:31:32    

Reply

Sujets relatifs:

Leave a Replay

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