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

boit de dialogue pour sauvegarde

5 réponses
Avatar
olitoto
Bonjour à tous,
Je suis à la recherche d'une boite de dialogue qui permet
dans une macro de choisir un dossier de sauvegarde d'un fichier et
qui renvoie en chaine de type string du genre

"c:\mes documents\nom_de_mon_fichier.csv"

Amicalement

Olivier

5 réponses

Avatar
MichDenis
Il y a ceci :
Copie ceci dans le haut d'un module standard :

'------------------------------
Private 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

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long

Private Const BIF_RETURNONLYFSDIRS = &H1
'------------------------------
Public Function BrowseFolder(strDialogTitle As String) As String
On Error GoTo ErrorHandling_Err
Dim lRetVal As Long
Dim bi As BROWSEINFO
Dim dwIList As Long
Dim strPath As String
Dim iPos As Integer

With bi
.hOwner = hWndAccessApp
.lpszTitle = strDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With

dwIList = SHBrowseForFolder(bi)
strPath = Space$(512)
lRetVal = SHGetPathFromIDList(ByVal dwIList, ByVal strPath)

If lRetVal Then
iPos = InStr(strPath, Chr(0))
BrowseFolder = Left$(strPath, iPos - 1)
Else
BrowseFolder = ""
End If
ErrorHandling_Err:
If Err Then
'Trap your error(s) here, if any!
End If
End Function
'------------------------------
Sub test()
MsgBox BrowseFolder("Où désirez-vous enregistrer votre fichier ?")
End Sub
'------------------------------






"olitoto" a écrit dans le message de news:
Bonjour à tous,
Je suis à la recherche d'une boite de dialogue qui permet
dans une macro de choisir un dossier de sauvegarde d'un fichier et
qui renvoie en chaine de type string du genre

"c:mes documentsnom_de_mon_fichier.csv"

Amicalement

Olivier
Avatar
JB
Bonjour,

Function ChoixDossier()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & ""
.Show
If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
End Function

Sub essai()
rep = ChoixDossier()
MsgBox rep
End Sub

http://boisgontierj.free.fr/fichiers/Fichier/ChoixDossier2.xls

JB
On 21 fév, 14:23, olitoto wrote:
Bonjour à tous,
Je suis à la recherche d'une boite de dialogue qui permet
dans une macro de choisir un dossier de sauvegarde d'un fichier et
qui renvoie en chaine de type string du genre

"c:mes documentsnom_de_mon_fichier.csv"

Amicalement

Olivier


Avatar
olitoto
merci Michedenis,

J'ai donc recopié le code dans "thisworkbook"

comment je l'appelle dans ma macro maintenant ?

j'insere l'instruction 'test' ou test()?

Amicalement

Olivier

Il y a ceci :
Copie ceci dans le haut d'un module standard :

'------------------------------
Private 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

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long

Private Const BIF_RETURNONLYFSDIRS = &H1
'------------------------------
Public Function BrowseFolder(strDialogTitle As String) As String
On Error GoTo ErrorHandling_Err
Dim lRetVal As Long
Dim bi As BROWSEINFO
Dim dwIList As Long
Dim strPath As String
Dim iPos As Integer

With bi
.hOwner = hWndAccessApp
.lpszTitle = strDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With

dwIList = SHBrowseForFolder(bi)
strPath = Space$(512)
lRetVal = SHGetPathFromIDList(ByVal dwIList, ByVal strPath)

If lRetVal Then
iPos = InStr(strPath, Chr(0))
BrowseFolder = Left$(strPath, iPos - 1)
Else
BrowseFolder = ""
End If
ErrorHandling_Err:
If Err Then
'Trap your error(s) here, if any!
End If
End Function
'------------------------------
Sub test()
MsgBox BrowseFolder("Où désirez-vous enregistrer votre fichier ?")
End Sub
'------------------------------






"olitoto" a écrit dans le message de news:
Bonjour à tous,
Je suis à la recherche d'une boite de dialogue qui permet
dans une macro de choisir un dossier de sauvegarde d'un fichier et
qui renvoie en chaine de type string du genre

"c:mes documentsnom_de_mon_fichier.csv"

Amicalement

Olivier




Avatar
MichDenis
Tu peux simplement utilisé cette ligne de code :

MsgBox BrowseFolder("Où désirez-vous enregistrer votre fichier ?")

P.S. Il est important de déclarer les API dans le haut d'un module standard.
comme leur déclaration utilise le mot "Private" ta procédure doit être dans
le même module ou sinon, tu devras enlever les mots "Private"


"olitoto" a écrit dans le message de news:
merci Michedenis,

J'ai donc recopié le code dans "thisworkbook"

comment je l'appelle dans ma macro maintenant ?

j'insere l'instruction 'test' ou test()?

Amicalement

Olivier

Il y a ceci :
Copie ceci dans le haut d'un module standard :

'------------------------------
Private 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

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long

Private Const BIF_RETURNONLYFSDIRS = &H1
'------------------------------
Public Function BrowseFolder(strDialogTitle As String) As String
On Error GoTo ErrorHandling_Err
Dim lRetVal As Long
Dim bi As BROWSEINFO
Dim dwIList As Long
Dim strPath As String
Dim iPos As Integer

With bi
.hOwner = hWndAccessApp
.lpszTitle = strDialogTitle
.ulFlags = BIF_RETURNONLYFSDIRS
End With

dwIList = SHBrowseForFolder(bi)
strPath = Space$(512)
lRetVal = SHGetPathFromIDList(ByVal dwIList, ByVal strPath)

If lRetVal Then
iPos = InStr(strPath, Chr(0))
BrowseFolder = Left$(strPath, iPos - 1)
Else
BrowseFolder = ""
End If
ErrorHandling_Err:
If Err Then
'Trap your error(s) here, if any!
End If
End Function
'------------------------------
Sub test()
MsgBox BrowseFolder("Où désirez-vous enregistrer votre fichier ?")
End Sub
'------------------------------






"olitoto" a écrit dans le message de news:

Bonjour à tous,
Je suis à la recherche d'une boite de dialogue qui permet
dans une macro de choisir un dossier de sauvegarde d'un fichier et
qui renvoie en chaine de type string du genre

"c:mes documentsnom_de_mon_fichier.csv"

Amicalement

Olivier




Avatar
olitoto
Si j'ai bien compris,

Je recopie le code de ma macro dans "thisworkbook" ? et je laisse
les déclarations "private"?

N.B : Je ne sais pas ce qu'est un API .....

Olivier

Tu peux simplement utilisé cette ligne de code :

MsgBox BrowseFolder("Où désirez-vous enregistrer votre fichier ?")

P.S. Il est important de déclarer les API dans le haut d'un module standard.
comme leur déclaration utilise le mot "Private" ta procédure doit être dans
le même module ou sinon, tu devras enlever les mots "Private"


"olitoto" a écrit dans le message de news:
merci Michedenis,

J'ai donc recopié le code dans "thisworkbook"

comment je l'appelle dans ma macro maintenant ?

j'insere l'instruction 'test' ou test()?

Amicalement

Olivier