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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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" <qsqsd@qsqd.fr> a écrit dans le message de news: OkCPTubVHHA.3592@TK2MSFTNGP03.phx.gbl...
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
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
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
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
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
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
JB
On 21 fév, 14:23, olitoto <q...@qsqd.fr> 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
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
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
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
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
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
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" <qsqsd@qsqd.fr> a écrit dans le message de news: OkCPTubVHHA.3592@TK2MSFTNGP03.phx.gbl...
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
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
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
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
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
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" <qsqsd@qsqd.fr> a écrit dans le message de news: ejkhfHcVHHA.4260@TK2MSFTNGP06.phx.gbl...
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
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" <qsqsd@qsqd.fr> a écrit dans le message de news:
OkCPTubVHHA.3592@TK2MSFTNGP03.phx.gbl...
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
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
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
olitoto
Si j'ai bien compris,
Je recopie le code de ma macro dans "thisworkbook" ? et je laisse les déclarations "private"?
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
Si j'ai bien compris,
Je recopie le code de ma macro dans "thisworkbook" ? et je laisse
les déclarations "private"?
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" <qsqsd@qsqd.fr> a écrit dans le message de news: ejkhfHcVHHA.4260@TK2MSFTNGP06.phx.gbl...
merci Michedenis,
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,