Comment ouvrir un dossier avec VBA
Résolu
supercopain
-
debutant_en_macro -
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
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
A voir également:
- Ouvrir un fichier vba
- Comment ouvrir un fichier epub ? - Guide
- Comment ouvrir un fichier bin ? - Guide
- Ouvrir un fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier 7z - Guide
14 réponses
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'
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