Selection dossier par défaut

uriel

XLDnaute Nouveau
Bonjours, j'utilise la fonction de macros suivante pour ouvrir une fenêtre "parcourir" afin de sélectionner un dossier ou se trouve les fichiers qui seront traités dans la suite ma macro:

Code:
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2

Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
    ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
    ByVal lpString2 As String) As Long

Private Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
     ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
Code:
Public Function SelectFolder(Titre As String, Handle As Long) As String

Dim lpIDList As Long
Dim strBuffer As String
Dim strTitre As String
Dim tBrowseInfo As BrowseInfo

strTitre = Titre
With tBrowseInfo
    .hWndOwner = Handle
    .lpszTitle = lstrcat(strTitre, "")
    .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With

lpIDList = SHBrowseForFolder(tBrowseInfo)

If (lpIDList) Then
    strBuffer = String(260, vbNullChar)
    SHGetPathFromIDList lpIDList, strBuffer
    SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
End If

End Function
Appel de la fonction dans la macro en elle même avec:
Code:
Sheets("Feuil1").Range("A1") = SelectFolder("Sélectionnez un répertoire :", 0)
    Range("A1").Select
    Selection.Clear
Mon problème est que par défaut, le fenêtre parcourir s'ouvre sur "Poste de travail" or, le dossier dans lequel il faudra toujours aller pour trouver ses sous dossiers lors de l'utilisation de la macro est très loin de la est assez difficile d'accès surtout que pas mal de monde utilisera la macro.

J'aimerais donc pouvoir changer le dossier par défaut de la fenêtre histoire qu'il ne s'ouvre plus sur poste de travail mais sur un dossier bien plus pratique et utile.

Merci d'avance
 

Creepy

XLDnaute Accro
Re : Selection dossier par défaut

Bonjour le Forum, Uriel,

Hummm actif le Creepy aujourd'hui normal il est en hotline alors ila passe le temps comme c'est la vacances et qu'il n'y a pas beaucoup d'appels.... :D

Bref ....

Houlalala que de vilaines APIs !! :eek: :p Mdr !!!

Ci dessous une belle fonctione bien propre dans laquelle tu peux donner un repertoire par defaut (dans l'exemple c:\windows)

Code:
Function ChoisirDossier()
Dim ObjShell, objFolder, SecuriteSlash As Byte
Set ObjShell = CreateObject("Shell.Application")
Set objFolder = ObjShell.BrowseForFolder(&H0&, "Choisissez un répertoire", &H1&, "c:\windows")
If objFolder Is Nothing Then GoTo EndProc
If Left(objFolder.self.Path, 2) = "::" Then GoTo EndProc
ChoisirDossier = objFolder.self.Path
SecuriteSlash = InStr(objFolder.Title, ":")
If SecuriteSlash > 0 Then ChoisirDossier = Left(ChoisirDossier, Len(ChoisirDossier) - 1)
EndProc:
Set objFolder = Nothing
Set ObjShell = Nothing
End Function

A+

Creepy
 

Catrice

XLDnaute Barbatruc
Re : Selection dossier par défaut

Bonjour,

Une solution avec DefaultFilePath :

Public MaVar
Sub Macro1()
'Mémorise le dossier par defaut que la machine au lancement de l'appli
MaVar = Application.DefaultFilePath
'Positionne sur le Dossier par défaut Perso
Application.DefaultFilePath = "C:\Mondossier"
'
'Ici le code
'
'Repositionne sur le dossier par defaut du debut à la fin du Prog
Application.DefaultFilePath = MaVar
End Sub
 

uriel

XLDnaute Nouveau
Re : Selection dossier par défaut

Creepy à dit:
Bonjour le Forum, Uriel,

Hummm actif le Creepy aujourd'hui normal il est en hotline alors ila passe le temps comme c'est la vacances et qu'il n'y a pas beaucoup d'appels....

Bref ....

Houlalala que de vilaines APIs !! Mdr !!!

Ci dessous une belle fonctione bien propre dans laquelle tu peux donner un repertoire par defaut (dans l'exemple c:\windows)
:) Merci beaucoups, c'est vrais que c'est bien mieux!:cool:.
Par contre juste une remarque, dans la fenêtre, on a bien par défaut "c:\Windows", mais il est apparemment impossible de revenir en arrière (aller par exemple à "c:\")
Et il possible de corriger sa?

En tout cas merci
 
Dernière édition:

uriel

XLDnaute Nouveau
Re : Selection dossier par défaut

Creepy à dit:
Re,

Oui je sais mais je pensais que tu voulais cela. De cette facon on est sûr que l'utilisateur ne mettra pas le fichier n'importe où !

Ca ne va pas ?

Creepy
Re,

Si, mais connaissant les administrateur réseau de ma boite, sa risque de changer et de poser problème, donc c'est juste par sécurité. Donc si il est possible de revenir en arrière sa serait encore mieux.

Le utilisateur ne mettrons pas de fichiers n'importe ou, en fait la macro lit des donnés dans les fichiers du dossier choisi qui dépend lui même d'un lot de production.
 
Dernière édition:

uriel

XLDnaute Nouveau
Re : Selection dossier par défaut

Re,
En fait, j'en ai parlé avec mes collaborateurs, c'est gênant de ne pas pouvoir revenir en arrière. Est il possible de pouvoir avoir toute l'arborescence accessible tout en pré-sélectionnant un dossier?

Merci d'avance...;)
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 122
Membres
103 479
dernier inscrit
Compta