Comment ouvrir un dossier avec VBA

Résolu
supercopain -  
 debutant_en_macro -
Bonjour,

je suis à la recherche d'une macro qui ouvre un dossier dont le nom est dans une liste excel
exemple dans une liste récapitulative j'ai E1234
dans un dossier sur trouve plusieurs dossier, est seul est nommé E1234, blabla
lorsque la cellule de ma liste qui contient E1234 je veux cliquer sur un bouton pour ouvrir le fameux dossier du même nom.

merci beaucoup

<config>Windows xp /office 2003

14 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    J'ai rajouté un message
    Pense à mettre en résolu si c'est ok!

    le message apparaîtra en bas à gauche de la feuille,
    tous les 20 dossiers.
    A l'endroit où tu vois 'Prêt'

    Option Explicit
    Public V As String
    
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    
    
    Sub OuvreDossier()
    
    Dim Target As Range
    
    
    V = ""
    Dim chainePath As String
    
    Set Target = ActiveCell
    chainePath = "G:\Docu\R&D\Rapports d'essais"
    'chainePath = "C:\Data\2009"
    
    If Not Intersect(Target, Range("A2:A20")) Is Nothing Then  ' la plage qui contient les essais
        Application.ScreenUpdating = False
       
        V = Left(Replace(ActiveCell.Value, "E", "E ", 1), 6)
        Call AfficherListeDossiers(chainePath, CreateObject("scripting.filesystemobject"), V)
    
        If V <> "" Then
    
            ShellExecute 0, "explore", V, "", "", 10
        End If
    End If
    
    End Sub
    
    
    Public Sub AfficherListeDossiers(ByVal specdossier As String, ByRef Fso, ByVal leChemin)
    '
    Dim j As Integer
    Dim msgStatusBarre As String
    
    msgStatusBarre = Application.DisplayStatusBar ' sauvegarde
    
        Dim dossier, fd, sDossier  ' variable de type variant
       ' Set Fso = CreateObject("Scripting.FileSystemObject") ' créé un objet fileSystem
        Set dossier = Fso.GetFolder(specdossier)             ' dossier : héritage de fso
        Set sDossier = dossier.SubFolders                    'sDossier : héritage de dossier
        j = 0
        For Each fd In sDossier                 ' Scanne la collection sDossier
            j = j + 1
            If (j Mod 20) = 0 Then  ' mise à jour du message tous les 20 dossiers
                Application.StatusBar = j & " traités sur : " & sDossier.Count
            End If
            
            If InStr(1, fd.Name, V) > 0 Then
                V = fd
                Exit For
            End If
    
        Next
       Set sDossier = Nothing
       Set dossier = Nothing
       Application.StatusBar = False
       Application.DisplayStatusBar = msgStatusBarre
    End Sub
    1