Browseforfolder

D

Denis

Guest
Bonjour à toutes et à tous,
Merci tout d’abords à tous ceux qui ont la science couplée au "courage" de répondre à ces sujets divers et variés et combien intéressants pour les "ceusses" qui, comme moi, pensaient connaître un peu Excel... je dis bien "pensaient"...

Le sujet du jour :

Par une recherche sur le forum, j'ai trouvé un truc "épatant" (pléonasme) qui permet de choisir un dossier (que l'utilisateur puisse spécifier) afin de déterminer l'endroit où se trouve (et donc à la macro) de pouvoir ouvrir un document appelons le 02 REFERENCE.xls.
Pour les connaisseurs : c'est le Browseforfolder avec getfolder (que je tiens à la disposition de ceux qui pourraient en avoir besoin d'ailleurs).

J'ai pu l'intégrer dans une macro qui fonctionne et qui trouve bien le doc que je recherche.

Le problème ???

C'est que lorsque je réalise ce "changement" de répertoire sur un répertoire qui n'est pas mon disque dur interne (parlons "réseau"...)
ma petite macro plante parce que ne "trouve" pas le doc en question :
Erreur d'exécution "1004"
02 REFERENCE.xls introuvable ect ect...

J'ai vu qu'il me fallait un shell32.dll que j'ai bien vérifié...

Alors quid???

Peut-être y a t'il un autre moyen de déterminer un dossier/répertoire (que je ne suis pas sensé connaître au préalable) par macro (et je suis tout ouïe)

Merci d'avance
 

Pièces jointes

  • 00INITIAL.xls
    45 KB · Affichages: 57
@

@+Thierry

Guest
Salut Denis

Je pense que tu devrais essayer un simple ChDir...

Sub TestDir()
ChDir "I:"
End Sub

Mais je n'utilise pas cette Macro Browseforfolder... Alors ptet que çà ne marchera pas dans ce cas de figure... Mais essaies quand même...

Bon Travail
@+Thierry
 
D

Denis

Guest
Thierry, merci de ta réponse, mais
je dois mettre cette macro sur un "gros" réseau dont je ne maitrise pas le nom des disques...
Il peut s'agir de n'importe qu'elle lettre de l'alphabet (et peut-etre que les "turcs" s'ils sont dans le coup auront aussi leur Disque... en turc)
Donc : laisser le choix en "aidant" à ce choix... par une navigation "controlée" ce que fait, j'insiste lourdement, le getfolder sus nommé.
J'ai aussi pensé à un getOpenfilename, mais l'utilisateur doit connaître en plus le document à charger, ce que je ne désire pas forcément non plus.
J'ai enfin aussi étudié la question du type :
chemin = inputBox et qui demande le chemin... mais cela n'évite pas les problèmes de saisie...
 
T

Ti

Guest
En fait, il semble bien que ton browseforfolder ne soit pas en cause, mais que ce soit la suite des opérations qui coince, lorsque tu tentes de faire un chdir.
Comme je n'y connais rien en réseau, je ne peux pas te conseiller beaucoup plus, mais tu devrais décomposer tes instructions comme ça :

Sub Ouvrir_02_REFERENCE_Par_Choix_Dossier()
Dim Msg As String, Rep As String
Dim MonDoc As String
MonDoc = "02 REFERENCE.xls"
Msg = "Please select a location for " & MonDoc
Rep = GetDirectory(Msg)
ChDir Rep
Workbooks.Open Filename:=MonDoc, _
UpdateLinks:=3
End Sub

Ensuite en mode déboggage, tu peux déjà regarder si la chaine renvoyée dans Rep n'est pas vide. Dans ce cas, c'est bien le browseforfolder qui pose problème. Sinon, à toi de voir comment accéder aux lecteurs réseau. Peut-être en passant par l'objet FileSystemObject ? Suite dans 3 ou 4 mois quand j'aurai mon propre réseau...
 
D

Denis

Guest
Bonjour et merci à tous ceux qui se sont penchés de prés ou de loin sur mon proB...
J'ai trouvé une solution relativement simple par rapport à ce que je cherchais au préalable avec le browsefolder. Je me suis inspiré d'un fil précédent comme quoi, les "chercher" cela peut servir.
Si vous désirez des explications...
La voici : elle peut interesser

Sub Trouver_02_REFERENCE()

'Définir le Doc à rechercher sur le réseau
MonDoc = "02 REFERENCE.xls"

'Définir le lecteur (drive) du réseau
' par défaut on peut indiquer ce que l'on veut (à la place de I:\)
MonLecteur = InputBox("Enter the drive réseau : exp G:\", "Determine the HD", "I:\")

' Changer de drive
ChDrive MonLecteur

' Trouver
With Application.FileSearch
.NewSearch:
.LookIn = MonLecteur:
.SearchSubFolders = True:
.Filename = MonDoc
.MatchTextExactly = True:
.FileType = msoFileTypeAllFiles
If .Execute(msoSortOrderDescending) > 0 Then
MsgBox "There were " & .FoundFiles.Count & " file(s) found."
For I = 1 To .FoundFiles.Count
MsgBox .FoundFiles(I)
MonChemin = Application.FileSearch.FoundFiles(I)
Next I
Else
MsgBox "There were no files found."
End If
End With

Workbooks.Open MonChemin
End Sub
 

Discussions similaires

Réponses
3
Affichages
511

Statistiques des forums

Discussions
314 653
Messages
2 111 576
Membres
111 205
dernier inscrit
Adrien25