us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 5 déc. 2007 à 23:31
Bonsoir,
La fonction "BrowseAndCreate" est élégeante, mais il est dommage qu'on ne puisse pas l'utiliser aussi pour la sélection d'un fichier... La solution proposée par ASSKICK étant fausse pour les fichiers...
Je n'arrive pas à faire marcher la version alternative (?) "BrowseForFolder", bien sur, cela bloque sur Dim BI As ... puisqu'on a rien qui défini tout cela...
J'ai tenté d'étudier cette fonction (BrowseAndCreate), et je vois quelques améliorations possibles.
Déjà, il faut mettre un ON ERROR RESUME NEXT, dans le code en cas d'action sur le bouton Annuler, pour un renvoi vide... au lieu d'un bug ! c'est mieux... Ensuite, en jouant sur les paramètres, la boite de sélection peut prendre plusieurs formes. Par exemple, avec une TextBox pour la sélection courante, ou même le titre peut changer... Sans avoir vraiment compris quelles sont les valeurs précises (plusieurs sont possibles), je propose une version complèté :
Public Function BrowseAndCreate(Title As String, Optional Config As vbConfigBrowse = 0) As String
Dim Shell As Variant, Folder As Variant
Set Shell = CreateObject("Shell.Application")
On Error Resume Next
Set Folder = Shell.BrowseForFolder(Hwnd, Title, Config, "")
BrowseAndCreate = Folder.items.Item.Path
End Function
Maintenant, j'aimerais bien comprendre à fond cette fonction (ses paramètres), et j'aimerais savoir si on peut vraiment pas faire en sorte de choisir un fichier, ou est-ce irrémédiablement impossible ? Bizarrement, on peut choisir un fichier PDF, avec l'option -1 (printer)... peut-être parce j'ai une imprimante virtuelle pour la création des PDF ?...
J'ai vu que BruNews avait fait une DLL pour faire quel que chose de similaire, mais hélas, on ne peut pas (aussi) sélectionner un fichier, et globalement sa solution n'a pas encore l'élégeance de cette fonction, qui permet un menu contextuel, un bouton "Créer un dossier", etc.
Amicalement,
Us.
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008 12 févr. 2007 à 17:59
Bonjour et merci apparement ton code doit correspondre exactement à ce que je veus.
Cependant je n'arrive pas à le faire fonctionner.
Ca gueule sur le hWnd, j'ai une erreur de compilation : variable non définie.
une idée du pourquoi du comment ?
soldier8514
Messages postés295Date d'inscriptionvendredi 20 décembre 2002StatutMembreDernière intervention24 janvier 20141 30 janv. 2006 à 23:29
oh pinaise ! c pile poil ce ke je cherchais ! merci
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 févr. 2005 à 09:21
Merci ;)
Pas de soucis pour moi, tu sais, tant que ca fonctionne et que c'est utile a d'autres...
mythic_kruger
Messages postés241Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention10 novembre 2005 13 févr. 2005 à 11:10
J' ai mis 10, du coup ça fait 7.
mythic_kruger
Messages postés241Date d'inscriptionjeudi 8 janvier 2004StatutMembreDernière intervention10 novembre 2005 13 févr. 2005 à 10:59
Eh vous rigolez ou quoi... 5/10? Cette source est super elle mérite plus, rien que pour le Folder.items.Item.Path, qui est en soit assez pragmatique.
ASSKICK
Messages postés9Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention 3 décembre 2003 27 nov. 2003 à 14:02
OK c'est tout bon :) fallait mettre la référence "Microsoft Shell Controls And Automation" (shell32.dll)
le code un poil modifié donne ceci:
Option Explicit
Dim ShellObject As Shell
Dim SelectedFolder As Shell32.Folder
Dim FolderPath As String
Private Sub Form_Load()
BrowseAndCreate
MsgBox ("Dossier sélectionné: " & FolderPath)
End
End Sub
Public Function BrowseAndCreate()
Set ShellObject = New Shell
Set SelectedFolder = ShellObject.BrowseForFolder(hWnd, "Veuillez selectionner votre Dossier. ", 0, 17)
If (Not SelectedFolder Is Nothing) Then
FolderPath = SelectedFolder.Items.Item.Path
Else
FolderPath = "Aucun dossier sélectionné"
End If
Set ShellObject = Nothing
Set SelectedFolder = Nothing
End Function
merci beaucoup pour l'aide :)
ASSKICK
Messages postés9Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention 3 décembre 2003 27 nov. 2003 à 13:33
correction: le dossier c'est pas bon :(
si je défini le dossier ("Folder" renomé en "test") en tant que Folder, il me fait un type incompatible une fois que j'ai sélectionné le dossier
ASSKICK
Messages postés9Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention 3 décembre 2003 27 nov. 2003 à 12:56
pour le dossier c'est bon, c'est la variable shell qui coince.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 nov. 2003 à 16:12
C'est tout simplement un objet de type Folder.
Pour y avoir accès, tu dois lier la reference "Microsoft Scripting Runtime"
ASSKICK
Messages postés9Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention 3 décembre 2003 26 nov. 2003 à 15:43
salut!
pour la première possibilité, que dois-je faire pour ne pas utiliser de type Variant?
lumesh
Messages postés564Date d'inscriptionjeudi 21 février 2002StatutMembreDernière intervention 7 novembre 2008 26 oct. 2003 à 22:11
pour infos, le 5.6 est téléchargeable sur le site de microsoft.
le l'ai deja installé qd g t sous 98se avt.
cs_olid
Messages postés296Date d'inscriptionlundi 2 septembre 2002StatutMembreDernière intervention28 janvier 2008 26 oct. 2003 à 22:02
Bin perdu :o((
Jai windows 98SE ...je crois que le probleme vient du fait quil faudrait avoir Windows Scripting 5.6 qui est installé que sur 2000, Millenium, etc. 98 SE a seulement le 5.1, et 95 ou NT4 ne l'ont pô du tout.
Jai eu ce meme genre de pb pour créer des raccourcis ou favoris en VBS ;o(
A noter que cest le wshom.ocx et ses dépendances quil faut installer ;o|
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 26 oct. 2003 à 21:53
Mais non, ca devrai fonctionner, il s'agit bien de ce que tu as decris......
cs_olid
Messages postés296Date d'inscriptionlundi 2 septembre 2002StatutMembreDernière intervention28 janvier 2008 26 oct. 2003 à 21:39
Arf... javais mal compris (ou ya un bug)...
Jai cru que ce source affichait le selecteur de dossier avec dessus un bouton pour créer un dossier pendant la selection :o(
Bah... au moins, ce source aidera des debutants :op
Sinon, pour faire ce que je viens dire, faudrait pô faire une fonction callback, non ? Si oui, merci à qui pourra donner un exemple ;o)
lumesh
Messages postés564Date d'inscriptionjeudi 21 février 2002StatutMembreDernière intervention 7 novembre 2008 22 oct. 2003 à 07:03
je connaissait la 2eme method mais pas la premiere ...
en vbs c deja bcp moins long ! :)
5 déc. 2008 à 16:54
Je pense ne rien avoir oublié...
@+ Sator
5 déc. 2007 à 23:43
Us.
5 déc. 2007 à 23:31
La fonction "BrowseAndCreate" est élégeante, mais il est dommage qu'on ne puisse pas l'utiliser aussi pour la sélection d'un fichier... La solution proposée par ASSKICK étant fausse pour les fichiers...
Je n'arrive pas à faire marcher la version alternative (?) "BrowseForFolder", bien sur, cela bloque sur Dim BI As ... puisqu'on a rien qui défini tout cela...
J'ai tenté d'étudier cette fonction (BrowseAndCreate), et je vois quelques améliorations possibles.
Déjà, il faut mettre un ON ERROR RESUME NEXT, dans le code en cas d'action sur le bouton Annuler, pour un renvoi vide... au lieu d'un bug ! c'est mieux... Ensuite, en jouant sur les paramètres, la boite de sélection peut prendre plusieurs formes. Par exemple, avec une TextBox pour la sélection courante, ou même le titre peut changer... Sans avoir vraiment compris quelles sont les valeurs précises (plusieurs sont possibles), je propose une version complèté :
=
Public Enum vbConfigBrowse
DirButtonCreateOKCancel = 0
DirButtonCreateOKCancelTextBox = 16
DirButtonCreateOKCancelInfo = 2500
DirButtonOkCancelTextbox = 560
DirButtonOkCancel = 550
PrtButtonOkCancelTextbox = -1
End Enum
=
Public Function BrowseAndCreate(Title As String, Optional Config As vbConfigBrowse = 0) As String
Dim Shell As Variant, Folder As Variant
Set Shell = CreateObject("Shell.Application")
On Error Resume Next
Set Folder = Shell.BrowseForFolder(Hwnd, Title, Config, "")
BrowseAndCreate = Folder.items.Item.Path
End Function
=
Sub essai()
MsgBox BrowseAndCreate("Veuillez selectionner votre Dossier.", DirButtonCreateOKCancelTextBox)
End Sub
=
Maintenant, j'aimerais bien comprendre à fond cette fonction (ses paramètres), et j'aimerais savoir si on peut vraiment pas faire en sorte de choisir un fichier, ou est-ce irrémédiablement impossible ? Bizarrement, on peut choisir un fichier PDF, avec l'option -1 (printer)... peut-être parce j'ai une imprimante virtuelle pour la création des PDF ?...
J'ai vu que BruNews avait fait une DLL pour faire quel que chose de similaire, mais hélas, on ne peut pas (aussi) sélectionner un fichier, et globalement sa solution n'a pas encore l'élégeance de cette fonction, qui permet un menu contextuel, un bouton "Créer un dossier", etc.
Amicalement,
Us.
12 févr. 2007 à 17:59
Cependant je n'arrive pas à le faire fonctionner.
Ca gueule sur le hWnd, j'ai une erreur de compilation : variable non définie.
une idée du pourquoi du comment ?
30 janv. 2006 à 23:29
14 févr. 2005 à 09:21
Pas de soucis pour moi, tu sais, tant que ca fonctionne et que c'est utile a d'autres...
13 févr. 2005 à 11:10
13 févr. 2005 à 10:59
27 nov. 2003 à 14:02
le code un poil modifié donne ceci:
Option Explicit
Dim ShellObject As Shell
Dim SelectedFolder As Shell32.Folder
Dim FolderPath As String
Private Sub Form_Load()
BrowseAndCreate
MsgBox ("Dossier sélectionné: " & FolderPath)
End
End Sub
Public Function BrowseAndCreate()
Set ShellObject = New Shell
Set SelectedFolder = ShellObject.BrowseForFolder(hWnd, "Veuillez selectionner votre Dossier. ", 0, 17)
If (Not SelectedFolder Is Nothing) Then
FolderPath = SelectedFolder.Items.Item.Path
Else
FolderPath = "Aucun dossier sélectionné"
End If
Set ShellObject = Nothing
Set SelectedFolder = Nothing
End Function
merci beaucoup pour l'aide :)
27 nov. 2003 à 13:33
si je défini le dossier ("Folder" renomé en "test") en tant que Folder, il me fait un type incompatible une fois que j'ai sélectionné le dossier
27 nov. 2003 à 12:56
26 nov. 2003 à 16:12
Pour y avoir accès, tu dois lier la reference "Microsoft Scripting Runtime"
26 nov. 2003 à 15:43
pour la première possibilité, que dois-je faire pour ne pas utiliser de type Variant?
26 oct. 2003 à 22:11
le l'ai deja installé qd g t sous 98se avt.
26 oct. 2003 à 22:02
Jai windows 98SE ...je crois que le probleme vient du fait quil faudrait avoir Windows Scripting 5.6 qui est installé que sur 2000, Millenium, etc. 98 SE a seulement le 5.1, et 95 ou NT4 ne l'ont pô du tout.
Jai eu ce meme genre de pb pour créer des raccourcis ou favoris en VBS ;o(
A noter que cest le wshom.ocx et ses dépendances quil faut installer ;o|
26 oct. 2003 à 21:53
26 oct. 2003 à 21:39
Jai cru que ce source affichait le selecteur de dossier avec dessus un bouton pour créer un dossier pendant la selection :o(
Bah... au moins, ce source aidera des debutants :op
Sinon, pour faire ce que je viens dire, faudrait pô faire une fonction callback, non ? Si oui, merci à qui pourra donner un exemple ;o)
22 oct. 2003 à 07:03
en vbs c deja bcp moins long ! :)