Mettre un chemin d’accès dans une variable.

Mettre un chemin d’accès dans une variable. - VB/VBA/VBS - Programmation

Marsh Posté le 09-05-2005 à 13:12:56    

Bonjour,
Avec une macro, je voudrai mettre dans une variable un chemin d’accès. Avec GetOpenFilename on a bien un chemin d’accès, mais on est obligé de sélectionner un document, or le fichier est vide, je ne veux que le chemin d’accès.
Merci pour votre aide.

Reply

Marsh Posté le 09-05-2005 à 13:12:56   

Reply

Marsh Posté le 09-05-2005 à 14:18:39    

3 topics où tu parles de fichier...
Je suppose que, pour les 3, tu veux parler de dossier (ou répertoire).
 
Le chemin dont tu parles est-il fixe ou le client doit-il choisir le dossier?


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 09-05-2005 à 15:16:10    

En effet c'est plutôt dossier. Désolé si je me suis mal exprimé.
Je veux que ça soit l'opérateur qui choisisse le chemin d'accès et qu'il se mette dans une variable.
Avec par exemple
Variable = GetOpenFilename
 
une boîte de dialogue s'ouvre et le chemin d'accès du fichier sélectionner se met dans la variable. Mais le problème est qu'il n'y a pas de documents dans le dossier et que je ne veux mettre dans la variable que le chemin sans le nom du dossier.
Comment faire?
Merci bcp!  

Reply

Marsh Posté le 09-05-2005 à 17:42:46    

Bon c'est un code à copier coller assez efficace. Normalement ça fonctionne sous tous les OS. A vérifier.
Dans un module :

Code :
  1. Option Explicit
  2. Private Type BrowseInfo
  3.     hWndOwner      As Long
  4.     pIDLRoot       As Long
  5.     pszDisplayName As Long
  6.     lpszTitle      As Long
  7.     ulFlags        As Long
  8.     lpfnCallback   As Long
  9.     lParam         As Long
  10.     iImage         As Long
  11. End Type
  12. Private Const BIF_RETURNONLYFSDIRS = 1
  13. Private Const MAX_PATH = 260
  14. Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
  15. Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal _
  16.    lpString1 As String, ByVal lpString2 As String) As Long
  17.  
  18. Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As _
  19.    BrowseInfo) As Long
  20.  
  21. Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal _
  22.    pidList As Long, ByVal lpBuffer As String) As Long
Code :
  1. Public Function BrowseForFolder(hWndOwner As Long, sPrompt As _
  2.    String) As String
  3.     Dim nNull As Integer
  4.     Dim lpIDList As Long
  5.     Dim nResult As Long
  6.     Dim  sPath As String
  7.     Dim bi As BrowseInfo
  8.     bi.hWndOwner = hWndOwner
  9.     bi.lpszTitle = lstrcat(sPrompt, "" )
  10.     bi.ulFlags = BIF_RETURNONLYFSDIRS
  11.     lpIDList = SHBrowseForFolder(bi)
  12.  
  13.     If lpIDList Then
  14.         sPath = String$(MAX_PATH, 0)
  15.         nResult = SHGetPathFromIDList(lpIDList, sPath)
  16.         Call CoTaskMemFree(lpIDList)
  17.         nNull = InStr(sPath, vbNullChar)
  18.         If nNull Then
  19.             sPath = Left$(sPath, nNull - 1)
  20.         End If
  21.     End If
  22.     BrowseForFolder = sPath
  23. End Function


Là où tu en as besoin :

Code :
  1. BrowseForFolder(Me.hwnd, "message personnalisé" )


 
Edit : Mets variable = BrowseForFolder(Me.hwnd, "message personnalisé" )
En espérant t'avoir aidé.


Message édité par knakes le 09-05-2005 à 17:43:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed