Base de données access vers excel

0/5 (5 avis)

Vue 46 983 fois - Téléchargée 34 273 fois

Description

Avec ce code vous pourrez importer dans une nouvelle feuille d'un classeur EXCEL les données d'une base ACCESS. Il fait appel au modèle DAO ainsi qu'à la bibliothèque d'objets d'EXCEL. Pensez à les référencer dans le projet.

Source / Exemple :


Option Explicit
'Vous devez avoir installé EXCEL sur votre ordinateur
'Ce code fait appel au modèle DAO ainsi qu'à la bibliothèque d'objet EXCEL
'Il ne faut pas oublier de les référencer dans le projet.

Private Sub cmdBDAEXCEL_Click()
  Dim DBA As Database
  Dim Enreg As Recordset
  Dim Appli As New Application
  Dim Ligne As Long
    
  Dim stFichier As String
    
  If Right(App.Path, 1) = "\" Then
    stFichier = App.Path
  Else
    stFichier = App.Path + "\"
  End If
  
  'Ouverture de la base de données "Depart75.mdb"
  Set DBA = OpenDatabase(stFichier + "Depart75.mdb")
  
  'Ouverture des enregistrements de la table "Depart75"
  Set Enreg = DBA.OpenRecordset("SELECT Lieux, Latitude, Longitude FROM Depart75 ORDER BY Lieux ASC")
  
  Ligne = 1
  Appli.Visible = True
  
  'Création d'un nouveau classeur EXCEL
  Appli.Workbooks.Add
  
  'Feuille 1 du classeur EXCEL créé
  With Appli.ActiveWorkbook.Worksheets("feuil1")
  
  'Premier enregistrement de la table "Depart75"
  Enreg.MoveFirst
  
  'Ecriture dans le fichier "Depart75.xls" tant que la fin de la table "Depart75" n'est pas atteinte
  Do While Enreg.EOF = False
  
  ' Place le contenu du champ "Lieux" dans la 1ère colonne de la feuille EXCEL
    .Cells(Ligne, 1) = Enreg!Lieux
    
  ' Place le contenu du champ "Latitude" dans la 2ème colonne de la feuille EXCEL
    .Cells(Ligne, 2) = Enreg!Latitude
    
  ' Place le contenu du champ "Longitude" dans la 3ème colonne de la feuille EXCEL
    .Cells(Ligne, 3) = Enreg!Longitude
    
  ' Ligne suivante
    Ligne = Ligne + 1
    
  ' Enregistrement suivante
    Enreg.MoveNext
    
    Loop
  
  End With
  
End Sub

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Le Cyd Messages postés 4 Date d'inscription vendredi 26 mai 2006 Statut Membre Dernière intervention 11 mai 2007
6 juin 2006 à 11:48
ACCESS VS/WITH EXCEL. J'ai un probleme avec ces deux applications. J'ai cree une base de donnees sur access qui gere les informations de mon entreprise. Le probleme, c'est que avant que j'arrive dans cette boite, les employes utilisaient excel. Ce qui fait que je dois essayer de faire des mises a jour d'excel vers access.
Ce que je veux dire, c'est que les employes puissent enregistrer leur donnes sur excel mais, qu'en appuyant sur un bouton de validation(qui activerai une macro sans doute ??), leurs donnees soient directement transferees dans la base de donnees Access.De sorte a ce que ca fasse une mise a jour direct.
Mais je ne sais pas du tout comment faire ! Quelqu'un peut-il m'aider ? D'autant plus que je ne connais pas tres bien le langage Visual Basic.
Tsagoi Messages postés 7 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 4 janvier 2005
15 sept. 2003 à 12:16
citation :'Ce code fait appel au modèle DAO ainsi qu'à la bibliothèque d'objet EXCEL
'Il ne faut pas oublier de les référencer dans le projet.

COMMENT ?

svp

merci ;-(
devsurf Messages postés 148 Date d'inscription dimanche 13 octobre 2002 Statut Membre Dernière intervention 13 novembre 2008
18 févr. 2003 à 05:05
Oui pour moi ca marche aussi.
Par cotntre, comment fait on pour exporterune table entiere d'un seul coup- du style (object.exporttable "table") ?
Merci
-------------
Pour info j'ai vu cette source sur excel et souhaiterai l'adapter sur vb:
With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DBQ=C:Program FilesMicrosoft
OfficeOfficeExemplesCOMPTOIR.MDB;DefaultDir=C:Program FilesMicrosoft
OfficeOfficeExemples" _
), Array( _
";Driver={Microsoft Access Driver (*.mdb)};DriverId=281;FIL=MS
Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransac" _
), Array("tions=0;Threads=3;UID=admin;UserCommitSync=Yes;")),
Destination:= _
Range("A1"))
.Sql = Array( _
"SELECT Clients.`Code client`, Clients.Societe, Clients.Contact,
Clients.Fonction, Clients.Adresse, Clients.Ville, Clients.Region,
Clients.`Code postal`, Clients.Pays, Clients.Telephone, Clients.Fax" &
Chr(13) & "" & Chr(10) & "F" _
, _
"ROM `C:Program FilesMicrosoft OfficeOfficeExemplesCOMPTOIR
`.Clients Clients" _
)
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = False
.FillAdjacentFormulas = False
.RefreshOnFileOpen = False
.HasAutoFormat = True
.BackgroundQuery = True
.TablesOnlyFromHTML = True
.Refresh BackgroundQuery:=False
.SavePassword = True
.SaveData = True
End With
End Sub
cs_stryge Messages postés 5 Date d'inscription mardi 7 janvier 2003 Statut Membre Dernière intervention 8 janvier 2003
8 janv. 2003 à 17:25
il n'y a pas besoin de mettre engeg.cells(ligne,1).value pour que ça marche? moi ça me met des erreurs
Merci :) ta reussit a remettre de l'ordre ds ma tete :)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.