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 :

Ouverture ACCESS depuis EXCEL. [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Ouverture ACCESS depuis EXCEL.
    Bonjour,

    Je voudrais pouvoir lancer une procédure ACCESS depuis EXCEL.

    Si ACCESS n’est pas ouvert l’ouvrir et lancer la procédure.
    Si ACCESS est ouvert le rendre visible et lancer la procédure.

    Et inversement lancer une procédure EXCEL depuis ACCES dans les même conditions.

    Un grand merci à ceux qui peuvent m’aider ou me mettre sur la bonne voie.
    Philippe
    Ce message est livré avec fautes d'orthographes, et ne sera ni repris ni
    échangé.

  2. #2
    barpasc
    Invité(e)
    Par défaut
    Bonjour,

    il y a plusieurs façons de faire, voici une façon de faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function getCmdlineOutput(cmd As String)
        CreateObject("WScript.Shell").Run "cmd /c """ & cmd & "|clip""", 0, True 'output>clipbrd
        With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
            .GetFromClipboard                             
            getCmdlineOutput = .GetText(1)                 
        End With
    End Function
     
    Sub Demo1()
        'Sheets(1).Range("A1") = getCmdlineOutput("tasklist") 'retourne tous les process dans A1
        Sheets(1).Range("A1") = getCmdlineOutput("tasklist /fo csv")
    End Sub
    il reste à compléter le script pour chercher dans A1, l'occurence "MSACCESS.EXE", rapidement avec l'enregistreur de macro et faire chercher l'occurence, fermer l'enregistreur et récupérer le script pour connaitre la valeur de la méthode find (enregistré par la macro) et modifier le script avec une condition si.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 785
    Points : 28 658
    Points
    28 658
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est possible également de lancer directement une requête d'access depuis Excel simplement à l'aide d'une requête POWER QUERY

    Nom : 220728 dvp Power Query Access.png
Affichages : 172
Taille : 42,4 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Et pour compléter, un tout en un ici
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    J'ai essayé de comprendre un peu comment tout ça fonctionne. Et en essayant plein de choses je suis arrivé à ceci.
    objACCESS.Visible = True fonctionne avec "CreateObject" et quand je l'utilise avec "GetObject" Access ne se met pas au premier plan.
    Je cherche mais soit je ne trouve pas ou je ne comprends pas les subtilités entre les deux.
    Merci de votre aide.


    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
    Dim objACCESS As Object
    Sub SortieVersAcces() '(NumCel As String)
     
    Dim numcel As String
    Dim Fichier As String
     
        numcel = "1110"
        Fichier = ThisWorkbook.Path & "\Gestion.accdb"
     
        'si fichier est ouvert on l'affecte à objACCESS
        On Error GoTo erreur
        Set objACCESS = GetObject(Fichier).Application
     
    'J'ai testé tout ça mais le résultat est le même
    '    objACCESS.Parent.Windows(1).Visible = True
    '    objACCESS.Application.Visible = True
    '    objACCESS.Visible = True
    'Shell "access", vbNormalFocus
    'objACCESS.Application.Activate
     
        objACCESS.Run "EntreeExcel", numcel
        Set objACCESS = Nothing
        Exit Sub
     
    'si fichier n'est pas ouvert on le crée
    erreur:
     
        Set objACCESS = CreateObject("Access.Application")
            objACCESS.OpenCurrentDatabase Fichier
    'ici ça fonctionne
            objACCESS.Visible = True
            objACCESS.Run "EntreeDeExcel", numcel
            Set objACCESS = Nothing
    End Sub
    Philippe
    Ce message est livré avec fautes d'orthographes, et ne sera ni repris ni
    échangé.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ouvrier
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ouvrier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    J'ai trouvé ceci qui a l'air de bien fonctionner.


    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
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As Any) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal Hwnd As Long) As Long
     
    Public Sub VersGestionCell(NumCel As String)
        Dim Fichier As String
        Dim objACCESS As New Access.Application 'Object
        Dim Hwnd As Long
     
        Fichier = ThisWorkbook.Path & "\Gestion.accdb"
    On Error GoTo ERREUR
        Set objACCESS = GetObject(Fichier).Application
        objACCESS.Run "EntreeDeExcel", NumCel
        Set objACCESS = Nothing
        Hwnd = FindWindow(vbNullString, "Access - Gestion : Base de données- D:\Gestion.accdb (format de fichier Access*2007 - 2013)")
        SetForegroundWindow Hwnd
        Exit Sub
     
    ERREUR:
     
        Set objACCESS = CreateObject("Access.Application")
        objACCESS.OpenCurrentDatabase Fichier
        objACCESS.Run "EntreeDeExcel", NumCel
        objACCESS.Visible = True
        Set objACCESS = Nothing
     
    End Sub
    Philippe
    Ce message est livré avec fautes d'orthographes, et ne sera ni repris ni
    échangé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ouverture Access depuis Excel - erreur fermeture automatique
    Par operaq dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/05/2014, 14h36
  2. [XL-2007] Problème d'ouverture Access depuis EXCEL après compactage
    Par Brasileiro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2011, 17h07
  3. Réponses: 15
    Dernier message: 28/03/2008, 10h55
  4. Ouverture d'une table Access depuis Excel
    Par SlySylvain dans le forum Access
    Réponses: 3
    Dernier message: 28/07/2006, 18h36
  5. Renseigner un formulaire Access depuis Excel
    Par vciofolo dans le forum Access
    Réponses: 6
    Dernier message: 30/09/2005, 11h12

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