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 :

Faire communiquer 2 applications vba


Sujet :

VBA Access

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Par défaut Faire communiquer 2 applications vba
    Bonjour à tous,

    ça fait un moment que je cherche une solution à ce problème alors je me permets de vous solliciter.

    J'aimerais faire communiquer 2 applications vba sur un meme poste.

    Depuis une application A, en cliquant sur un bouton, je lance une application B et je la mets au premier plan avec AppActivate ou SetForgroundWindow.

    J'aimerais en cliquant sur un bouton de l'application A mettre à jour un formulaire de l'application B. La mise à jour se fait par une fonction de l'appli B.

    Je cherche des pistes...

    Y a t'il moyen d'envoyer un message à l'application B pour lui dire d'executer une de ses fonctions?

    ou y a t'il moyen d'executer une fonction stockée à une adresse mémoire depuis n'importe quelle application vba?

    ou y a t il un autre moyen de donner la main à une application et de lui dire d'exectuter une de ses fonctions??

    En vous remerciant par avance

    Noemieze

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    il est toujours possible de passer des informations dans un fichier ecrit par l'application A et lu par l'application B ou plus simplement par la ligne de Commande (voir dans l'aide la fonction Command) si l'information est courte

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Pour ma part, je n'ai pas compris ceci
    J'aimerais en cliquant sur un bouton de l'application A mettre à jour un formulaire de l'application B
    Que veux-tu dire par "mettre à jour un formulaire"?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Par défaut
    bonsoir à tous,

    Tout d'abord merci de m'accorder votre temps.
    Pierre Fauconnier, je vais essayer de mieux m'expliquer.

    Derrière le clique d'un bouton d'une application A il y a ce code :
    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
     
    Private Sub BtnCh_Click()
        On Error GoTo LaunchChir1
     'essaye de mettre au premier plan l'application B si elle est déjà 
     'ouverte pour ne pas lancer une deuxième instance
     
    AppActivate "TitreAppliB"
    'ici j'aimerai déclencher un évènement de l'application B pour mettre à jour le formulaire de l'appli B ouvert au premier plan
     
            Exit Sub
     
    LaunchChir1:
        'Si l'application n'est pas déjà lancer, il faut la lancer (aucun souci)
        ShellExecute(Me.hwnd, "open", CheminAppliB, "", "", 3)
     
     
    End Sub
    Je vérifie d'abord si l'application B est déjà ouverte. Si oui, je la mets en premier plan et je ne l'ouvre pas une deuxième fois. Si l'application n'est pas ouverte je l'ouvre avec shellExecute.

    Ma question :
    Après l'instruction AppActivate, l'application B est lancée et au premier plan. Mais pas avec les données du bon client. J'aimerais 'mettre à jour' l'affichage du formulaire ouvert de l'application B. C'est à dire, faire appel à une fonction FctChargerClient() de l'application B qui s'occupe de mettre à jour tous les élements du formulaire.
    Comment déclencher un evenement de l'application B lorsque je la met au premier plan?


    'Helas' tu me proposes d'utiliser la ligne de commande, je l'utilise déjà lors de la première ouverture mais ce qui me pose problème c'est quand je mets en premier plan la page avec appActivate ou je n'ai plus de ligne de commande.

    'Helas' pour la deuxième solution que tu me proposes : d'écrire dans un fichier et de le lire par l'autre application. Mais comment déclencher l'evènement dans l'application B d'aller lire dans un fichier ?
    Ou meme si je mets la fonction chargée de la mise à jour du formulaire FctChargerClient() derrière un bouton de l'appli B, comment déclencher l'evenement clique de ce bouton depuis l'application A initiale?

    J'espère avoir été plus claire.

    Merci encore pour votre aide qui m'est très précieuse.

    Noemieze

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,

    Le pb est ne sachant pas quelle application tu appelles.
    Bref, l'idée serait de gérer l'appli via un objet ent remplacement du ShellExecute.

    Exemple: pour deux applis Access, L'appli B dispose d'un formulaire FrmClient.

    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
    Dim AppliB as Access.Application
     
    Private Sub Btn_Click()
     LoadUnLoad True 
     AppliB.Visible=True
     Applib.RunCommand AcCmdAppMaximize
     AppliB.DoCmd.OpenForm "FrmClient",WindowMode:=AcDialog
     AppliB.RunCommand AcCmdAppMinimize
     AppliB.Visible=False
    End if
     
    Private Sub LoadUnLoad(fLoadMask as boolean)
     If fLoadMask = (AppliB Is Nothing) Then
      if floadMask then
       Set AppliB=New Access.Application
       AppliB.OpenCurrentDatabase Chemin
      else
       AppliB.CloseCurrentDatabase
       AppliB.Quit AcQuitSaveNone
       Set AppliB=Nothing
     End if
    end if
    End sub
     
    Private Sub Form_Close()
     LoadUnLoad False
    End sub

  6. #6
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Si l'application B est une base Access tu peux utiliser le Timer pour scruter la presence d'un fichier qui après lecture peut être détruit

Discussions similaires

  1. Faire communiquer deux applications
    Par marcootz dans le forum C++
    Réponses: 8
    Dernier message: 05/10/2007, 10h46
  2. Faire communiquer 2 applications
    Par probordelais dans le forum Développement 2D, 3D et Jeux
    Réponses: 10
    Dernier message: 06/08/2007, 16h56
  3. Faire communiquer deux applications
    Par shinji_rem dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/06/2007, 12h04
  4. faire communiquer deux applications j2EE au sein de jBoss
    Par zizoux5 dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 18/04/2007, 21h57
  5. Faire communiquer deux applications
    Par thierrybatlle dans le forum Langage
    Réponses: 1
    Dernier message: 31/01/2006, 09h37

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