Dans un précédent message, je voulais savoir comment changer de répertoire
via un formulaire. on m'a gentiment répondu, dont voici le code ci-dessous.
Cela marche seulement si je lance le code dans un module. en fait je
voudrais l'inclure dans mon userform et en cliquant sur un bouton faire
afficher la listes des répertoires pour en selectionner un puis continuer à
renseigner les différents paramètre de mon userform.
Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton pour
faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom
abigu détécté: Browseinfo".
Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore un
autre message d'erreur. Je ne sais plus quoi faire.
Merci pour votre aide.
"Daniel" a écrit :
> 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
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
Daniel
Bonjour. "nom ambigü", ça ceut dire normalement que tu as deux macros avec le même nom. Regarde le classeur : http://cjoint.com/?hdr6ClMdIR Cordialement. Daniel "Thierry" a écrit dans le message de news:
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire via un formulaire. on m'a gentiment répondu, dont voici le code ci-dessous. Cela marche seulement si je lance le code dans un module. en fait je voudrais l'inclure dans mon userform et en cliquant sur un bouton faire afficher la listes des répertoires pour en selectionner un puis continuer à renseigner les différents paramètre de mon userform. Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton pour faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom abigu détécté: Browseinfo". Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore un autre message d'erreur. Je ne sais plus quoi faire. Merci pour votre aide.
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
Bonjour.
"nom ambigü", ça ceut dire normalement que tu as deux macros avec le même
nom.
Regarde le classeur :
http://cjoint.com/?hdr6ClMdIR
Cordialement.
Daniel
"Thierry" <Thierry@discussions.microsoft.com> a écrit dans le message de
news: 6147C30B-C0CA-4D25-BA52-C1269BF148D4@microsoft.com...
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire
via un formulaire. on m'a gentiment répondu, dont voici le code
ci-dessous.
Cela marche seulement si je lance le code dans un module. en fait je
voudrais l'inclure dans mon userform et en cliquant sur un bouton faire
afficher la listes des répertoires pour en selectionner un puis continuer
à
renseigner les différents paramètre de mon userform.
Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton
pour
faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom
abigu détécté: Browseinfo".
Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore
un
autre message d'erreur. Je ne sais plus quoi faire.
Merci pour votre aide.
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
Bonjour. "nom ambigü", ça ceut dire normalement que tu as deux macros avec le même nom. Regarde le classeur : http://cjoint.com/?hdr6ClMdIR Cordialement. Daniel "Thierry" a écrit dans le message de news:
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire via un formulaire. on m'a gentiment répondu, dont voici le code ci-dessous. Cela marche seulement si je lance le code dans un module. en fait je voudrais l'inclure dans mon userform et en cliquant sur un bouton faire afficher la listes des répertoires pour en selectionner un puis continuer à renseigner les différents paramètre de mon userform. Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton pour faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom abigu détécté: Browseinfo". Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore un autre message d'erreur. Je ne sais plus quoi faire. Merci pour votre aide.
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
Thierry
Merci,
C'était bien ça, le code était 2 fois dans 2 modules diférents pour pouvoir faire des tests. Merci encore.
Bonjour. "nom ambigü", ça ceut dire normalement que tu as deux macros avec le même nom. Regarde le classeur : http://cjoint.com/?hdr6ClMdIR Cordialement. Daniel "Thierry" a écrit dans le message de news:
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire via un formulaire. on m'a gentiment répondu, dont voici le code ci-dessous. Cela marche seulement si je lance le code dans un module. en fait je voudrais l'inclure dans mon userform et en cliquant sur un bouton faire afficher la listes des répertoires pour en selectionner un puis continuer à renseigner les différents paramètre de mon userform. Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton pour faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom abigu détécté: Browseinfo". Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore un autre message d'erreur. Je ne sais plus quoi faire. Merci pour votre aide.
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
Merci,
C'était bien ça, le code était 2 fois dans 2 modules diférents pour pouvoir
faire des tests. Merci encore.
Bonjour.
"nom ambigü", ça ceut dire normalement que tu as deux macros avec le même
nom.
Regarde le classeur :
http://cjoint.com/?hdr6ClMdIR
Cordialement.
Daniel
"Thierry" <Thierry@discussions.microsoft.com> a écrit dans le message de
news: 6147C30B-C0CA-4D25-BA52-C1269BF148D4@microsoft.com...
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire
via un formulaire. on m'a gentiment répondu, dont voici le code
ci-dessous.
Cela marche seulement si je lance le code dans un module. en fait je
voudrais l'inclure dans mon userform et en cliquant sur un bouton faire
afficher la listes des répertoires pour en selectionner un puis continuer
à
renseigner les différents paramètre de mon userform.
Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton
pour
faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom
abigu détécté: Browseinfo".
Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore
un
autre message d'erreur. Je ne sais plus quoi faire.
Merci pour votre aide.
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
C'était bien ça, le code était 2 fois dans 2 modules diférents pour pouvoir faire des tests. Merci encore.
Bonjour. "nom ambigü", ça ceut dire normalement que tu as deux macros avec le même nom. Regarde le classeur : http://cjoint.com/?hdr6ClMdIR Cordialement. Daniel "Thierry" a écrit dans le message de news:
Bonjour,
Dans un précédent message, je voulais savoir comment changer de répertoire via un formulaire. on m'a gentiment répondu, dont voici le code ci-dessous. Cela marche seulement si je lance le code dans un module. en fait je voudrais l'inclure dans mon userform et en cliquant sur un bouton faire afficher la listes des répertoires pour en selectionner un puis continuer à renseigner les différents paramètre de mon userform. Mais cela ne fonctionne pas . A chaque fois que je clique sur le bouton pour faire afficher la liste des répertoires, j'ai un message d'erreur : "Nom abigu détécté: Browseinfo". Je ne peux pas déclarer BROWSEINFO dans mon userform sinon j'ai encore un autre message d'erreur. Je ne sais plus quoi faire. Merci pour votre aide.
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