IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro VBA pour lancer l'application ACCESS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 11
    Par défaut 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 !

  2. #2
    Membre confirmé Avatar de Rémy.A
    Homme Profil pro
    Expert SEE ELECTRICAL EXPERT
    Inscrit en
    Juin 2017
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert SEE ELECTRICAL EXPERT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 118
    Par défaut Macro VBA pour lancer l'application ACCESS
    Bonjour MerwannM,

    J'utilise cette ligne de code pour ouvrir Autocad.

    Tu peux essayer pour ACCESS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    ReturnValue = Shell("C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE", 1)
    Sinon y a cette autre façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 11
    Par défaut
    Bonjour Rémy !

    Merci pour ta réponse.
    Cependant, pour la deuxième façon tu demandes d'ouvrir Access mais à quel moment nous pouvons préciser quelle fichier Access ouvrir ?

    Merci à toi

  4. #4
    Membre confirmé Avatar de Rémy.A
    Homme Profil pro
    Expert SEE ELECTRICAL EXPERT
    Inscrit en
    Juin 2017
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert SEE ELECTRICAL EXPERT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 118
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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!!

  5. #5
    Membre confirmé Avatar de Rémy.A
    Homme Profil pro
    Expert SEE ELECTRICAL EXPERT
    Inscrit en
    Juin 2017
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Expert SEE ELECTRICAL EXPERT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2017
    Messages : 118
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 11
    Par défaut
    Remy bonjour,

    Le but est de marquer une pause dans le code, puis de lancer l'application Acces ainsi que de lancer le fichier de ma base de données.

    Avec le code fournit, je ne parviens pas à lancer ma base de données dans l'application Access

    Connais-tu une solution ?

    Merci beaucoup !

Discussions similaires

  1. [XL-2010] Macro VBA pour lancer une commande terminal (Ouvrir PostGresQL)
    Par EAbadie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/03/2018, 15h20
  2. [AC-2010] problème pour lancer une application access via un menu en VBA
    Par Bmichel59 dans le forum VBA Access
    Réponses: 1
    Dernier message: 28/10/2014, 18h58
  3. Macro Excel pour un import vers access
    Par Nicola dans le forum Access
    Réponses: 6
    Dernier message: 21/02/2007, 15h50
  4. [VBA-E] Macro VBA pour personaliser mon .doc depuis mon .xls
    Par korntex5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2006, 16h01
  5. Fonction pour lancer les applications standards
    Par black is beautiful dans le forum Windows
    Réponses: 4
    Dernier message: 08/03/2006, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo