cs_Heny
Messages postés125Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention19 avril 2007
-
31 mai 2004 à 12:28
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
23 déc. 2004 à 18:28
Salut a tous
J’aimerais bien que quelqu’un m’aide à résoudre un Pb dans mon application qui consiste a enregistrer l’intégralité d’une table d’Access dans une feuille Excel. J’utilise une ADODC une DATAGRID et bien sur une base de donnée ACCESS. Et merci d’avance de votre aide !!!
'
'
' Export access >> excel
'
' Ne pas opublier de cocher les références dans Pojet
' Microsoft Access et Microsoft DAO
'
'
Private Sub Command1_Click()
Dim db As Database
Dim rq_SQL As String
Dim obj_Access As Access.Application
Dim Nom_Base_Access As String
Dim Nom_Fichier_Excel As String
Dim Nom_Requete As String
' Définition de la base de données
Set db = OpenDatabase(Nom_Base_Access)
' Création de la requète temporaire
rq_SQL = "select * from table1"
db.CreateQueryDef Nom_Requete, rq_SQL
' Création d'un objet Access
Set obj_Access = New Access.Application
' Ouverture de la base Access
obj_Access.OpenCurrentDatabase Nom_Base_Access
' Exportation de la requete vers un fichier excel
' ATTENTION : si le fichier Excel existe, il est écrasé !
' S'il n'existe pas, il est créé
obj_Access.DoCmd.TransferSpreadsheet acExport, , Nom_Requete, Nom_Fichier_Excel
' Fermeture de la base
obj_Access.Quit acQuitSaveNone
' Libération de la mémoire
Set obj_Access = Nothing
' Effacement de la requete temporaire
db.QueryDefs.Delete Nom_Requete
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 21 déc. 2004 à 20:14
Salut vtchikin,
Oui, c'est possible mais c à toi de le gérer.
Par exemple,
Tu peux nommer tes classeurs avec une notion de date :
classeur_AAAAMMJJ.xls
(pour aujourd'hui, ça donnerait classeur_20041221.xls
Dans le code, ça donnerait :
Nom_Fichier_Excel = "c:\test\classeur_" & format$(date,"yyyymmdd") &".xls"
Tu peux même aller plus loin en mettant l'heure :
Nom_Fichier_Excel = "c:\test\classeur_" & Format$(Now, "yyyymmdd_hh-mm") &".xls"
Pour être sûr, après que tu aie défini le nom de ton classeur, tu peux faire quelque chose comme ça :
if dir(Nom_Fichier_Excel) <> "" then
r=msgbox ("Le fichier " & Nom_Fichier_Excel & " Existe déjà ! Voulez-vous l'écraser ?",vbyesno)
end if
if r=vbno then
' ton traitement si non
else
' ton traitement si oui
end if
Les avantages en mettant la date, voire l'heure, c'est :
- qu'il y a moins de chance d'écraser tes fichiers,
- que tu peux conserver un historique
- que tu n'as pas à gérer un numéro de fichier
...
Bonne prog
Cordialement, CanisLupus
Vous n’avez pas trouvé la réponse que vous recherchez ?
vtchikin
Messages postés14Date d'inscriptionlundi 15 novembre 2004StatutMembreDernière intervention 5 décembre 2006 23 déc. 2004 à 11:59
Merci beaucoup pour ces renseignements.
Toutefois dans mon cas bien précis, j'aimerai exporter un tableau croisé dynamique d'access vers excel tout en gardant le lien entre les deux pour n'avoir qu'à raffraichir le tableau croisé dynamique sur excel lié à un formulaire d'access lui même sourcé d'une requette. D'autre part ce tableau croisé dynamique serait utilisé par liaison par d'autres cellules sur d'autres feuilles excel. C'est pourquoi je dois utiliser un fichier excel déjà construit ou les calculs sont automatiques en liaison au tableau croisé dynamique.
En fait, je ne dois pas effacer mon historique mais je dois également incorporer ce tableau dans un fichier "modèle" bien construit et non dans un fichier vierge.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 23 déc. 2004 à 18:28
AIE, ça m'a l'air bien compliqué tout ça.
Je ne sais pas si c'est possible en programmation, surtout la liaison. D'ailleurs, à partir d'access (moi c access 97), même "à la main", je ne vois pas la possibilité d'exporter avec liaison. A partir d'Excel non plus d'ailleurs. Peut-être en utilisant MS Query mais mes connaissances en VBA s'arrêtent bien avant ça.