begin process at 2012 02 13 03:22:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > COMMONDIALOG POUR SÉLECTIONNER UN RÉPERTOIRE ( OCX )

COMMONDIALOG POUR SÉLECTIONNER UN RÉPERTOIRE ( OCX )


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :ocx, commondialog, répertoire, folder Niveau :Initié Date de création :09/01/2006 Vu / téléchargé :10 063 / 1 601

Auteur : corsica

Ecrire un message privé
Commentaire sur cette source (20)
Ajouter un commentaire et/ou une note

 Description

Vous avez toujours rêvé de pouvoir sélectionner un répertoire grâce à l'objet CommonDialog ? Et celui-ci ne le permet pas !
He bien , voilà le problême résolu ...
getFolder est un ocx qui permet de sélectionner n'importe quel répertoire sur votre ordinateur...
Livré avec le source et un exemple ...


 Conclusion

Si vous améliorez ce code , merci de me prévenir sur Codes-Sources

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip ASTUCE POUR DÉCLENCHER L'ÉCRAN DE VEILLE DE WINDOWS

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip MODIFICATIONS NOM DE FICHIERS DANS UN MÊME RÉPERTOIRE par mimiZanzan
Source avec Zip Source avec une capture [OCX] GETFOLDER BY CORSICA MOD ERGO5 par nico1610
CREER UN CHEMIN DE PLUSIEURS DOSSIERS par softeur
EFFACER UN RÉPERTOIRE ET TOUT SON CONTENU par soulmanto
Source avec Zip FILENAME OCX POUR VBA par Xavier

Commentaires et avis

Commentaire de ScSami le 09/01/2006 18:37:20

Je l'ai pas encore testé mais faut bien le dire... fallait le faire!
Merci.

Commentaire de ScSami le 09/01/2006 18:47:27

Enfin moi, je serais toi, je ne mettrais pas un titre pareil à ma source parce qu'on croit vraiment que c'est encore un newbie qui a découvert CommonDialog !!!

Commentaire de bouv le 09/01/2006 20:07:59

Je connaissais déjà cette API. Mais c'est toujours bon a rappeler.

Cependant, je pense que l'utilisation d'un controle utilisateur n'a pas d'interet ici (le module se suffit en lui même).
Tu met la fonction GetFolder  (en public) dans le module et toutes les autres en privées...
Cela évite de se trimbaler une OCX de plus (ou controle utilisateur).

Bonne prog
++

Commentaire de nico1610 le 09/01/2006 20:42:45

Bien mais manque un peut d'option pour faire un vrai OCX (Gestion des erreurs(quand tu clic sur Cancel) ... )
Comme dit Bouv il n'y a aucun interet de creer un Ocx si on peut le faire avec un module !!

Je met aucune note, mais bien sur l'API et la création d'un OCX

Commentaire de nico1610 le 09/01/2006 22:25:09

Tiens viens ici pour voir ce que tu pouvait ajouter au moins pour faire un OCX!!

http://www.vbfrance.com/code.aspx?ID=35485

Commentaire de ScSami le 10/01/2006 03:06:41

Tient, je la connaissait pas celle-là!
OCX, module de class, module de code... wai, perso, je préfère les OCX s'ils sont bien codé (prise en charge des erreurs). Mais bon, chacun code comme il aime!

Commentaire de nico1610 le 10/01/2006 07:46:31

l'OCX que je parle ici (http://www.vbfrance.com/code.aspx?ID=35485) c'est le tiens corsica que j'ai reprit et fait une gestion des erreurs des plus simples, nom du selecteur de dossier personalisable.
Tous ca sans commentaire !! Oups !!
Je vais la modifié pour y mettre des commentaire !!

Commentaire de Renfield le 10/01/2006 10:03:08 administrateur CS

dans BrowseForFolderCallBackFunc, le Select Case est inutile :
    If uMsg = BFFM_INITIALIZED Then
      SendMessage hwnd, BFFM_SETSELECTIONA, 1, ByVal BFFInitialPath
    End If
suffit. Le test sur la longueur de BFFInitialPath a été reporté là :
        If LenB(BFFInitialPath) > 0 Then
            .lpfnCallback = GetAddress(AddressOf BrowseForFolderCallBackFunc)
        End If

  
dans ShowBrowseForFolderDlg,
.lpszTitle = lstrcat(Msg, "")

est faux, regarde le libellé, au dessus de ton TreeView, la chaine ne comprend qu'un caractère...
il faudrait :

.lpszTitle = StrPtr(StrConv(Msg, vbFromUnicode))


de même, si l'on presse Annuler, le chemin est vide... ca devrait conserver le chemin originel.
je rejoins ScSami : un OCX est inutile ici

petit détail,
il vaut mieux favoriser :
    sPath = Space$(MAX_PATH)
que
    sPath = String$(MAX_PATH, 0)


en ajoutant le flag BIF_NEWDIALOGSTYLE dans BrowseInfo, tu pourra redimensionner la fenetre, et tu aura un bouton "nouveau dossier"


pour conclure, j'indique une simple alternative :
Public Function BrowseAndCreate(Title As String) As String
     Dim Shell As Variant, Folder As Variant
     Set Shell = CreateObject("Shell.Application")
     Set Folder = Shell.BrowseForFolder(hWnd, Title, 0, "")
     BrowseAndCreate = Folder.items.Item.Path
End Function

cette fonction est plutot destinée au VBS, mais fonctionne aussi sous VB, bien que je ne la préconise pas (en partie a cause du non typage des données, et du Late-Binding)

Commentaire de corsica le 10/01/2006 10:16:19

Merci pour vos remarques , j'en prends bonne note , je bosse sur la version améliorée :-)
Renfield , ta fonction BrowseAndCreate marche à merveille mais ne permet pas de choisir un répertoire de démarrage. On pourra tout au plus spécifier un rootFolder différent de Desktop et ainsi restreindre le parcour de l'arborescence de fichiers.
Mais effectivement c'est quand même diablement plus court que ce que je propose !

Commentaire de BruNews le 10/01/2006 10:27:10 administrateur CS

Très court ici aussi et parfaitement typé:
http://www.vbfrance.com/code.aspx?id=18494

Sub ChoisitDossier()
Dim strDir As String, sTitle As String
sTitle = "Dossier depuis Excel"
strDir = "D:\bosser"
If bnSelectDir(sTitle, strDir) Then Debug.Print strDir
End Sub

Commentaire de ScSami le 10/01/2006 12:33:38

(Nota Renfield que c'est plutôt Bouv qui disait ça ;-)
Dit moi Renfield... pardonne moi cette question de "débutant" mais pourquoi tu déclare Folder en Variant plutôt qu'en Objet ??? Ne serait-ce pas mieux typé ainsi ?
Pi dit, c'est toi qui aurait du faire cette source puisque tu métrise tellement ces APIs !!! Franchement, si tu nous faisais un OCX ou une classe, je l'utiliserais les yeux fermés (et je ne crois pas être le seul!!!) !

Bru, bon, d'accord, mais c'est en utilisant ta DLL !!! J'ai donc une question qui me brule les lèvres : pourquoi as-tu codé (1515 lignes en ASM si j'ai bien tout compris...) cette DLL puisqu'il existe des APIs ???
Défi personnel ou réel utilité (comblage d'un trou quelconque - lequel ?) ?

Commentaire de Renfield le 10/01/2006 12:55:08 administrateur CS

oui, As Object... a ce niveau, ca ne changerai pas grand chose.
Cette fonction, etant déstinée à VBS, CreateObject est utilisé, et ces variables sont juste déclarées pour valider le 'Option Explicit'.

touché par cette considération pour mon travail

la Dll de BruNews apporte du tout en un, et facilite l'integration de telles fonctions, pour les utilisateurs de VB / VBA.... Les APIs, sont là, mais il faut bien souvent un brin de code autour, pour les 'wrapper' dans des fonction VB utilisables tel quel...

Commentaire de ScSami le 10/01/2006 15:03:27

merci pour ces quelques précision :D

Commentaire de bouv le 10/01/2006 17:31:41

Renfield>>2 questions
1°-Quel valeur doit-on attribuer à BIF_NEWDIALOGSTYLE.
2°-Qu'est ce que le Late-Binding.

Commentaire de Renfield le 10/01/2006 17:41:16 administrateur CS

Const BIF_NEWDIALOGSTYLE As Long = &H40

le Late Binding, en gros, c'est le fait de définir en cours d'execution le type d'objet que l'on manipule... (ca n'est pas fait à la compilation)...

Commentaire de bouv le 10/01/2006 18:13:30

Ok merci pour l'info, maintenant que tu le dis il me semble que j'en avais entendu parlé (par toi :-)) ailleurs sur le site.

Commentaire de ScSami le 10/01/2006 18:19:20

Oui, la MSDN parle de liaison tardive ou précoce - enfin, je crois que c'est ces termes...

Commentaire de Renfield le 11/01/2006 00:46:23 administrateur CS

il s'agit bien de cela

Commentaire de facknrask le 21/12/2006 18:40:09

y a plus simple !!!!

Function ChoixDossierFichier(Racine, Optional SelType As Byte = 0)
Dim objShell, objFolder, chemin, SecuriteSlash, FlagChoix&, Msg$

            If SelType = 0 Then
            FlagChoix = &H1&: Msg = "Choisissez votre dossier :"
                        Else
            FlagChoix = &H4000&: Msg = "Choisissez votre fichier :"
            End If
            Set objShell = CreateObject("Shell.Application")
            'le troisième paramètre permet de choisir
            'la sélection d'un dossier ou d'un fichier (0 ou 1)
            'le dernier paramètre permet de choisir le dossier racine
            Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix, Racine)
            On Error Resume Next
            chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
          
If objFolder.Title = "Bureau" Then
            chemin = "C:\Windows\Bureau"
            End If
If objFolder.Title = "" Then
            chemin = ""
            End If
            SecuriteSlash = InStr(objFolder.Title, ":")
            If SecuriteSlash > 0 Then
            chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
            End If

ChoixDossierFichier = chemin
End Function

Public Sub testfolder()
aaa = ChoixDossierFichier("d:\")
End Sub

Commentaire de facknrask le 21/12/2006 18:41:00

trouver sur http://www.supinfo-projects.com/fr/2006/programmer_vba_sous_excel/2/

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Common Dialog (problèmes et alternatives ?) [ par Gil de Goma ] Bonjour !Pour une application Access 2000, j'ai besoin d'interrogerl'utilisateur afin qu'il me fournisse certains fichiers ou(et ça a de l'importance dll ocx dans le même répertoire que l'appli. [ par gilardh ] Bonjour et bonne année 2003.Voici ma question.Je dois installer une application VB sur des postes sans les droits administrateurs.Je ne peux donc pas répertoire actuel avec commondialog [ par bultez ] bonjour à tous,avec le composant CommonDialog,peut-on connaître le répertoire"actuellement visualisé" ?je ne parle pas de .filename qui donnele fichi CommonDialog Box [ par thierrydelepine ] bonjour,Je souhaite via une CommonDialog Box ou tout autre methode sous VB,pouvoir faire une sélection multiple de fichiers et DE REPERTOIRESJ'ai par L' OCX veut connaitre le répertoire courant de la feuille qui le contient [ par doutch ] Bonjour,J'ai un OCX sur une feuille et je voudrais qui celui ci connaisse le répertoire courant de la  feiulle qui le contient. Et je ne veu Sélection d'un répertoire par le user, =commonDialog?? [ par antoine_ferard ] Bonjour,A la manière d'un CommonDialog, j'aimerais permettre à l'utilisateur de sélectionner un répertoire... Comment puis-je faire ? Merci Créer un dossier sur le répertoire courant [ par Sorlags ] Bonjourd, j'aimerais créer un dossier sur le répertoire courant avec VB, puisque je n'ai pas réussis à le faire avec un batchnom d Filesystemobject... problème de permission [ par xyron ] Bonjour,Il y a probablement quelque chose que j'ignore sur le FSO. Le script suivant déplace 2 répertoires d'un répertoire source vers un répertoire CommonDialog et répertoire [ par cuq ] Bonjour,Ets-il possible de sélectionner un répertoire avec le controle CommonDialog . Pour sélectionner un fichier pas de problème Ajouter un commondialog? [ par tienoow ] Bonjour, Je n arrive pas a ajouter l objet commondialog a ma palette d outil pour userform sur vb 6 . Pourtant je l ai activé en passant par la fene


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,009 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales