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 Discussion :

Sendkeys sur une fenêtre ouverte par ShowWindow


Sujet :

VBA

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Sendkeys sur une fenêtre ouverte par ShowWindow
    Bonjour,

    J'aimerais passer d'Excel à une fenêtre non Excel sans utiliser SendKeys (alt+tab) car, sur Windows 10, ce jeu de touches affiche ponctuellement la miniature de toutes les fenêtre ouvertes : ça ralentie un peu le processus et perturbe visuellement (opération répétée de nombreuses fois par mon programme).
    J'y arrive avec ShowWindow et le handle mais, une fois la fenêtre affichée, les sendkeys destinés à cette fenêtre ne passent plus. J'ai trouvé une astuce consistant à afficher quelques millisecondes un UserForm mais au final cette option, un peu plus discrète visuellement, est plus longue qu'avec Alt+tab en SendKeys.

    Cordialement,

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    Bonjour,

    C'est un idée complexe de passer par du alt+tab.

    Le handle de fenêtre pose d'autres problèmes, car en effet tu peux espérer avoir une réponse simple si :
    - la fenêtre sur laquelle tu souhaites pointer a un libellé unique


    Si je pars sur toin sujet ouvert en parallèle : https://www.developpez.net/forums/d1...e-connait-nom/

    Ca me semble bien complexe, car si tu mets cette logique en place, tu condamnes l'utilisateur a ne plus pouvoir faire autre chose de son activité sur la machine (comme ouvrir son explorateur Internet ou sa boite Outlook...

    De quelle fenêtre s'agirit-il et quel est le but final de ta demande ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Salut JP,

    Il s'agit d'une macro d’assistance au contrôle de jobs SAP : une liste de jobs sous Excel, une fenêtre SAP en face sur le deuxième écran.
    Le problème que tu as eu la générosité de soulever ne se pose pas aussi durement que tu l'as supposé car une session de contrôles ne dure par longtemps ce qui limite le problème avec alt tab.
    Si je pouvais connaitre l'état d'affichage de la fenêtre tiers (SAP) ce serait encore mieux car je pourrais la passer au premier plan lors de chaque contrôle si elle ne l'est pas déjà.

    Je sais le faire avec cette méthode, qu'elle soit rabaissée ou déjà en plein écran en arrière plan mais ça ralentie et c'est visuellement un peu fatigant (tache répétitive). En attendant je préfère donc rester sur alt tab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'ShowWindow hwnd, 9    ' affiche la fenêtre en petit
    'Sleep 200
    ShowWindow hwnd, 3     'la passe en plein écran
    La fenêtre est cachée en fin de session (ShowWindow hwnd, 0) et ouverte au début et la notice informera qu'on ne doit rien faire d'autre pendant une session.

    L'autre question que tu évoques (deuxième poste) est relative au jumelage de la fenêtre tiers. Ne sachant pas trouver le Handle de la dernière fenêtre ouverte dont je ne connais pas le nom (il varie trop) j'utilise un UserForm trouvé sur un forum. On clique dessus et on relâche sur une fenêtre, il donne le Handle. Sur mon ordi ça fonctionne quelque soit l'affichage de la fenêtre, au travail il faut qu'elle soit passée en plein écran avant. Soit pas mal d'actions à imposer à l'utilisateur que j'aurais aimé automatiser.

    Cordialement,

    Manu

Discussions similaires

  1. Fermeture automatique après X seconde d'une fenêtre ouverte par un bouton
    Par Winckx dans le forum Programmation pour enfants
    Réponses: 0
    Dernier message: 23/01/2019, 14h14
  2. Réponses: 7
    Dernier message: 05/04/2018, 17h06
  3. Reaffiche le contenu d'une fenêtre ouverte par showModalDialog
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/09/2008, 16h26
  4. Réponses: 2
    Dernier message: 06/02/2007, 17h18
  5. Positionner une fenêtre ouverte par un shell
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/12/2006, 08h33

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