Communication entre Access et Excel via VBA, Mani de donnle ADO

Vorens

XLDnaute Occasionnel
Bonjour à tous,



Je me vois contrain de déveloper un système automatiser de récupération de données stockées dans Access pour pouvoir les traités dans Excel. J'ai pas de problème quant au traitement ou autres. Mon problème se confine à l'importation des données via VBA car un simple bouton "mise à jours" doit importer les données manquante.

Ce que je ne parvient pas à faire c'est de communiquer avec la base de données. En fesant des recherches, j'ai vu que les deux soft pouvais très bien communiquer entre eux mais via quelque chose qui s'appel RecordSet ADO ou DAO.

Je cherche donc quelqu'un qui peux m'éclairer sur la marche à suivre pour créer le code qui permet d'importer des données d'Access ou même un exemple de code.

J'ai crée un bout de code qui me permet de contacter la base de données mais une fenetre de paramaitrage de MS JET OLE DB s'ouvre et je ne sais pas trop quoi ecrire dans les champ d'une part et dans tout les cas, j'aimerais que ses parametre soit configuré dans le code VBA et pas à la main après coup

Le code:


Code:
NomFichier = "StationData"
FichierFini = CheminAcce & NomFichier & ".mdb"

Sheets("Importation").Activate

     With ActiveSheet.QueryTables.Add(Connection:=Array( _
        "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=FichierFini;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System d" _
        , _
        "atabase="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;J" _
        , _
        "et OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create Syst" _
        , _
        "em Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replic" _
        , "a Repair=False;Jet OLEDB:SFP=False"), Destination:=Range("A33"))
        .CommandType = xlCmdTable
        .CommandText = Array("Donnees")
        .Name = "NomFichier"
        .FieldNames = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .SourceDataFile = _
        "FichierFini"
        .Refresh BackgroundQuery:=False
    End With


Si quelqu'un qui s'y connait bien en base de données et communication Access => Excel pourrais me renseigner je lui en serait très reconnaissant.

Merci de votre aide


Cordialement


Vorens
 

Vorens

XLDnaute Occasionnel
Re : Communication entre Access et Excel via VBA, Mani de donnle ADO

Re,


Voila après avoir cherché, j'ai crée une macro qui permet a Excel d'aller chercher les données contenue dans Access sans avoir de problème d'autorisation.

Le code

Code:
Sub CopyFromRecordset_DAO()



     Dim Db1 As Database

     Dim Rs1 As Recordset
     
     CheminAccet = "S:\Industrialisation\AMELIORATION CONTINU\ETATS EQUIPEMENTS\00432 - SERVOPRESSE PROMESS 15KN ELECTRIQUE\StationData.mdb"

     ' Ouverture de la base de données

     Set Db1 = DBEngine.OpenDatabase(CheminAccet)

     ' Ouverture de la table Factures

     ' Un objet Recordset représente les enregistrements d'une table

     Set Rs1 = Db1.OpenRecordset(Name:="Donnees", Type:=dbOpenDynaset)

     ' Effacement des données existantes dans la WorkSheet (sauf les titres)

     ' et copie des enregistrements

     With Worksheets("DonneesData").Range("A2")



          Selection.ClearContents

          .CopyFromRecordset Rs1

     End With

     'Fermeture de la Base de données

     Db1.Close

End Sub

Pour que cette macro fonctionne, il faut activer en premier lieu le parametre Microsoft DAO 3.6 Object library

Dans la version Excel 2003. ce parametre se trouve dans Outil => référance et ensuite cocher le paramètre dans la liste.

Si vous n'avez pas ce paramètre, le type de varaible Database et Recordset ne sont pas reconnue.

Voila je ne sais pas si ces informations étaient déjà sur le forum au quel cas je ne les ai pas trouvées donc dans le doute j'expose ma solution des fois que dans le future quelqu'un rencontre le même problème que moi il trouvera vite la solution.


Bonne journée
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali