Syntaxe de commande SHELL

s.ma

XLDnaute Nouveau
Bonjour,

Cherchant à ouvrir un dossier windows en cliquant sur un bouton de mon userform, je ne parviens pas à trouver la bonne syntaxe pour eviter les erreurs.
Après avoir parcouru le forum sur des discussions similaires, je n'ai pas trouvé la source du problème.

Syntaxe 1:

Code:
shell "C:\DOSSIER\Test"

Erreur: Erreur d'execution '5': Argument ou appel de procédure incorrect

Code:
shell ("C:\DOSSIER\Test")

Erreur: Erreur d'execution '5': Argument ou appel de procédure incorrect

Code:
shell ('C:\DOSSIER\Test')

Erreur: Erreur de compilation: Attendu: Expression

Le dernier exemple est celui trouvé sur un autre thread du forum, et qui fonctionne a priori chez l'auteur.
De mon coté, je ne parviens pas à trouver de solution mis à part utiliser l'argument "Explorer.exe" mais le souci c'est que un nouveau process explorer.exe est lancé à chaque sollicitation et au final, le PC sature...

Merci pour votre aide.
 

s.ma

XLDnaute Nouveau
Re : Syntaxe de commande SHELL

Bonjour MJ13; kjin

@MJ13
La macro ouvre() qui est associé au commandbutton "Ouvrir par Explorer" execute éxactement ce que je cherche à faire. Toutefois, je vois que le shell utilise le process explorer.exe mais il n'en lance pas de nouveaux, c'est très interessant, je vais l'experimenter de suite. Merci pour cet exemple!

@kjin
Oui, j'entends bien l'ouverture d'un dossier windows, à l'image d'un raccourci. cela fonctionnait avec l'utilisation du processus explorer.exe mais apres plusieurs clics, je me retrouvais avec une montagne de process explorer.exe lancés dans le gestionnaire de windows.
Pour répondre à ta question, j'ai tenté avec le shell car c'est ce que j'ai trouvé de plus reccurent dans mes recherches avant de venir solliciter le forum via une nouvelle discussion.
Bien entendu, si d'autres solutions existent, je suis preneur :)

Merci à vous de vous etre arrétés sur ma demande. Je fais quelques essais de mon coté et je publierai le resultat.
 

Modeste geedee

XLDnaute Barbatruc
Re : Syntaxe de commande SHELL

Bonsour®

on peut utiliser l'alternative suivante :

Code VBA:
Const SW_SHOW = 1
Const SW_SHOWMAXIMIZED = 3
Const SE_ERR_FNF = 2&
Const SE_ERR_PNF = 3&
Const SE_ERR_ACCESSDENIED = 5&
Const SE_ERR_OOM = 8&
Const SE_ERR_DLLNOTFOUND = 32&
Const SE_ERR_SHARE = 26&
Const SE_ERR_ASSOCINCOMPLETE = 27&
Const SE_ERR_DDETIMEOUT = 28&
Const SE_ERR_DDEFAIL = 29&
Const SE_ERR_DDEBUSY = 30&
Const SE_ERR_NOASSOC = 31&
Const ERROR_BAD_FORMAT = 11&


Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Sub RunYourProgram()
Dim RetVal As Long
On Error Resume Next
RetVal = ShellExecute(0, "open", "chemin complet de l'élément à ouvrir", Vbnullstring, "C:\", SW_SHOWMAXIMIZED)
End Sub





- permet d'ouvrir n'importe quel fichier dont l'extension est connue de Windows.
- Windows utilise alors le programme par defaut associé pour ouvrir le fichier.

le code retour RETVAL permet de connaitre l'anomalie éventuelle :

If the function fails, the return value is an error value that is less than or equal to 32. The following table lists these error values:

0
The operating system is out of memory or resources.

ERROR_FILE_NOT_FOUND
The specified file was not found.

ERROR_PATH_NOT_FOUND
The specified path was not found.

ERROR_BAD_FORMAT
The .EXE file is invalid (non-Win32 .EXE or error in .EXE image).

SE_ERR_ACCESSDENIED
The operating system denied access to the specified file.

SE_ERR_ASSOCINCOMPLETE
The filename association is incomplete or invalid.

SE_ERR_DDEBUSY
The DDE transaction could not be completed because other DDE transactions were being processed.

SE_ERR_DDEFAIL
The DDE transaction failed.

SE_ERR_DDETIMEOUT
The DDE transaction could not be completed because the request timed out.

SE_ERR_DLLNOTFOUND
The specified dynamic-link library was not found.

SE_ERR_FNF
The specified file was not found.

SE_ERR_NOASSOC
There is no application associated with the given filename extension.

SE_ERR_OOM
There was not enough memory to complete the operation.

SE_ERR_PNF
The specified path was not found.

SE_ERR_SHARE
A sharing violation occurred.
 

s.ma

XLDnaute Nouveau
Re : Syntaxe de commande SHELL

Bonsoir,

Bon finalement le fichier joint par MJ13 ne fonctionne plus :)
J'ai une erreur 400 à l'execution de la macro ...
400.png
 

s.ma

XLDnaute Nouveau
Re : Syntaxe de commande SHELL

@kjin
Merci pour le lien kjin, mais cela ne corresponds pas tout a fait a ce que je cherchais car c'est bel et bien un dossier windows que j'avais besoin d'ouvrir et non pas une boite de dialogue excel qui parcoure un dossier lambda.

Le fichier de MJ13 présente tout a fait l'objet de ma demande, je t'invite à l'essayer avec le commandbutton "Ouvre par explorer" si jamais cela n'a pas été clair de ma part.

@Modeste geedee
Ta contribution réponds également parfaitement au besoin. L'aspect présentant les retours d'erreurs est interessant également, mais je ne l'ai pas encore essayé.
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 866
Membres
103 979
dernier inscrit
imed