1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| Option Explicit
'Penser à vérifier la référence (outils/références) à la bibliothèque
' Microsoft Office x.xx Access Database Engine Object Library
'################################Paramètres de l'application################################
'# paramètres de connexion à la bdd
Const DB_PATH As String = "C:\Users\Maxence\Desktop\Syphochaos\sypho.accdb"
Const USERNAME As String = "Admin" 'Admin est l'utilisateur par défaut
Const PWD As String = "" 'cet utilisateur n'a, par défaut,
' ' pas de mot de passe
'# paramètres pour la source de données
Const NOM_SOURCE As String = "qryData" 'nom d'une table, ou requête sélection
'# paramètres pour Excel
Const NOM_PLAGE As String = "InfosProduits" 'Nom pour le tableau (utilisé avec RechercheV)
Const NOM_COLONNE As String = "RefProduits" 'Nom pour la première colonne du tableau
'#####################################Code applicatif#######################################
Private Sub Workbook_Open()
'---------------------------------------------------------------------------------------
' Procedure : Workbook_Open
' Auteur : Maxence HUBICHE (<a href="http://www.1formaxion.com" target="_blank">http://www.1formaxion.com</a>)
' Date : 20/04/2011
' Objet : Récupérer les données et les mettre dans la feuille Tampon (Feuil2)
' puis, redéfinir la plage, et ce, dès l'ouverture du classeur
'---------------------------------------------------------------------------------------
'
'### Déclaration des variables
' le modèle DAO : DBEngine -> WorkSpace -> Database -> Recordset
Dim oWs As Workspace
Dim oDb As DAO.Database
Dim oRs As DAO.Recordset
'### Affectation des variables
'# WorkSpace
'-- on se fout litérallement du nom du workspace
'-- mais on reprend les paramètres de l'application
Set oWs = DBEngine.CreateWorkspace("azertyuiop", USERNAME, PWD, dbUseJet)
'# Database
'-- ouverture de la base en lecture seule
Set oDb = oWs.OpenDatabase(DB_PATH)
'# Recordset
'-- juste une "photo" (snapshot) des données
Set oRs = oDb.OpenRecordset(NOM_SOURCE, dbOpenSnapshot)
'### Copie des données dans la feuille de tampon, en A1
fcTampon.Cells.Clear
fcTampon.Range("A1").CopyFromRecordset oRs
'### Fermeture des objets créés
oRs.Close: Set oRs = Nothing
oDb.Close: Set oDb = Nothing
oWs.Close: Set oWs = Nothing
'### Redéfinition de la plage nommée
Names.Add NOM_PLAGE, "=" & fcTampon.Range("A1").CurrentRegion.Address(True, True, xlR1C1, True)
Names.Add NOM_COLONNE, "=" & fcTampon.Range("A1").CurrentRegion.Columns(1).Address(True, True, xlR1C1, True)
End Sub |
Partager