Création d'un bouton parcourir [Résolu]

Tifris8 6 Messages postés lundi 22 juin 2009Date d'inscription 24 juin 2009 Dernière intervention - 23 juin 2009 à 11:31 - Dernière réponse : Tifris8 6 Messages postés lundi 22 juin 2009Date d'inscription 24 juin 2009 Dernière intervention
- 23 juin 2009 à 15:55
Bonjour,

Je travaille sous l'éditeur VB de CATIA R5. et j'aimerais créer un bouton parcourir pour récupérer le chemin d'un dossier (non pas celui d'un fichier), dans le but de l'utiliser pour de futures concaténations.
J'aimerais utiliser un bouton Parcourir et ensuite afficher le chemin de ce dossier dans une TextBox car les outils DirListBox ou DriveListBox ne sont pas disponibles dans cet éditeur.

Merci d'avance pour votre aide.
Afficher la suite 

2 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 23 juin 2009 à 14:00
+3
Utile
Salut
CATIA est un progiciel supportant le VBA (et pas le VB.NET comme indiqué dans la catégorie de la question).

Ce que tu recherches, c'est la sélection d'un répertoire.
Même en VB6, il n'existe pas de composant permettant cette sélection.
Il faut avoir recours aux APIs du système.

Il te suffit de créer un Module dans ton projet et d'y inclure ces lignes :
Option Explicit

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 Const BIF_RETURNONLYFSDIRS = &H1
Private Const BIF_DONTGOBELOWDOMAIN = &H2
Private Const BIF_STATUSTEXT = &H4
Private Const BIF_RETURNFSANCESTORS = &H8
Private Const BIF_BROWSEFORCOMPUTER = &H1000
Private Const BIF_BROWSEFORPRINTER = &H2000
Private Const MAX_PATH = 260

Private Declare Function GetDesktopWindow Lib "user32" () As Long

Private Declare Function SHGetPathFromIDList Lib "shell32" _
   Alias "SHGetPathFromIDListA" _
  (ByVal pidl As Long, _
   ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" _
   Alias "SHBrowseForFolderA" _
  (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Sub CoTaskMemFree Lib "ole32" _
   (ByVal pv As Long)

Public Function BrosweForFolder(Title As String) As String
    Dim bi As BROWSEINFO
    Dim pidl As Long
    Dim path As String
    Dim pos As Integer
    bi.hOwner = GetDesktopWindow()
    bi.pidlRoot = 0&
    bi.lpszTitle = Title
    bi.ulFlags = BIF_RETURNONLYFSDIRS
    pidl = SHBrowseForFolder(bi)
    path = Space$(MAX_PATH)
    If SHGetPathFromIDList(ByVal pidl, ByVal path) Then
        pos = InStr(path, Chr$(0))
        path = Left(path, pos - 1)
        If Right(path, 1) = "" Then
            BrosweForFolder = Left(path, pos - 1)
        Else
            BrosweForFolder = Left(path, pos - 1) & ""
        End If
    End If
    Call CoTaskMemFree(pidl)
End Function

Pour l'utiliser depuis ton bouton :
   Dim sTemp As String
   sTemp = BrosweForFolder("Le titre de la fenêtre")
   If sTemp <> "" Then
      monNouveauRépertoire = sTemp
   End If

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
Tifris8 6 Messages postés lundi 22 juin 2009Date d'inscription 24 juin 2009 Dernière intervention - 23 juin 2009 à 15:55
0
Utile
Merci pour les précisions, et surtout pour le code (ça dépasse largement mes connaissances sur le sujet).
Commenter la réponse de Tifris8

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.