Bonjour
Je voudrais dans une application Access 2013 pouvoir récupérer le chemin complet d'un dossier et le stocker dans une table. Merci à qui pourrait me dire comment faire cela.
Merci d'avance
Version imprimable
Bonjour
Je voudrais dans une application Access 2013 pouvoir récupérer le chemin complet d'un dossier et le stocker dans une table. Merci à qui pourrait me dire comment faire cela.
Merci d'avance
Bonjour,
Il existe plusieurs solutions pour cela et il aurait été intéressant pour toi d' aller faire un tour dans la FAQ dans laquelle tu aurais trouvé des éléments de réponse, par exemple ici :
http://vb.developpez.com/faq/?page=Systeme#rep_speciaux
Comment veux-tu récupérer ce répertoire :
- par sélection de fichier ?
- par sélection de dossier ?
Merci de préciser comment tu vois les choses.
Argy
Merci pour ta réponse. En fait ce qui m'intéresse c'est de récupérer cette adresse par sélection d'un dossier.
Bien dans un module, tu peux coller ce bout de code...
et l'appeler depuis un bouton de formulaire comme suit :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Private Const BIF_RETURNONLYFSDIRS = 1 Private Const MAX_PATH = 260 Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long) Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long Public Function CheminDuDossier(ByVal HWnd As Long, ByVal Titre As String) As String Dim intPos As Integer Dim lpIDListe As Long Dim lngRetour As Long Dim strChemin As String Dim udtBI As BrowseInfo With udtBI 'Fenêtre appelante .hWndOwner = HWnd 'Titre .lpszTitle = lstrcat(Titre, "") 'Flag de sélection du dossier .ulFlags = BIF_RETURNONLYFSDIRS End With 'Boîte de dialogue lpIDListe = SHBrowseForFolder(udtBI) If lpIDListe Then strChemin = String$(MAX_PATH, 0) 'Définition du chemin SHGetPathFromIDList lpIDListe, strChemin 'Libération de la mémoire CoTaskMemFree lpIDListe intPos = InStr(strChemin, vbNullChar) If intPos Then strChemin = Left$(strChemin, intPos - 1) End If End If CheminDuDossier = strChemin End Function
N.B. ce code ne permet pas d'accéder directement aux dossiers spéciaux comme dans l'exemple de la FAQ cité dans mon précédent message...Code:
1
2 MsgBox CheminDuDossier(Me.HWnd, "Séléctionnez le dossier")
Argy
Oui c'est super avec ce code que tu m'as fourni. Une dernière question toutefois : je souhaite récupérer le chemin trouvé (et qui s'affiche bien dans la boîte de dialogue) dans mon code. J'ai donc mis les instructions suivantes dans mon code
et je me retrouve avec la valeur 1 !!!!!Code:
1
2
3 Dim XXX As String XXX = MsgBox(CheminDuDossier(Me.HWnd, "Séléctionnez le dossier")) Debug.Print XXX
C'est logique...
Tu affectes à ta variable XXX la valeur retournée par le clic du bouton OK du MsgBox() !
Le code qui convient doit être :
ArgyCode:
1
2
3
4 Dim strChemin As String strChemin = CheminDuDossier(Me.HWnd, "Séléctionnez le dossier") Debug.Print strChemin
OK je viens d'essayer et tout marche parfaitement. Encore un grand merci pour ton aide et tes réponses rapides.
Cordialement.
Bonjour,
Comment récupérer le chemin du ficher? (Access 2013 64 bits)
Merci
Merci
De rien,