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

Macros et VBA Excel Discussion :

VBA-récuper le chemin d'un dossier via un browser


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 17
    Points
    17
    Par défaut VBA-récuper le chemin d'un dossier via un browser
    Bonjour !

    Dans une macro excel, je cherche à selectionner un dossier, puis enregistrer le chemin de ce dossier dans une variable pour l'utiliser plus tard dans une autre macro.

    Je sais ouvrir le browser de dossier et selectionner le dossier mais assez stupidement je n'arrive pas à récuperer l'adresse pour la mettre dans une variable.

    Ci-joint le code utilisé pour chercher le dossier.

    En vous remerciant pour votre aide.


    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
    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
    Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
     
    Const MAX_PATH = 4096
     
    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 Sub CommandButton1_Click()
     
    ChoosePath (title)
     
    'MsgBox ChoosePath
     
    End Sub
      Public Function ChoosePath(title As String) As String
     
      Dim lpIDList As Long
      Dim sBuffer As String
      Dim szTitle As String
      Dim tBrowseInfo As BrowseInfo
     
     
          szTitle = title
     
          With tBrowseInfo
              '.hWndOwner = handle
              .lpszTitle = lstrcat(szTitle, "")
              .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
          End With
     
          lpIDList = SHBrowseForFolder(tBrowseInfo)
     
     
          ChoosePath = ""
          If (lpIDList) Then
              sBuffer = Space(MAX_PATH)
              SHGetPathFromIDList lpIDList, sBuffer
              sBuffer = Left(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
              ChoosePath = sBuffer
          End If
     
      End Function

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Points : 877
    Points
    877
    Par défaut
    Bonsoir

    si tu veux l'utiliser plus tard tu peux déclarer une variable public dans un module.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public monRepertoire As String
    et récupérer le nom du répertoire ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     
    monRepertoire = ChoosePath(title)
     
    'MsgBox ChoosePath
     
    End Sub
    ensuite tu peux utiliser la variable monRepertoire
    Cordialement.

    N'oubliez pas de cliquer sur Résolu quand vous avez obtenu la réponse à votre question.
    Citation
    Il y a 10 sortes de gens au monde : ceux qui connaissent le binaire et les autres » - Anonyme
    Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Malheureusement j'obtiens une erreur de "ref mismatch".
    Mais votre solution m'a aidé à trouver comment faire :

    Je déclare bien une variable en public, puis l'utilise dans la macro d'ouverture du browser, puis enfin dans l'appel de la focntion.

    Ci-joint le code et encore merci !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Public chemin As String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ' debut de la fonction
    '....
     
    ChoosePath = ""
          If (lpIDList) Then
              sBuffer = Space(MAX_PATH)
              SHGetPathFromIDList lpIDList, sBuffer
              sBuffer = Left(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
              ChoosePath = sBuffer
     
          End If
       chemin = ChoosePath
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Private Sub CommandButton1_Click()
     
    ChoosePath (chemin)
    MsgBox chemin
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Ouverture d'un dossier via vba
    Par Patouillou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2015, 11h56
  2. Réponses: 1
    Dernier message: 01/04/2009, 08h02
  3. récuperation de chemin de fichiers !!!
    Par massiliaman dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/07/2007, 18h17
  4. Réponses: 2
    Dernier message: 14/03/2006, 17h25
  5. [Plugin] Récuperation du chemin d'un fichier!
    Par GRM dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 21/03/2005, 09h39

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