SELECTION DE DOSSIER AVEC BOUTON "NOUVEAU DOSSIER"

lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008 - 22 oct. 2003 à 07:03
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010 - 5 déc. 2008 à 16:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/17270-selection-de-dossier-avec-bouton-nouveau-dossier

cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
5 déc. 2008 à 16:54
Merci, Merci , merci, et merci...

Je pense ne rien avoir oublié...

@+ Sator
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 déc. 2007 à 23:43
Ouppsss... c'est pas ASSKICK mais facknrask sur la source : http://www.vbfrance.com/codes/COMMONDIALOG-POUR-SELECTIONNER-REPERTOIRE-OCX_35482.aspx

Us.
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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 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.
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 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és 295 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 24 janvier 2014 1
30 janv. 2006 à 23:29
oh pinaise ! c pile poil ce ke je cherchais ! merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 novembre 2005
13 févr. 2005 à 11:10
J' ai mis 10, du coup ça fait 7.
mythic_kruger Messages postés 241 Date d'inscription jeudi 8 janvier 2004 Statut Membre Dernière intervention 10 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és 9 Date d'inscription mercredi 26 novembre 2003 Statut Membre Derniè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és 9 Date d'inscription mercredi 26 novembre 2003 Statut Membre Derniè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és 9 Date d'inscription mercredi 26 novembre 2003 Statut Membre Derniè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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 9 Date d'inscription mercredi 26 novembre 2003 Statut Membre Derniè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és 564 Date d'inscription jeudi 21 février 2002 Statut Membre Derniè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és 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 oct. 2003 à 21:53
Mais non, ca devrai fonctionner, il s'agit bien de ce que tu as decris......
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 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és 564 Date d'inscription jeudi 21 février 2002 Statut Membre Derniè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 ! :)
Rejoignez-nous