Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

comment activer avec vba une fenêtre de windows ?

1,004 views
Skip to first unread message

Gadget

unread,
Jul 8, 2009, 4:00:47 AM7/8/09
to
Bonjour.
J'aimerais conna�tre le code � utiliser pour rendre active une fen�tre d�j�
ouverte sur le bureau Windows, afin de lui passer des codes de touches �
l'aide de VBA.
Comment on fait?
Merci de vos r�ponses.


FFO

unread,
Jul 8, 2009, 5:14:02 AM7/8/09
to
Salut à toi

Quelque chose comme :

Windows("Mon Doc.xls").Activate

Celà devrait convenir

Dis moi !!!!!

Gadget

unread,
Jul 8, 2009, 5:30:47 AM7/8/09
to
"L'indice n'appartient pas � la s�lection"
Comment trouver l'indice concern� ?
Merci.
"FFO" <F...@discussions.microsoft.com> a �crit dans le message de news:
9A9FAEFD-98F6-42A7...@microsoft.com...
> Salut � toi

>
> Quelque chose comme :
>
> Windows("Mon Doc.xls").Activate
>
> Cel� devrait convenir
>
> Dis moi !!!!!
>


Gadget

unread,
Jul 8, 2009, 5:34:13 AM7/8/09
to
De plus, il me semble que la collection Windows est membre de l'application,
donc qu'elle ne comprend que les fen�tres Excel. Non ?

"Gadget" <a...@zdifu.fr> a �crit dans le message de news:
4a546750$0$17093$ba4a...@news.orange.fr...

FFO

unread,
Jul 8, 2009, 5:48:01 AM7/8/09
to

Rebonjour à toi

Mets cette ligne dans module :

MsgBox (ActiveWindow.Caption)

Aprés avoir activé ta fenètre exécute le code

Le nom de ta fenêtre sera donné dans une boîte de dialogue

Tiens moi informé !!!!!

FFO

unread,
Jul 8, 2009, 5:50:03 AM7/8/09
to

Rebonjour à toi

Effectivement

Quelle fenêtre souhaites tu activer ????


Gadget

unread,
Jul 8, 2009, 6:04:41 AM7/8/09
to
Et comment je fais pour activer au autre fen�tre que celle du VBE quand je
veux envoyer la macro ? J'ai essay� un Wait pour voir, mais il attend qu'on
remette le focus sur excel pour nous indiquer que la fen�tre active est...
Excel.

"FFO" <F...@discussions.microsoft.com> a �crit dans le message de news:

7D9B13EF-21DC-485E...@microsoft.com...
>
> Rebonjour � toi


>
> Mets cette ligne dans module :
>
> MsgBox (ActiveWindow.Caption)
>

> Apr�s avoir activ� ta fen�tre ex�cute le code
>
> Le nom de ta fen�tre sera donn� dans une bo�te de dialogue
>
> Tiens moi inform� !!!!!
>


Gadget

unread,
Jul 8, 2009, 6:06:29 AM7/8/09
to
En fait une fen�tre de Firefox.

"FFO" <F...@discussions.microsoft.com> a �crit dans le message de news:
FFD52021-DAD9-4FD2...@microsoft.com...
>
> Rebonjour � toi
>
> Effectivement
>
> Quelle fen�tre souhaites tu activer ????
>
>


MichDenis

unread,
Jul 8, 2009, 7:30:16 AM7/8/09
to
Bonjour Gadget,

Une fa�on de faire :

Dans un module standard :


'D�claration des API et des constantes dans le haut d'un module standard :

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassname As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long
Declare Function ShowWindow Lib "user32" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

' ShowWindow() Commands
Public Const SW_HIDE = 0
Public Const SW_SHOWNORMAL = 1
Public Const SW_NORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_MAXIMIZE = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_MINIMIZE = 6
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_RESTORE = 9
Public Const SW_SHOWDEFAULT = 10
Public Const SW_MAX = 10
'-----------------------------------

Sub Activer_Voir_Fen�tre()
Dim hwnd As Long, Voir_Fen�tre As String

'Exemple, tu ouvres une fen�tre de
' l'application NotePad
'Texte de la barre de titre de la fen�tre
Voir_Fen�tre = "Sans Titre - Bloc-notes"
hwnd = FindWindow(vbNullString, Voir_Fen�tre)

If hwnd = 0 Then Exit Sub
SetForegroundWindow hwnd
'SW_SHOWDEFAULT tu peux remplacer par une
'des constantes �num�r�es pour l'�tat de
'la fen�tre
ShowWindow hwnd, SW_SHOWDEFAULT
End Sub
'-----------------------------------

"Gadget" <a...@zdifu.fr> a �crit dans le message de groupe de discussion :
4a545238$0$17095$ba4a...@news.orange.fr...

Michel Pierron

unread,
Jul 8, 2009, 8:06:37 AM7/8/09
to

Bonjour Gadget;
Un exemple possible:

Option Explicit
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow& Lib "user32" (ByVal hwnd&, ByVal wCmd&)
Private Declare Function GetWindowLong& Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd&, ByVal nIndex&)
Private Declare Function GetWindowText& Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd&, ByVal lpString$, ByVal aint&)
Private Const mconMAXLEN = 255

Sub FirefoxActivate()
Dim hwnd&, Style&, Title$, i&
hwnd = GetWindow(GetDesktopWindow(), 5)
Do While hwnd
Title = GetCaption(hwnd)
If Len(Title) Then
' Enum visible windows only
If GetWindowLong(hwnd, -16) And &H10000000 Then
If InStr(1, Title, "- Mozilla Firefox", 1) Then
AppActivate Title
Exit Sub
End If
End If
End If
hwnd = GetWindow(hwnd, 2)
Loop
MsgBox "Aucune fen�tre Firefox trouv�e !", 64
End Sub

Private Function GetCaption(hwnd&) As String
Dim i%, Buffer$: Buffer = String$(254, 0)
i = GetWindowText(hwnd, Buffer, 255)
If i Then GetCaption = Left$(Buffer, i)
End Function


"Gadget" <a...@zdifu.fr> a �crit dans le message de

news:4a545238$0$17095$ba4a...@news.orange.fr...

FFO

unread,
Jul 8, 2009, 8:59:01 AM7/8/09
to
Rebonjour à toi

Dans un Module mets ce code :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
Long) As Long
Sub Mamacro()
m_hWnd = FindWindow(vbNullString, "Boîte de réception - Microsoft Outlook")
Call SetForegroundWindow(m_hWnd)
End Sub

En l'état à son exécution ce code active la boîte de réception Outlook si
elle est ouverte

Tu dois actualiser la partie :

m_hWnd = FindWindow(vbNullString, "Boîte de réception - Microsoft Outlook")
Call SetForegroundWindow(m_hWnd)

et plus précisément :

"Boîte de réception - Microsoft Outlook"

du libellé exacte Windows (voir en haut à gauche de la fenêtre Windows de la
fenêtre concerné) que tu souhaites mettre à l'écran

Et ceci au caractère prés
Dans mon exemple il faut entre autre l'accent circonflexe sur le i de Boîte
et un espace de chaque côté du tiret

Fais des essais et dis moi !!!!!

Gadget

unread,
Jul 8, 2009, 9:48:36 AM7/8/09
to
J'ai fait des essais avec le bloc-notes, mais rien ne se passe.
m_hWnd renvoie 0.
J'ai oubli� quelque chose ?

Sub Mamacro()
m_hWnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")
Call SetForegroundWindow(m_hWnd)
MsgBox m_hWnd
Attendre 5
End Sub

"FFO" <F...@discussions.microsoft.com> a �crit dans le message de news:

0B09EADA-CAF4-4F63...@microsoft.com...
> Rebonjour � toi


>
> Dans un Module mets ce code :
>
> Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
> (ByVal
> lpClassName As String, ByVal lpWindowName As Any) As Long
> Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
> Long) As Long
> Sub Mamacro()

> m_hWnd = FindWindow(vbNullString, "Bo�te de r�ception - Microsoft

> Outlook")
> Call SetForegroundWindow(m_hWnd)
> End Sub
>

> En l'�tat � son ex�cution ce code active la bo�te de r�ception Outlook si


> elle est ouverte
>
> Tu dois actualiser la partie :
>

> m_hWnd = FindWindow(vbNullString, "Bo�te de r�ception - Microsoft
> Outlook")
> Call SetForegroundWindow(m_hWnd)
>
> et plus pr�cis�ment :
>
> "Bo�te de r�ception - Microsoft Outlook"
>
> du libell� exacte Windows (voir en haut � gauche de la fen�tre Windows de
> la
> fen�tre concern�) que tu souhaites mettre � l'�cran
>
> Et ceci au caract�re pr�s


> Dans mon exemple il faut entre autre l'accent circonflexe sur le i de

> Bo�te
> et un espace de chaque c�t� du tiret

Gadget

unread,
Jul 8, 2009, 9:55:34 AM7/8/09
to
Ca marche tr�s bien !

merci!

"MichDenis" <mich...@hotmail.com> a �crit dans le message de news:
OLAI597$JHA....@TK2MSFTNGP04.phx.gbl...

FFO

unread,
Jul 8, 2009, 10:16:00 AM7/8/09
to

Rebonjour à toi

Ton code en l'état avec les 2 fonctions :

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As Any) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
Long) As Long


et un bloc note ouvert

Fonctionne chez moi parfaitement et m'a renvoyé le Handle Windows : 3213866

Le bloc note au moment de l'exécution du code doit rester ouvert sinon le
Handle Windows retombe à 0

Vérifies bien car si celà fonctionne chez moi il doit en être de même chez toi

Dis moi !!!!!

Gadget

unread,
Jul 8, 2009, 11:11:35 AM7/8/09
to
J'ai bien refait avec le bloc-note ouvert, toujours 0 en handle...

"FFO" <F...@discussions.microsoft.com> a �crit dans le message de news:

4BE54C3B-61E9-47CC...@microsoft.com...
>
> Rebonjour � toi
>
> Ton code en l'�tat avec les 2 fonctions :


>
> Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
> (ByVal
> lpClassName As String, ByVal lpWindowName As Any) As Long
> Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As
> Long) As Long
>
>
> et un bloc note ouvert
>

> Fonctionne chez moi parfaitement et m'a renvoy� le Handle Windows :
> 3213866
>
> Le bloc note au moment de l'ex�cution du code doit rester ouvert sinon le
> Handle Windows retombe � 0
>
> V�rifies bien car si cel� fonctionne chez moi il doit en �tre de m�me chez
> toi
>
> Dis moi !!!!!
>


FFO

unread,
Jul 8, 2009, 3:12:01 PM7/8/09
to

Rebonjour à toi

Si donc tu as bien respecté la procédure l'anomalie doit se situer au niveau
du nom de la fenêtre Windows concernant le bloc note
Vérifies scrupuleusement à l'accent, l'espace etc.... prés

Si le Handle Windows ramène 0 c'est qu'aucune fenêtre Windows posséde le
nom que tus à mis dans le code ici :

m_hWnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")

es tu certain du tiret entre Bloc et notes et celui entre titre et Bloc
De même pour tous les espaces, Majuscule etc ....

Il doit y avoir une erreur à ce niveau

Tiens moi informé !!!!!

0 new messages