Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fenetre shell et choix de fichier

3 réponses
Avatar
Xavier POWAGA
bonjour à tous,
voilà mon pb. Dans mon programme excel je souhaite rapatrier des données se
trouvant dans un autre fichier excel. le pb c'est que cet autre fichier peut
se trouver sous différents répertoires et de ce fait j'envisage de le
chercher via une fenetre shell comme suit :

Set objShell = CreateObject("Shell.Application")
...
Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)


le problème c'est que le code ci-dessus (trouvé chez cathy astuces) marche
bien si je selectionne des répertoires et que je clique sur "OK" mais plante
au niveau du "Set objFolder = ..." dès que je selectionne un fichier et que
je clique sur "OK".
Avez vous une idée ? merci

Xavier

3 réponses

Avatar
Patrick Penet
Excel est l'objet application, il est inutile de le RE-créer.

Le mieux est d'utiliser Application.GetOpenFilename
qui renvoie un chemin correct (string) pour accéder
à un un fichier.

Si l'utilisateur valide un répertiore au lieu d'un fichier
cette fonction gère le problème et attend. Elle ne renvoie
une chaîne vide QUE si il appuie sur ESCAPE.

ex :
Dim sFile as string
sFile= Application.GetOpenFilename(PARAMETRES)

Si le but est de lancer une autre application, utiliser

Dim WS As Object, sPath As String
sPath = LE CHEMIN DE L'APPLICATION
Set WS = CreateObject("WScript.Shell")
WS.Run (sPath)

Patrick Penet

"Xavier POWAGA" a écrit dans le message de news: 44107fef$0$27052$
bonjour à tous,
voilà mon pb. Dans mon programme excel je souhaite rapatrier des données se trouvant dans un autre fichier excel. le pb c'est que
cet autre fichier peut se trouver sous différents répertoires et de ce fait j'envisage de le chercher via une fenetre shell comme
suit :

Set objShell = CreateObject("Shell.Application")
...
Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)


le problème c'est que le code ci-dessus (trouvé chez cathy astuces) marche bien si je selectionne des répertoires et que je clique
sur "OK" mais plante au niveau du "Set objFolder = ..." dès que je selectionne un fichier et que je clique sur "OK".
Avez vous une idée ? merci

Xavier



Avatar
Clément Marcotte
Bonjour,

Tu peux t'inspirer de cela.Si mes souvenirs sont exacts, tu mets le nom du
fichier en colonne a et tu cliques sur le bouton. Il te sort le chemin en
colonne b.

http://cjoint.com/?djwYzHsJBK



"Xavier POWAGA" a écrit dans le message de news:
44107fef$0$27052$
bonjour à tous,
voilà mon pb. Dans mon programme excel je souhaite rapatrier des données
se trouvant dans un autre fichier excel. le pb c'est que cet autre fichier
peut se trouver sous différents répertoires et de ce fait j'envisage de
le chercher via une fenetre shell comme suit :

Set objShell = CreateObject("Shell.Application")
...
Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)


le problème c'est que le code ci-dessus (trouvé chez cathy astuces) marche
bien si je selectionne des répertoires et que je clique sur "OK" mais
plante au niveau du "Set objFolder = ..." dès que je selectionne un
fichier et que je clique sur "OK".
Avez vous une idée ? merci

Xavier



Avatar
Xavier POWAGA
merci patrick, ça marche nickel

xavier

"Patrick Penet" a écrit dans le message de
news: 44108898$0$1149$
Excel est l'objet application, il est inutile de le RE-créer.

Le mieux est d'utiliser Application.GetOpenFilename
qui renvoie un chemin correct (string) pour accéder
à un un fichier.

Si l'utilisateur valide un répertiore au lieu d'un fichier
cette fonction gère le problème et attend. Elle ne renvoie
une chaîne vide QUE si il appuie sur ESCAPE.

ex :
Dim sFile as string
sFile= Application.GetOpenFilename(PARAMETRES)

Si le but est de lancer une autre application, utiliser

Dim WS As Object, sPath As String
sPath = LE CHEMIN DE L'APPLICATION
Set WS = CreateObject("WScript.Shell")
WS.Run (sPath)

Patrick Penet

"Xavier POWAGA" a écrit dans le message de news:
44107fef$0$27052$
bonjour à tous,
voilà mon pb. Dans mon programme excel je souhaite rapatrier des données
se trouvant dans un autre fichier excel. le pb c'est que cet autre
fichier peut se trouver sous différents répertoires et de ce fait
j'envisage de le chercher via une fenetre shell comme suit :

Set objShell = CreateObject("Shell.Application")
...
Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)


le problème c'est que le code ci-dessus (trouvé chez cathy astuces)
marche bien si je selectionne des répertoires et que je clique sur "OK"
mais plante au niveau du "Set objFolder = ..." dès que je selectionne un
fichier et que je clique sur "OK".
Avez vous une idée ? merci

Xavier