appel Access depuis Excel vba

alexis

XLDnaute Nouveau
Bonsoir tout le monde!

Je souhaite copier-coller de la façon la plus automatisée possible un fichier texte (ouvert dans excel par macro) dans une table Access fixe.
Je souhaite par exemple ajouter une instruction qui demande à Excel d'ouvrir Access.

Voici ce que j'ai trouvé :

Sub test()
Dim acApp As Object
On Error Resume Next
Set acApp = GetObject('T:\\interv\\scor2.mdb', 'Access.Application')
'Set acApp = CreateObject('Access.Application')
'Set basemdb = acApp.OpenCurrentDatabase('T:\\interv\\scor2.mdb')
'Set acApp = Nothing
acApp.Visible = True
acApp.Close = False
End Sub

Cette macro ouvre 'trop bien' la base Access puisqu'on la voit s'ouvrir mais pour se refermer aussitôt!

Savez vous s'il y a moyen de laisser ouverte cette application Access de manière à ce qu'on n'ait pas à la chercher, à l'ouvrir etc?

Je vous remercie d'avance,

Alexis, débutant en VBA...
 

MichelXld

XLDnaute Barbatruc
bonjour Alexis

je ne suis pas sur d'avoir bien compris mais cet exemple permet d'exporter une plage de cellules Excel dans une Table Access existante . il doit aussi etre possible de transferer le fichier texte directement vers la table


Code:
Sub ajoutDonneesTable()
'necessite d'activer la reference Microsoft ActiveX Data Objects 2.0 Library
Dim Conn As New ADODB.Connection
Dim rsT As New ADODB.Recordset
Dim LoopRange As Range, CurrCell As Range
Dim nomTable As String
Dim i As Byte

nomTable = 'maTable'

With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = 'Microsoft.JET.OLEDB.4.0'
' Ouverture d'une connexion 
.Open ThisWorkbook.Path & '\\MaBase_V02.mdb'
End With

With rsT
.ActiveConnection = Conn
' Ouverture de la nouvelle table. Pour pouvoir ajouter des
' enregistrements dans la table, l'argument Locktype de la
' méthode Open doit être défini à adLockOptimistic
.Open nomTable, LockType:=adLockOptimistic
End With

' Définition de la plage contenant les enregistrements à
' ajouter à la base de données
Set LoopRange = Feuil1.Range('A2:A' & Feuil1.Range('A2').End(xlDown).Row)

' Parcours des informations dans la feuille de calcul
For Each CurrCell In LoopRange
With rsT
' Ajout d'un nouvel enregistrement
.AddNew
' Ajout des informations dans les champs appropriés
.Fields('Code').Value = CurrCell
.Fields('LesDates').Value = CurrCell.Offset(0, 1)
.Fields('Valeurs').Value = CurrCell.Offset(0, 2)
' Écriture du nouvel enregistrement dans la base de données
.Update
End With
Next CurrCell

rsT.Close
Conn.Close
MsgBox 'Export terminé'
End Sub


bonne soiree
MichelXld

Message édité par: MichelXld, à: 23/06/2005 21:08
 

alexis

XLDnaute Nouveau
Bonjour Michel,

L'idée est à peu près là : exporter une plage fixe de données Excel régulièrement vers Access.
Toutefois je préférerais passer par une programmation plus simple : je voudrais faire une simple macro appelant une instance de Access et ouvrant ma base de donnée afin que je puisse la manipuler par la suite

(au lieu d'aller chercher avec la souris l'application Access, puis ouvrir 'à la main' la base de données).

j'avais trouvé une programmation qui marchait à ceci près que l'application se ferme tout de suite après la fin de la macro (Access s'ouvre puis se referme aussitôt) :

Sub test()
Dim acApp As Object
On Error Resume Next
Set acApp = GetObject('T:interv\\scor2.mdb', 'Access.Application')
acApp.Visible = True
acApp.Close = False
End Sub

y a t il un moyen de garder Access ouvert avec cette programmation là?

Merci d'avance,

Alexis
 

julie.l

XLDnaute Nouveau
Re : appel Access depuis Excel vba

Bonjour,

Je cherche également à ouvrir access (+précisémment un formulaire) à partir d'un fichier excel.
J'ai essayé le code ci-dessus et effectivement, cela ouvre access puis le referme aussitôt.

Avez-vous trouvé une solution à ce problème?

Merci d'avance.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 845
Messages
2 092 765
Membres
105 529
dernier inscrit
StarExcel