IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

récupérer un dossier à partir d'un dossier de recherche spécifique


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut récupérer un dossier à partir d'un dossier de recherche spécifique
    Bonjour à tous

    J'ai trouvé sur le web quelques façons de récupérer le chemin d'un dossier. Est-il possible d'ouvrir l'explorateur déjà sur un dossier spécifique plutôt qu'à la racine principale? J'ai une liste de boutons sélection qui permettrait à l'utilisateur de se positionner à un endroit précis pour récupérer le dossier désiré.

    Nom : Racine.PNG
Affichages : 138
Taille : 12,7 Ko

    voici le code que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                "SHGetPathFromIDListA" (ByVal pidl As Long, _
                ByVal pszPath As String) As Long
     
    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                As Long
     
    Private Const BIF_RETURNONLYFSDIRS = &H1
     
    Public Function BrowseFolder(szDialogTitle As String) As String
      Dim X As Long, bi As BROWSEINFO, dwIList As Long
      Dim szPath As String, wPos As Integer
     
        With bi
            .hOwner = hWndAccessApp
            .lpszTitle = szDialogTitle
            .ulFlags = BIF_RETURNONLYFSDIRS
        End With
     
        dwIList = SHBrowseForFolder(bi)
        szPath = Space$(512)
        X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
     
        If X Then
            wPos = InStr(szPath, Chr(0))
            BrowseFolder = Left$(szPath, wPos - 1)
        Else
            BrowseFolder = ""
        End If
    End Function

    merci à l'avance pour vos réponses

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Voici une fonction "standard" qui se positionne sur le répertoire choisi et retourne un nom de fichier (à mettre dans un module) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    53
    Public Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
    End Type
     
    Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
    'Pour chercher un fichier dans l'explorateur (fonction publique)
    Public Function Parcourt(fenetre, repertoire As String, Optional extension As String = "", Optional titre As String = "Choix du fichier") As String
    If Not Mode_debug Then On Error GoTo err:
    Dim OFName As OPENFILENAME
    Dim a As Integer, res As String
    100 res = ""
    102 OFName.lStructSize = Len(OFName) 'Set the structure size
    104 OFName.hwndOwner = fenetre       'Set the owner window
    106 OFName.hInstance = Application.hWndAccessApp 'Set the application's instance
        'Set the filet
    108 OFName.lpstrFilter = extension & "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
    110 OFName.lpstrFile = Space$(254) 'Create a buffer
    112 OFName.nMaxFile = 255          'Set the maximum number of chars
    114 OFName.lpstrFileTitle = Space$(254) 'Create a buffer
    116 OFName.nMaxFileTitle = 255 'Set the maximum number of chars
    118 OFName.lpstrInitialDir = repertoire 'Set the initial directory
    120 OFName.lpstrTitle = titre
    122 OFName.flags = 0 'no extra flags
        'Show the 'Open File'-dialog
    124 If GetOpenFileName(OFName) Then
          'on recupere 254 caractere il faut limiter au fichier et trouver chr(0)
    126   a = InStr(OFName.lpstrFile, Chr(0))
    128   res = Left(OFName.lpstrFile, a - 1)
        End If
    130 Parcourt = res
        Exit Function
    err: Call message("Erreur " & err.Number & "/" & Erl & " dans fonctions.parcourt : " & err.description)
    End Function
    Exemple d'appel avec filtre sur excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = Parcourt(Me.hwnd, "c:\users\documents", "excel (*.xls*)" & Chr$(0) & "*.xls*" & Chr$(0))
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut
    Bonjour Nico84

    Merci pour ta réponse, mais je ne veux pas récupérer un fichier mais plutôt ouvrir l'explorateur de dossier à un endroit spécifique pour récupérer le chemin sélectionné. Dans la BD, chaque fichier Office (word, excel, powepoint etc,) sont créé et catalogué à partir d'un formulaire d'ajout. En fait des modèles de word par exemple sont récupérés et copier dans le dossier personnel de l'utilisateur ou dans un dossier public selon son choix.


    Quelqu'un travaillant en RH aurait comme choix par défaut

    z:\Jean 'son dossier personnel

    P:\RH 'dossier racine du département RH. Donc à partir d'ici, il pourrait sélectionner le dossier découlant de RH correspondant au document qu'il veut ajouter.

    A la fin le chemin récupéré par exemple serait P:\RH\Santé sécurité

    Ensuite une fonction copie le modèle dans le dossier sélectionné.




    merci

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Effectivement récupérer un répertoire ou un fichier c'est pas exactement pareil !
    Dans la fonction que j'utilise il y a un paramètre .lpstrInitialDir qui permet de préciser le répertoire de départ, il faudrait trouver le nom du paramètre équivalent dans la tienne...

    D'après ce post il semble que ce soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .lParam = SHGetIDListFromPath(StrConv(DefaultFolder, vbUnicode))
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Avril 2013
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 73
    Points : 84
    Points
    84
    Par défaut
    ok je vais essayer cela et te laisse savoir si cela fonctionne

    merci

Discussions similaires

  1. [Batch] Déplacer les fichiers des dossiers et des sous dossiers vers un autre dossier
    Par mathou115 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 25/06/2014, 10h17
  2. Récupérer le nom du dossier à partir d'un chemin
    Par figolu77 dans le forum VB.NET
    Réponses: 3
    Dernier message: 27/04/2014, 18h44
  3. [AC-2010] Sélection d'un sous-dossier à partir d'un dossier sélectionné
    Par GuyDuLac dans le forum VBA Access
    Réponses: 4
    Dernier message: 03/12/2013, 18h49
  4. Réponses: 18
    Dernier message: 03/07/2007, 11h30
  5. Ouvrir un dossier à partir de son chemin
    Par Mr.Gus dans le forum Access
    Réponses: 2
    Dernier message: 13/06/2005, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo