OVH Cloud OVH Cloud

Changement de repertoire

3 réponses
Avatar
Thierry
Bonjour,

J'ai créer un formulaire qui me permet de copier des fichiers d'un
répertoire à un autre.
J'ai mis le nom complet du dossier de départ une Texbox et idem pour le
dossier de destination. Cela marche bien, mais si je veux utiliser un autre
chemin, je suis obliger de saisir en entier le nouveau chemin, ce qui n'est
plus pratique du tout. Donc je ce que voudrais faire c'est comme lors d'une
installation de programme,
mettre un chemin par défaut dans contrôle style une combobox ou autre chose
et cliquer dessus pour remmonter/descendre l'arborescence du chemin.
Merci pour votre aide.

Thierry

3 réponses

Avatar
Daniel
Bonjour.
Copie tout ce code et exécute la macro Test :

Option Explicit

Public Type BROWSEINFO

hOwner As Long

pidlRoot As Long

pszDisplayName As String

lpszTitle As String

ulFlags As Long

lpfn As Long

lParam As Long

iImage As Long

End Type



'32-bit API declarations

Declare Function SHGetPathFromIDList Lib "shell32.dll" _

Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String)
_

As Long



Declare Function SHBrowseForFolder Lib "shell32.dll" _

Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long





Sub Test()

Dim Msg As String

Msg = "Choisissez un répertoire."

MsgBox GetDirectory(Msg)

End Sub



Function GetDirectory(Optional Msg) As String

Dim bInfo As BROWSEINFO

Dim path As String

Dim r As Long, x As Long, pos As Integer



' Root folder = Desktop

bInfo.pidlRoot = 0&



' Title in the dialog

If IsMissing(Msg) Then

bInfo.lpszTitle = "Select a folder."

Else

bInfo.lpszTitle = Msg

End If



' Type of directory to return

bInfo.ulFlags = &H1



' Display the dialog

x = SHBrowseForFolder(bInfo)



' Parse the result

path = Space$(512)

r = SHGetPathFromIDList(ByVal x, ByVal path)

If r Then

pos = InStr(path, Chr$(0))

GetDirectory = Left(path, pos - 1)

Else

GetDirectory = ""

End If

End Function



Cordialement.

Daniel

"Thierry" a écrit dans le message de
news:
Bonjour,

J'ai créer un formulaire qui me permet de copier des fichiers d'un
répertoire à un autre.
J'ai mis le nom complet du dossier de départ une Texbox et idem pour le
dossier de destination. Cela marche bien, mais si je veux utiliser un
autre
chemin, je suis obliger de saisir en entier le nouveau chemin, ce qui
n'est
plus pratique du tout. Donc je ce que voudrais faire c'est comme lors
d'une
installation de programme,
mettre un chemin par défaut dans contrôle style une combobox ou autre
chose
et cliquer dessus pour remmonter/descendre l'arborescence du chemin.
Merci pour votre aide.

Thierry


Avatar
Thierry
Merci pour ta réponse
Thierrry



Bonjour.
Copie tout ce code et exécute la macro Test :

Option Explicit

Public Type BROWSEINFO

hOwner As Long

pidlRoot As Long

pszDisplayName As String

lpszTitle As String

ulFlags As Long

lpfn As Long

lParam As Long

iImage As Long

End Type



'32-bit API declarations

Declare Function SHGetPathFromIDList Lib "shell32.dll" _

Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String)
_

As Long



Declare Function SHBrowseForFolder Lib "shell32.dll" _

Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long





Sub Test()

Dim Msg As String

Msg = "Choisissez un répertoire."

MsgBox GetDirectory(Msg)

End Sub



Function GetDirectory(Optional Msg) As String

Dim bInfo As BROWSEINFO

Dim path As String

Dim r As Long, x As Long, pos As Integer



' Root folder = Desktop

bInfo.pidlRoot = 0&



' Title in the dialog

If IsMissing(Msg) Then

bInfo.lpszTitle = "Select a folder."

Else

bInfo.lpszTitle = Msg

End If



' Type of directory to return

bInfo.ulFlags = &H1



' Display the dialog

x = SHBrowseForFolder(bInfo)



' Parse the result

path = Space$(512)

r = SHGetPathFromIDList(ByVal x, ByVal path)

If r Then

pos = InStr(path, Chr$(0))

GetDirectory = Left(path, pos - 1)

Else

GetDirectory = ""

End If

End Function



Cordialement.

Daniel

"Thierry" a écrit dans le message de
news:
Bonjour,

J'ai créer un formulaire qui me permet de copier des fichiers d'un
répertoire à un autre.
J'ai mis le nom complet du dossier de départ une Texbox et idem pour le
dossier de destination. Cela marche bien, mais si je veux utiliser un
autre
chemin, je suis obliger de saisir en entier le nouveau chemin, ce qui
n'est
plus pratique du tout. Donc je ce que voudrais faire c'est comme lors
d'une
installation de programme,
mettre un chemin par défaut dans contrôle style une combobox ou autre
chose
et cliquer dessus pour remmonter/descendre l'arborescence du chemin.
Merci pour votre aide.

Thierry







Avatar
Thierry
Merci pour ta réponse, cela marche bein.
Par contre est-ce qu'il est possible de lister les répertoires à partir d'un
chemin prédéfini au lieu d'avoir la totalité de l'arborescence du poste de
travail.
Merci


Bonjour.
Copie tout ce code et exécute la macro Test :

Option Explicit

Public Type BROWSEINFO

hOwner As Long

pidlRoot As Long

pszDisplayName As String

lpszTitle As String

ulFlags As Long

lpfn As Long

lParam As Long

iImage As Long

End Type



'32-bit API declarations

Declare Function SHGetPathFromIDList Lib "shell32.dll" _

Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String)
_

As Long



Declare Function SHBrowseForFolder Lib "shell32.dll" _

Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long





Sub Test()

Dim Msg As String

Msg = "Choisissez un répertoire."

MsgBox GetDirectory(Msg)

End Sub



Function GetDirectory(Optional Msg) As String

Dim bInfo As BROWSEINFO

Dim path As String

Dim r As Long, x As Long, pos As Integer



' Root folder = Desktop

bInfo.pidlRoot = 0&



' Title in the dialog

If IsMissing(Msg) Then

bInfo.lpszTitle = "Select a folder."

Else

bInfo.lpszTitle = Msg

End If



' Type of directory to return

bInfo.ulFlags = &H1



' Display the dialog

x = SHBrowseForFolder(bInfo)



' Parse the result

path = Space$(512)

r = SHGetPathFromIDList(ByVal x, ByVal path)

If r Then

pos = InStr(path, Chr$(0))

GetDirectory = Left(path, pos - 1)

Else

GetDirectory = ""

End If

End Function



Cordialement.

Daniel

"Thierry" a écrit dans le message de
news:
Bonjour,

J'ai créer un formulaire qui me permet de copier des fichiers d'un
répertoire à un autre.
J'ai mis le nom complet du dossier de départ une Texbox et idem pour le
dossier de destination. Cela marche bien, mais si je veux utiliser un
autre
chemin, je suis obliger de saisir en entier le nouveau chemin, ce qui
n'est
plus pratique du tout. Donc je ce que voudrais faire c'est comme lors
d'une
installation de programme,
mettre un chemin par défaut dans contrôle style une combobox ou autre
chose
et cliquer dessus pour remmonter/descendre l'arborescence du chemin.
Merci pour votre aide.

Thierry