Bonjour,
(modifié: et par avance je m'excuse, j'ai posté dans une section Excel lorsque j'aurais dû le mettre dans la section vba :s
Je ne sais pas si je dois reposter là-bas?!)
Je souhaiterais afficher mon explorer pour ensuite lui faire réaliser une action d'actualisation.
Mon explorer est ouvert mais pas activé, puisque c'est mon fichier Excel qui l'est.
J'ai trouvé une façon d'ouvrir la fenêtre d'explorer qui m'intéresse:
Le souci c'est qu'il m'ouvre une fenêtre jusqu'au dossier voulu, alors que j'en ai déjà un d'ouvert.
Sur internet, j'ai trouvé des codes très compliqués, type celui-ci:
Je sais qu'il teste les fenêtre ouvertes, et si une correspond au chemin souhaité, il la rend visible, sinon il ouvre le dossier.
Dans mon cas, je n'ai pas besoin de test, je sais que la fenêtre conduisant au chemin souhaité est ouverte, mais il me faut l'activer. Et c'est là que la bât blesse, je n'arrive pas à transformer le code ci-dessus en un code qui affiche la fenêtre voulue.
Sauriez vous comment faire svp?
(modifié: et par avance je m'excuse, j'ai posté dans une section Excel lorsque j'aurais dû le mettre dans la section vba :s
Je ne sais pas si je dois reposter là-bas?!)
Je souhaiterais afficher mon explorer pour ensuite lui faire réaliser une action d'actualisation.
Mon explorer est ouvert mais pas activé, puisque c'est mon fichier Excel qui l'est.
J'ai trouvé une façon d'ouvrir la fenêtre d'explorer qui m'intéresse:
VB:
Sub test()
Dim dossier As Variant
dossier = Shell("explorer.exe " & "C:\Users\louis\Documents", vbNormalFocus)
End Sub
Le souci c'est qu'il m'ouvre une fenêtre jusqu'au dossier voulu, alors que j'en ai déjà un d'ouvert.
Sur internet, j'ai trouvé des codes très compliqués, type celui-ci:
Code:
Private Const SW_RESTORE = 9
#If VBA7 Then
Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare PtrSafe Function IsIconic Lib "user32.dll" (ByVal hwnd As Long) As Long
#Else
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function IsIconic Lib "user32.dll" (ByVal hwnd As Long) As Long
#End If
Sub OpenExplorer()
'Launch folder if not already open
Dim strDirectory As String
Dim pID As Variant, sh As Variant
strDirectory = "C:\Users\Ryan\Documents"
'On Error GoTo 102:
Set sh = CreateObject("shell.application")
For Each w In sh.Windows
If w.document.folder.self.Path = strDirectory Then 'if already open, activate it
If CBool(IsIconic(w.hwnd)) Then ' If it's minimized, show it
w.Visible = False
w.Visible = True
ShowWindow w.hwnd, SW_RESTORE
Else
w.Visible = False
w.Visible = True
End If
Exit Sub
End If
Next
'if you get here, the folder isn't open so open it
pID = Shell("explorer.exe " & strDirectory, vbNormalFocus)
102:
End Sub
Je sais qu'il teste les fenêtre ouvertes, et si une correspond au chemin souhaité, il la rend visible, sinon il ouvre le dossier.
Dans mon cas, je n'ai pas besoin de test, je sais que la fenêtre conduisant au chemin souhaité est ouverte, mais il me faut l'activer. Et c'est là que la bât blesse, je n'arrive pas à transformer le code ci-dessus en un code qui affiche la fenêtre voulue.
Sauriez vous comment faire svp?