Problème pour exporter une table ACCESS vers EXCEL

PAULOM Messages postés 6 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 24 mai 2006 - 24 avril 2006 à 13:44
PAULOM Messages postés 6 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 24 mai 2006 - 25 avril 2006 à 20:49
Bonjour à tous,



J'ai un petit problème concernant l'exportation d'une table ACCESS vers EXCEL.

Je veux exporter la table "T31_Cumul_Nvx_clients_par_BG" dans la feuille "S0" du fichier EXCEL "Nvx clients par BG 2006 S14.xls".

Dans la table ACCESS il ya le champ le champ "semaine" composé de 2 chiffres, ces 2 chiffres je veux les recupérer pour copier la feuille "S0" pour en faire une "Sxx", je veux également mettre les différents champs dans les feuilles EXCEL.

Puis enfin je veux mettre dans la feuille "Semaine S-1" les données de la feuille "Sxx -1" celle de la semaine précédente.



Pour l'instant j'ai un petit problème avec une fois sur deux cette erreur "462-Le serveur distant n'existe pas ou n'est pas disponible"

Voici pour l'instant mon code:



Option Compare Database



Global Const RepertoireTableauBord As String = "C:\Documents and Settings\A4382\Bureau\stage"

Global Const Titre As String = "Suivi Conquête "

Dim erreur_traitement As Boolean

Sub ExportTblAccessInExcel()



Dim Db As DAO.Database

Dim Rs As DAO.Recordset

Dim Xlapp As Excel.Application

Dim XlBook As Excel.Workbook

Dim XlSheet As Excel.Worksheet



On Error GoTo errOuvrirExcel

Set Xlapp = GetObject(, "Excel.Application")

On Error GoTo oups:

Xlapp.Visible = True



Set XlBook = Xlapp.Workbooks.Open("C:\Documents and Settings\A4382\Bureau\stage\Nvx clients par BG 2006 S14.xls")

Set XlSheet = XlBook.Worksheets("S0")

Set appexcel = New Excel.Application

Numsemaine = "S0"

' efface les données

XlSheet.Cells.Clear

Set Db = CurrentDb

' Copie dans S0

Set Rs = Db.OpenRecordset("T31_Cumul_Nvx_clients_par_BG", , dbOpenForwardOnly)

XlSheet.Range("A1").CopyFromRecordset Rs

Set XlSheet = Nothing

' Ajout de la feuille

Sheets("S0").Select

Sheets("S0").Copy Before:=Sheets(18)

Sheets("S15").Select

ActiveWindow.SelectedSheets.Delete

Sheets("S0 (2)").Select

Sheets("S0 (2)").Name = "S15"

Sheets("_S15").Select

ActiveWindow.SelectedSheets.Delete

' remise au début car le 'CopyFromRecordset' ne le fait pas

Rs.MoveFirst

XlSheet.Range("A1").CopyFromRecordset Rs



' Ferme les Var

Rs.Close: Set Rs = Nothing

Db.Close: Set Db = Nothing

Set XlSheet = Nothing

' Sauve le fichier

XlBook.Save

XlBook.Close

Set XlBook = Nothing

Set Xlapp = Nothing



Exit Sub

errOuvrirExcel:

'Err 429 : Un serveur OLE Automation ne peut pas créer d'objet

' -> Excel n'est PAS encore ouvert.

If Err = 429 Then

Set Xlapp = CreateObject("Excel.Application")

Resume Next

End If

oups:

MsgBox Err.Number & " - " & Err.Description

End Sub






Merci à vous pour votre aide



[Modération, cafeine : Pensez à utiliser la balise [code] qui améliore la lisibilité, merci]

2 réponses

rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
25 avril 2006 à 18:01
Salut 753568 PAULOM,

Ce genre de message arrive notamment si un utilisateur ferme Excel (par le menu qui convient, ou en tuant le process), alors que tu avais une référence à son instance (elle peut aussi arriver si l'instance est terriblement occupée, plantée quoi!), et que tu essaies de manipuler ta référence.
Donc, quand l'erreur arrive, essaies de voir si l'instance existe toujours.

sinon, à quoi sert ta ligne "Set appexcel = New Excel.Application", plus loin dans le code (après avoir ouvert le WorkBook) ?

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
0
PAULOM Messages postés 6 Date d'inscription vendredi 21 avril 2006 Statut Membre Dernière intervention 24 mai 2006
25 avril 2006 à 20:49
OK merci pour ton aide j'ai remodifié mon code à present^^
0
Rejoignez-nous