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 :

Passage d'excel vers une autre application


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut Passage d'excel vers une autre application
    Bonjour, voilà après de nombreuse recherche sur le site et sur le net je me suis décidé à venir poser ma question.
    Dans le cadre d’un projet, je suis amené à utiliser une macro vba qui me permet de passer d’Excel vers une autre application (programmé sous TeemTalk) afin de rapatriée des données.
    Pour ce faire j’ais utilisée les API de Windows (fonction FindWindows).
    Néanmoins la macro étant amené à être utiliser à de nombreuse reprise sur une courte période, j’ai remarqué qu’à partir d’un certain moment la fenêtre de l’application appeler beugger (son emplacement sur l’écran se grise, le retour sur Excel a du mal et surtout le rapatriement de l’information voulu ne se fais plus)
    C’est donc vers vous que je me tourne pour demander de l’aide.

    ci-joint mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Appelxxxxx()
    Dim hwnd As Long
     
    hwnd = FindWindow(vbNullString, "xxxxxxx")
    SetForegroundWindow hwnd
    Sleep 200
    ShowWindow hwnd, SW_SHOWMAXIMIZED
    Sleep 200   
    End Sub
    PS : Sans les deux tempo le problème est identique, l'écran se grise et la macro beug

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Un peu au hasard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Appelxxxxx()
    Dim hwnd As Long
     
    hwnd = FindWindow(vbNullString, "xxxxxxx")
    SetForegroundWindow hwnd
    Sleep 200
    DoEvents
    ShowWindow hwnd, SW_SHOWMAXIMIZED
    Sleep 200
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Le DoEvents, me ralenti la macro et du coup je n'ai plus le temps de rapatrier l'information voulu.
    De plus je n'ai pas l'inpression que la macro est plus stable, sans cette commande la macro semble plus fluide.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    "DoEvents" permet d'arrêter l'exécution de la macro le temps que le système exécute ce qu'il a à faire. Le fait que ta macro ralentisse prouve qu'il a beaucoup à faire.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 20
    Par défaut
    Ok, j'ai donc enlevé les deux temporisations (sleep 200) et j'ai ajouté le DoEvents.
    Après quelque répétition de la macro, même symptôme que la première version. L’application à appeler s’active dans la barre de tache, mais la fenêtre qui apparait à l’écran est grise.

    Sinon n'y aurait-il pas une autre fonction en vba me permettant d'activer une application deja ouverte et de la faire passer au premier plan ?

Discussions similaires

  1. [Toutes versions] Comment charger des données d'Excel vers une autre application
    Par orafin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2009, 21h20
  2. Comment transférer une ligne d'une feuille Excel vers une autre
    Par iboulaye1980 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/05/2007, 10h32
  3. [VB]Generer un evenement click vers une autre application
    Par vijeo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/02/2006, 11h22
  4. "event" vers une autre application
    Par devmat dans le forum MFC
    Réponses: 5
    Dernier message: 05/10/2005, 15h15
  5. Réponses: 7
    Dernier message: 30/09/2005, 17h53

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