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

VBA Access Discussion :

Soucis pour ouvrir une application depuis une autre et fermer l'autre [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut Soucis pour ouvrir une application depuis une autre et fermer l'autre
    Bonjour,

    J'essaie d'automatiser la mise à jour de mon application.
    Je m'explique lorsque l’utilisateur ouvre la base, je vérifie qu'il est en possession de la dernière version.
    Si ce n'est pas le cas j'ouvre l'application "transfert" qui va en gros copier la bonne version et la coller dans l'ordinateur de l'utilisateur.

    J'ai 2 codes VBA, un sur l'application principale qui vérifie la version et qui ouvre l'autre application :
    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
    Private Sub Form_Load()
    'verifie la version
    Dim version_log As String
    Dim version As String
    version_log = Nz(DLookup("[version]", "version_logiciel", "[N°]= 1"), 0)
    version = Nz(DLookup("[version]", "version", "[N°]= 1"), 0)
    If version <> version_log Then
        'ouvre le fichier transfert
        Static ac As Access.Application: Set ac = New Access.Application
        ac.Visible = True
        ac.OpenCurrentDatabase ("Y:\Logiciel\" & "transfert_logiciel.accdb")
        DoCmd.SetWarnings True
     
    End If
     
    End Sub
    Et celui de l'application transfert logiciel qui va fermer l'application principale en cours et qui va procéder au copier/coller puis rouvrir l'application principale mise à jour
    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
    Private Sub Form_Load()
     
     Dim ObjAccess As Object
            Dim Bd As Database
     
            Set ObjAccess = GetObject("C:\logiciel\principale.accdb")
            ObjAccess.Quit
            Set ObjAccess = Nothing
     
            MsgBox ("Votre version du logiciel n'est pas la bonne, il va se mettre à jour")
    'copy le fichier 
        FileCopy "Y:\Logiciel\principale.accdb", "C:\logiciel\principale.accdb"
        'ouvre le fichier
     
    Static ac As Access.Application: Set ac = New Access.Application
        ac.Visible = True
        ac.OpenCurrentDatabase ("C:\logiciel\" & "principale.accdb")
     
    'remet les messages d'erreurs
        DoCmd.SetWarnings True
    'ferme le fichier transfert
        Application.Quit acQuitSaveAll
     
    End Sub
    L'inconvénient c'est que ça ne marche pas, l'appli transfert s'ouvre bien mais elle ouvre une autre application principale et je me trouve avec 3 appli ouvertes et tout est bloqué.

    Si je lance le code VBA du transfert quand l'application principale est déjà ouverte ça fonctionne mais si je pars de 0 et que tout est fermé et que je lance l'appli principale qui ouvre le fichier transfert ça bug.

    Pouvez vous m'aider afin de déceler le problème de code.

    Merci par avance.

    Bonne journée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Dès que la différence de version est constatée, ton application lance le programme/l'application de transfert via un Shell et non pas un GetObject() où tu utiliseras un FindExecutable pour déterminer l'emplacement de MSACCESS.EXE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dblRet=Shell(%MSACCESS.EXE_Path% & " " & CheminCompletDeTonAppli)
    Ton application à mettre à jour invoque alors la méthode Quit.

    Tu peux alors procéder au transfert.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Merci argyronet pour ton aide, mais je ne te cache pas que je suis perdu et n'arrive pas a mettre en place la solution proposée.

    De plus l'application est installée sur plusieurs ordinateurs et sur des bureaux virtuels, je ne risque pas d'avoir des difficultés supplémentaires pour trouver le chemin du logiciel ACCESS?

    Je continue à chercher afin de comprendre la solution proposée.

    Merci encore.

    Cordialement

    Bon Premier mai.


    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  4. #4
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Çà fonctionne, merci pour l'aide.

    Bonne journée

    Sebing
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Ouvrir une application depuis une autre application
    Par Matf4ke dans le forum Android
    Réponses: 1
    Dernier message: 30/11/2012, 10h38
  3. lancer une application depuis une application
    Par walimed dans le forum Android
    Réponses: 2
    Dernier message: 28/02/2012, 10h50
  4. [C++] ouvrir un rapport depuis une application
    Par angelique_93 dans le forum SDK
    Réponses: 1
    Dernier message: 12/08/2009, 14h55
  5. Réponses: 2
    Dernier message: 08/12/2006, 12h51

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