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

[VBA] Erreur à l'utilisation d'un Browser

3 réponses
Avatar
HD
Bonjour,



Sur mon ancien PC (Windows 98 avec Excel 97) j'utilisais une macro qui
fonctionnait très bien. Celle ci faisait appelle à un petit browser me
permettant de sélectionner suivant les cas un fichier ou un répertoire tout
en ayant préciser le répertoire racine à partir duquel lancer le browser...



Mais le problème est que sur mon nouveau PC (Windows XP Pro avec Excel 2007)
la fonction ne marche plus... J'ai bien le browser qui apparait avec les
bonnes options mais dès que je clique sur le bouton "Ok" j'ai
systématiquement le message d'erreur suivant :

« La méthode 'BrowseForFolder' de l'objet 'IShellDispatch4' a échoué »



J'ai essayé de l'utiliser sur un autre poste (Windows XP avec Excel 2003)
mais j'ai le même résultat. Voici mes lignes :



<<

Dim objShell, objFolder, Chemin, SecuriteSlash, FlagChoix&, Msg$



Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)

>>



L'erreur se porte sur la dernière ligne... Savez vous comment corriger le
problème ?



Merci d'avance pour votre aide



@+

HD

3 réponses

Avatar
MichDenis
Le type de procédure auquelle tu fais référence est ceci :

On la retrouve sur le site de Frédérie Sigonneau et peut être aussi
sur le site de Misange (je n'ai pas vérifié)

La difficulté que tu as constatée existe vraiment lorsqu'il s'agit de
récupérer le "chemin + le fichier" sélectionnés dans la "Browser"

Pourtant pour récupérer le répertoire choisi, cela fonctionne très bien,
il s'agit de remplacer &H4000 par 512 dans la fonction.

Je crois bien que tu devras apprendre de te passer de cette fonction dans
le cas de recherche de fichiers. (Microsoft trouvait que les usagers s'en
tiraient trop bien !)

Je ne connais pas beaucoup de fonctions qui permettent de récupérer le
chemin et le nom du fichier tout EN LIMITANT l'arborescence des fichiers
affichables dans le Browser au répertoire d'ouverture mentionné.

'--------------------------
Sub Essai()
choix = ChoixDossierFichier("C:Atravail")
If choix = "" Then MsgBox "aucun fichier choisi" Else MsgBox choix
End Sub
'--------------------------
Function ChoixDossierFichier$(Optional Racine)
Dim objShell, objFile, chemin, SecuriteSlash, FlagChoix&, Msg$
On Error Resume Next
If IsMissing(Racine) Then Racine = CurDir
Msg = "Choisissez le fichier à ouvrir :"
Set objShell = CreateObject("Shell.Application")
Set objFile = objShell.BrowseForFolder(0, Msg, &H4000, Racine)
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).path & ""
ChoixDossierFichier = chemin
End Function
'--------------------------





"HD" a écrit dans le message de news: f72i0s$ghl$
Bonjour,



Sur mon ancien PC (Windows 98 avec Excel 97) j'utilisais une macro qui
fonctionnait très bien. Celle ci faisait appelle à un petit browser me
permettant de sélectionner suivant les cas un fichier ou un répertoire tout
en ayant préciser le répertoire racine à partir duquel lancer le browser...



Mais le problème est que sur mon nouveau PC (Windows XP Pro avec Excel 2007)
la fonction ne marche plus... J'ai bien le browser qui apparait avec les
bonnes options mais dès que je clique sur le bouton "Ok" j'ai
systématiquement le message d'erreur suivant :

« La méthode 'BrowseForFolder' de l'objet 'IShellDispatch4' a échoué »



J'ai essayé de l'utiliser sur un autre poste (Windows XP avec Excel 2003)
mais j'ai le même résultat. Voici mes lignes :



<<

Dim objShell, objFolder, Chemin, SecuriteSlash, FlagChoix&, Msg$



Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)







L'erreur se porte sur la dernière ligne... Savez vous comment corriger le
problème ?



Merci d'avance pour votre aide



@+

HD


Avatar
HD
Function ChoixDossierFichier$(Optional Racine)
Dim objShell, objFile, chemin, SecuriteSlash, FlagChoix&, Msg$
On Error Resume Next
If IsMissing(Racine) Then Racine = CurDir
Msg = "Choisissez le fichier à ouvrir :"
Set objShell = CreateObject("Shell.Application")
Set objFile = objShell.BrowseForFolder(0, Msg, &H4000, Racine)
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).path & ""
ChoixDossierFichier = chemin
End Function


ça marche pour récupérer les répertoires mais pas pour les fichiers... :-(

--
@+
HD

Avatar
HD
Je crois bien que tu devras apprendre
de te passer de cette fonction dans le
cas de recherche de fichiers.


Malheureusement, j'ai donc résolu le problème en utilisant une autre
fonction pour les fichiers...

En tout cas, Merci à toi de m'avoir aidé et expliqué que ce problème est à
l'heure actuelle sans solution.

(Microsoft trouvait que les usagers s'en
tiraient trop bien !)


J'ai l'impression que Crosoft aime bien causé des problèmes à ses
utilisateurs en ce moment... Entre Vista et Excel 2007, ils cherchent à
couler la boîte ou quoi ? A mon boulot, si l'on n'avait pas tout un tas de
macros VBA et certaines liaisons OLE avec notre logiciel de comptabilité je
pense que celà ferait longtemps que l'on serait passé à OpenOffice ou
autres...

@+
HD