Macro VBA pour lancer l'application ACCESS
Bonjour,
Je rencontre des difficultées à mettre en place une macro VBA.
Le but de cette macro est simplement :
Au clic du bouton1 => Ouvrir l'application ACCESS (et non pas une base de données uniquement) puis refermer l'application.
Cette manipulation, permet à ma base de données de se mettre à jour grâce à l'écrasant du fichier csv lié.
Je sais pas si mes explications sont assez précises mais voilà ce que je tend à réaliser ! :)
Merci par avance à tous les aideurs !
Macro VBA pour lancer l'application ACCESS
Bonjour MerwannM,
J'utilise cette ligne de code pour ouvrir Autocad.
Tu peux essayer pour ACCESS.
Code:
1 2 3
|
ReturnValue = Shell("C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE", 1) |
Sinon y a cette autre façon:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Public session As Object
'Ouvre Access
Set session = CreateObject("Access.Application")
'Rend Access visible
session.Application.Visible = True
'Fermer Access
session.Application.Quit |
:)
Macro VBA pour lancer l'application ACCESS
Bonjour Merwann,
Si j'ai bien compris ton besoin est d'ouvrir l'application ACCESS et de la refermer? As-tu besoin d'ouvrir un fichier Access (mdb, accdb)?
Pour répondre à ta question, honnêtement je ne sais pas…
J'utilise cette façon pour ouvrir AutoCad et lancer un script en ligne de commande. ce qui donne le code suivant.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
'ouverture d'Autocad
'ouverture d'une nouvelle session Autocad si il n'existe pas de session Autocad ou si on veut ouvrir une nouvelle session
On Error Resume Next
Err.Clear
If AutoCad = 0 Or AutoCad = 7 Then
Set session = CreateObject("Autocad.Application")
End If
If Err.Number <> 0 Then 'action si Autocad n'a pas pu ?tre ouvert
Err.Clear
On Error GoTo 0 'Invalide dans la proc?dure actuelle tout gestionnaire d?erreurs valid?
AutoCad = MsgBox("Autocad n'a pas pu ?tre ouvert.", 16, "Nouvelle session Autocad")
Else
session.Application.Visible = True
'lance le script "Conf.scr"
session.ActiveDocument.SendCommand ("(command)" & Chr(13))
session.ActiveDocument.SendCommand ("filedia 0 ")
session.ActiveDocument.SendCommand ("script " & Chr(34) & CheminEnt & "\Conf.scr" & Chr(34) & Chr(13))
session.Application.Quit
End If |
Pour Access, voici en exemple un code que j'ai écris et que j'utilise.
Quand je veux ouvrir un fichier ACCESS j'utilise la méthode ADO (ActiveX Data Object), pour mettre à jour ma base de données.
Dans le code, j'ouvre ma base et je ferme la base depuis un fichier Excel.
J'ai fais des macros pour l'ouverture et la fermeture pour facilité la lecture de mon code principale et surtout parce que je dois ouvrir et fermer ma base plusieurs fois dans le code principale.
Dans mon code principale je colle une table Access dans une feuille Excel.
Code:
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
' Activer référence Microsoft ActiveX Data Objects 6.1 Library
'Déclaration variables public
Public Cn As ADODB.Connection
Public rs As ADODB.Recordset
Public strCn As String
Public RDest As Variant
Public CheminAccess As String
Public FichierExcel As String
Public Table As String 'Nom de la table Access
Public Chemin1 As String 'Chemin du fichier mdb
Public Fichier1 As String 'Fichier mdb
Public i As Long 'C'est un compteur pour faire la boucle en f(j)
Public j As Long 'C'est un compteur pour lister les table
Public k As Integer 'C'est un conteur pour les feuilles Excel
Public x As Long 'C'est un compteur pour les trois fichiers
Public y As Long 'C'est un compteur pour inserer les ligne
Sub Ouverture_Connection_Access_ADO()
Application.ScreenUpdating = False
' Connection ? la base Access
Set Cn = New ADODB.Connection
strCn = "Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=" & CheminAccess & ";"
Cn.Open strCn
' Ouverture recordset / table
' Objet Recordset repr?sente les enregistrements d'une table
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM" & "[" & Table & "]", Cn, adOpenKeyset, adLockOptimistic
End Sub
Sub Fermeture_Connection_Access_ADO()
Application.ScreenUpdating = False
' Fermeture recordset et connection
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
End Sub
'Code principale
Sub Import_AccessData()
'fige l'?cran
Application.ScreenUpdating = False
FichierExcel = ActiveWorkbook.Name
Workbooks(FichierExcel).Worksheets("Feuil1").Activate
With Worksheets("Feuil1")
Chemin1 = "G:\Test"
Fichier1 = "Equipment.mdb"
CheminF1 = Chemin1 & "\" & Fichier1
Set Dernier_Cellule_Vide = Cells(Cells.Columns.Count, 1).End(xlUp) 'Permet de d?terminer la derni?re cellule vide de la colonne 1
End With
chemin = ActiveWorkbook.Path & "\" & FichierExcel
j = Dernier_Cellule_Vide.Row 'permet de récupérer le N°de ligne dans la variable j
For i = 8 To j 'Boucle pour récupérer les noms des tables à extraire vers Excel
Table = Sheets("Feuil1").Range("A" & i)
'Barre de progression
For x = 1 To 2 'Boucle pour récupérer les tables à extraire vers Excel des 2 fichiers
Select Case x
Case 1
CheminAccess = CheminF1
FeuilleX = "V3R7"
Case 2
CheminAccess = CheminF2
FeuilleX = "V4R1"
End Select
' Connection à la base Access
Call Ouverture_Connection_Access_ADO
'On colle les valeurs sur la feuille "Communs" pour faire la base de recherche.
FichierExcel = ActiveWorkbook.Name
Set RDest = Workbooks(FichierExcel).Sheets("COMMUNS").Cells(Cells.Columns.Count, 1).End(xlUp)
If x <> 1 Then Set RDest = RDest.Offset(1, 0)
On Error Resume Next
' Fermeture recordset et connection
Call Fermeture_Connection_Access_ADO
'Reste de mon code
.
End sub |
Je suis un débutant en VBA, je ne connais pas tout… J'apprends sur le tas!
J'espère que ma réponse pourra t'aider!! :)
Macro VBA pour lancer l'application ACCESS
Re,
En faisant des recherche je suis tombé sur le site de Microsoft et je pense qu'il y a la réponse à ta question.
https://docs.microsoft.com/fr-fr/off...urrentdatabase
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
' Include the following in Declarations section of module.
Dim appAccess As Access.Application
Sub DisplayForm()
Dim strDB as String
' Initialize string to database path.
Const strConPathToSamples = "C:\Program " _
& "Files\Microsoft Office\Office11\Samples\"
strDB = strConPathToSamples & "Northwind.mdb"
' Create new instance of Microsoft Access.
Set appAccess = _
CreateObject("Access.Application")
' Open database in Microsoft Access window.
appAccess.OpenCurrentDatabase strDB
' Open Orders form.
appAccess.DoCmd.OpenForm "Orders"
End Sub |