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épertoire et chemin par défaut


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 91
    Points : 58
    Points
    58
    Par défaut Répertoire et chemin par défaut
    Bonjour,

    j'ai trouvé ce code en parcourant le FAQ

    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
     
    Public Function SelectFolder(Titre As String, Handle As Long) As String
     
    Dim lpIDList As Long
    Dim strBuffer As String
    Dim strTitre As String
    Dim tBrowseInfo As BrowseInfo
     
    strTitre = Titre
    With tBrowseInfo
        .hWndOwner = Handle
        .lpszTitle = lstrcat(strTitre, "")
        .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
    End With
     
    lpIDList = SHBrowseForFolder(tBrowseInfo)
     
    If (lpIDList) Then
        strBuffer = String(260, vbNullChar)
        SHGetPathFromIDList lpIDList, strBuffer
        SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
    End If
     
    End Function
    et j'aimerais savoir comment faire pour ouvrir la fenêtre de sélection de répertoire directement dans un emplacement spécifié au lieu de l'ouvrir à Poste de travail.

    J'aimerais, en gros, indiquer un chemin par défaut et qu'a l'ouverture de la boite de dialogue Sélection, il se place directement à l'emplacement indiqué.

    Merci d'avance pour votre réponse.

  2. #2
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Voilà qui va t'aider très certainement.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    Option Compare Database
    Option Explicit
     
    'Déclaration de l'API
    Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                       "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
    'Structure du fichier
    Private 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
     
    'Constantes
    Private Const OFN_READONLY = &H1
    Private Const OFN_OVERWRITEPROMPT = &H2
    Private Const OFN_HIDEREADONLY = &H4
    Private Const OFN_NOCHANGEDIR = &H8
    Private Const OFN_SHOWHELP = &H10
    Private Const OFN_ENABLEHOOK = &H20
    Private Const OFN_ENABLETEMPLATE = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
    Private Const OFN_NOVALIDATE = &H100
    Private Const OFN_ALLOWMULTISELECT = &H200
    Private Const OFN_EXTENSIONDIFFERENT = &H400
    Private Const OFN_PATHMUSTEXIST = &H800
    Private Const OFN_FILEMUSTEXIST = &H1000
    Private Const OFN_CREATEPROMPT = &H2000
    Private Const OFN_SHAREAWARE = &H4000
    Private Const OFN_NOREADONLYRETURN = &H8000
    Private Const OFN_NOTESTFILECREATE = &H10000
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHARENOWARN = 1
    Private Const OFN_SHAREWARN = 0
     
    Public Function OuvrirFichier(Handle As Long, _
                                        Titre As String, _
                                        TypeRetour As Byte, _
                                        Optional TitreFiltre As String, _
                                        Optional TypeFichier As String, _
                                        Optional RepParDefaut As String) As String
        'OuvrirFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
        'la boîte de dialogue de sélection d'un fichier.
        'Explication des paramètres
            'Handle = le handle de la fenêtre (Me.Hwnd)
            'Titre = Titre de la boîte de dialogue
            'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
                '1 = Chemin complet + Nom du fichier
                '2 = Nom fichier seulement
            'TitreFiltre = Titre du filtre
                'Exemple: Fichier Access
                'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
            'TypeFichier = Extention du fichier (Sans le .)
                'Exemple: MDB
                'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
            'RepParDefaut = Répertoire d'ouverture par defaut
                'Exemple: C:\windows\system32
                'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
     
        Dim StructFile As OPENFILENAME
        Dim sFiltre As String
     
        'Construction du filtre en fonction des arguments spécifiés
        If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
            sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
        End If
        sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
     
        'Configuration de la boîte de dialogue
        With StructFile
            .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
            .hWndOwner = Handle 'Identification du handle de la fenêtre
            .lpstrFilter = sFiltre 'Application du filtre
            .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
            .nMaxFile = 254 'Taille maximale du fichier
            .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
            .nMaxFileTitle = 254  'Taille maximale du nom du fichier
            .lpstrTitle = Titre 'Titre de la boîte de dialogue
            .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
            If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
                RepParDefaut = CurrentDb.Name
                PathStripPath (RepParDefaut)
                .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
                 InStr(1, RepParDefaut, vbNullChar) - 1)))
            Else
                .lpstrInitialDir = RepParDefaut
            End If
        End With
     
        If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
            Select Case TypeRetour
                Case 1: OuvrirFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
                Case 2: OuvrirFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
            End Select
        End If
     
    End Function
    Pour le chemin par défaut, cela peut être plusieurs éléments :
    • l'adresse de ta base CurrentProject.Path
    • une valeur stockée dans une table
    • etc


    Bon courage,
    Gabout

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 91
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Tout d'abord merci de m'avoir répondu.

    Ce que je voudrais savoir c'est comment ouvrir la boite de dialogue de sélection sans passer par la sélection du fichier... Est ce qu'il y a un moyen ?

    Dans la form ou je fais intervenir l'ouverture de la boite de dialogue, j'ai un bouton Parcourir, une zone de texte pour le chemin et une zone de texte pour le nom de fichier (je précise que l'utilise cette form pour l'importation et l'exportation entre Access/Excel). Les informations sur le chemin et le fichier sont stocké dans une table de ma base.



    Comment je peux adapter ton code pour que cela ne m'oblige pas à sélectionner un fichier ? Je ne suis pas une experte en VBA Access donc si tu pouvais me donner un coup de pouce STP ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut UP !
    Bonjour,
    j'ai le même problème que Misha.
    Je souhaite ouvrir à l'utilisateur une boîte de dialogue lui permettant de sélectionner un répertoire pour exporter au format texte des tables Access.
    En utilisant la fonction "SelectFolder" comme Misha, ça marche nickel. Seulement je voudrais lui passer un répertoire par défaut plutôt que de le faire s'ouvrir sur le poste de travail. Quelqu'un a-t-il une idée sur comment je pourrais faire ?

    Merci d'avance

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2008
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Bonjour à tous, effectivement si quelqu'un savait paramètrer la fonction "selectfolder" citée plus haut, de manière à définir nous-même le répertoire par défaut lors de l'ouverture de la boite de dialogue, cela m'arrangerait énormément....

    Milles merci

  6. #6
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 114
    Points : 491
    Points
    491
    Par défaut
    Citation Envoyé par Gabout Voir le message
    Bonjour,
    Voilà qui va t'aider très certainement.
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    Option Compare Database
    Option Explicit
     
    'Déclaration de l'API
    Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                       "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
    'Structure du fichier
    Private 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
     
    'Constantes
    Private Const OFN_READONLY = &H1
    Private Const OFN_OVERWRITEPROMPT = &H2
    Private Const OFN_HIDEREADONLY = &H4
    Private Const OFN_NOCHANGEDIR = &H8
    Private Const OFN_SHOWHELP = &H10
    Private Const OFN_ENABLEHOOK = &H20
    Private Const OFN_ENABLETEMPLATE = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
    Private Const OFN_NOVALIDATE = &H100
    Private Const OFN_ALLOWMULTISELECT = &H200
    Private Const OFN_EXTENSIONDIFFERENT = &H400
    Private Const OFN_PATHMUSTEXIST = &H800
    Private Const OFN_FILEMUSTEXIST = &H1000
    Private Const OFN_CREATEPROMPT = &H2000
    Private Const OFN_SHAREAWARE = &H4000
    Private Const OFN_NOREADONLYRETURN = &H8000
    Private Const OFN_NOTESTFILECREATE = &H10000
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHARENOWARN = 1
    Private Const OFN_SHAREWARN = 0
     
    Public Function OuvrirFichier(Handle As Long, _
                                        Titre As String, _
                                        TypeRetour As Byte, _
                                        Optional TitreFiltre As String, _
                                        Optional TypeFichier As String, _
                                        Optional RepParDefaut As String) As String
        'OuvrirFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
        'la boîte de dialogue de sélection d'un fichier.
        'Explication des paramètres
            'Handle = le handle de la fenêtre (Me.Hwnd)
            'Titre = Titre de la boîte de dialogue
            'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
                '1 = Chemin complet + Nom du fichier
                '2 = Nom fichier seulement
            'TitreFiltre = Titre du filtre
                'Exemple: Fichier Access
                'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
            'TypeFichier = Extention du fichier (Sans le .)
                'Exemple: MDB
                'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
            'RepParDefaut = Répertoire d'ouverture par defaut
                'Exemple: C:\windows\system32
                'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
     
        Dim StructFile As OPENFILENAME
        Dim sFiltre As String
     
        'Construction du filtre en fonction des arguments spécifiés
        If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
            sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
        End If
        sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
     
        'Configuration de la boîte de dialogue
        With StructFile
            .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
            .hWndOwner = Handle 'Identification du handle de la fenêtre
            .lpstrFilter = sFiltre 'Application du filtre
            .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
            .nMaxFile = 254 'Taille maximale du fichier
            .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
            .nMaxFileTitle = 254  'Taille maximale du nom du fichier
            .lpstrTitle = Titre 'Titre de la boîte de dialogue
            .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
            If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
                RepParDefaut = CurrentDb.Name
                PathStripPath (RepParDefaut)
                .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
                 InStr(1, RepParDefaut, vbNullChar) - 1)))
            Else
                .lpstrInitialDir = RepParDefaut
            End If
        End With
     
        If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
            Select Case TypeRetour
                Case 1: OuvrirFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
                Case 2: OuvrirFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
            End Select
        End If
     
    End Function
    Pour le chemin par défaut, cela peut être plusieurs éléments :
    • l'adresse de ta base CurrentProject.Path
    • une valeur stockée dans une table
    • etc


    Bon courage,
    Bonsoir membres du forum,

    Pourriez vous expliquer en plus du cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
    comment filtrer les applications cas par cas ? C''est à dire par exemple "word", "excel", "pdf" etc ?
    Cordialement.
    Je ne Suis Pas un Expert en Programmation
    Le savoir est la lumière de l'esprit
    Le chemin de la réussite

    Les savants sont les héritiers de la science
    Qui cherche positivement trouve
    Tout ce qui brille n'est pas l'or ou diamant
    Mais l'or et le diamant se trouvent avec sagesse, intelligence et effort

Discussions similaires

  1. Afficher un chemin par défaut dans un FileUpload
    Par solawe dans le forum ASP.NET
    Réponses: 5
    Dernier message: 17/08/2007, 16h48
  2. Configurer le chemin par défaut de recherche des images (balise <img src>)
    Par DJ Caësar 9114 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/03/2007, 08h00
  3. Chemin par défaut pour download de fichier
    Par Poussy-Puce dans le forum ASP
    Réponses: 2
    Dernier message: 19/09/2006, 22h23
  4. Chemin par défaut
    Par Aurèl90 dans le forum Access
    Réponses: 4
    Dernier message: 10/10/2005, 20h54
  5. Réponses: 6
    Dernier message: 28/09/2004, 16h47

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