Activer fenêtre déjà ouverte programme externe

Bonjour à tous,

après de nombreuses heures de recherche je me tourne vers le forum qui a souvent la bonne solution.

Lorsque j'exécute un programme à l'aide d'une macro VBA, si le programme était déjà ouvert j'ai une deuxième fenêtre qui s'ouvre. Seulement, la suite de ma macro est censée travailler dans la fenêtre nouvellement ouverte et non dans la fenêtre déjà existante. Y-a-t-il un moyen de "activer" une fenêtre spécifique d'un programme externe à l'aide de VBA ? (par exemple le nom de la fenêtre déjà ouverte est "modifier article" ou autre, et le nom de la nouvelle fenêtre sera toujours "SAP Easy Access". Les deux fenêtres (ou plusieurs) venant du même programme mais nommées différemment.

Merci !! :)

Bonjour Lorenzo,

Sur ton précédent post, je t'avais dit que j'avais une vague idée d'un code que j'avais vu. Il s'agissait d'un code (de patricktoulon ) pour cibler une fenetre IE mais, avec un peu de chances, en attendant qu'un expert te réponde, je tente une adaptation, sans grande conviction :

Sub Capter_SapGui()

Dim wshshell
Dim ShellWindows 
Dim SapGui

Set wshshell = CreateObject("Shell.Application")
'Set wshshell = CreateObject("WScript.Shell")
Set ShellWindows = wshshell.Windows

For i = 0 To ShellWindows.Count - 1
    If ShellWindows.Item(i).FullName Like "C:\Program Files (x86)\SAP\FrontEnd\SAPgui*" Then
        Set SapGui = ShellWindows.Item(i)
    End If
Next

End sub

L'idée étant de parcourir les programmes et de capter chaque programme dont le nom correspond à celui cherché. Le dernier objet capté correspondrait alors à la fenêtre active (la dernière ouverte) de cette application. Mais je n'ai ni SAP ni connaissance de l'objet Shell donc c'est plus un essai d'audace et d'encouragement .

Cdlt,

bonjour 3GB,

merci pour votre aide, je vais essayer ça ce matin merci !!

:)

Alors malheureusement sans succès... le script vbs que je lance depuis le code VBA ne reconnait plus la fenêtre SAP

Rebonjour,

j'ai pu contourner le problème même si ce n'est pas très propre..

j'ai remplacé la ligne

Shell "wscript ""U:\9 Contrôle FM-SAP\SAP\Scripts export sap\Export_articles_PRD.vbs"""

par le code en vbs enregistré sur SAP en lui même :

session.findById("wnd[0]").SetFocus
session.findById("wnd[0]/tbar[0]/okcd").Text "sq00"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/mbar/menu[5]/menu[0]").Select
session.findById("wnd[1]/usr/radRAD1").Select
session.findById("wnd[1]/tbar[0]/btn[2]").press
session.findByI...

à priori ça exécute bien le code dans la fenêtre "home"

ligne 1 : session.findById("wnd[0]").SetFocus

comme ça si j'ai une autre fenêtre SAP ouverte ça ne vas pas l'activer. à la limite ça va activer une autre fenêtre SAP qui est déjà la fenêtre d'acceuil donc ça irait aussi.

si quelqu'un a une autre solution pour réussir à sélectionner la fenêtre "SAP Easy Access"

image

je suis preneur :) merci à vous !!!

Bonjour,

Bravo si une partie du problème est résolu !

Je n'ai pas beaucoup d'idée malheureusement mais je me dis qu'il y a peut-être quelque chose à jouer avec

session.findById("wnd[1]/usr/radRAD1").Select

sachant que

wnd[1]

correspond probablement à la fenêtre. Et sinon, en essayant de trouver avec la méthode findbyId "SAP Easy Access"...

Mais peut-être que tu gagnerais du temps en appelant SAP directement.

Cdlt,

Rechercher des sujets similaires à "activer fenetre deja ouverte programme externe"