VBA est un langage qui peut être utilisé non seulement avec la suite Microsoft Office mais également, de manière générale, avec le système d'exploitation Windows. C'est ainsi qu'il est possible d'ouvrir un dossier particulier dans une nouvelle fenêtre de l' "Explorateur Windows"" (= l'explorateur des dossiers par défaut dans Windows, "Windows Explorer" en anglais) avec VBA.
Pour faire cela, on fera appel à la fonction VBA Shell. Cette fonction permet au VBA de lancer une application / un logiciel (ici l'explorateur de dossiers Windows Explorer) en Windows. Nous, on va s'en servir pour ouvrir l'Explorateur Windows.
Appel à la fonction Shell pour ouvrir un dossier en VBA
Le code qui suit montre les différents paramètres de l'appel à la fonction Shell:
1 2 3 4 |
Dim MonDossier As String MonDossier = "C:\dossier_test\sous_dossier\" Shell Environ("WINDIR") & "\explorer.exe " & MonDossier, vbNormalFocus |
Dans cet exemple, la fonction est paramétrée pour ouvrir le dossier (fictif) C:\dossier_test\sous_dossier\
On fait passer dans cette fonction les trois arguments suivants:
- le chemin de l'application à ouvrir:
Environ("WINDIR") & "\explorer.exe"
- le chemin du dossier à ouvrir dans Windows Explorer: le contenu de la variable
MonDossier
- l 'information concernant la manière d'afficher le dossier nouvellement ouvert
Le paramètre vbNormalFocus
ouvre le dossier dans une fenêtre normale qui sera active. Selon votre besoin, vous pouvez le remplacer par:
vbNormalNoFocus
(taille normale, fenêtre pas active)vbMaximizedFocus
(taille maximisée, fenêtre active)vbMinimizedFocus
(taille minimisée, affichée comme une icône active)vbMinimizedNoFocus
(taille minimisée, affichée comme une icône inactive)
Suivent deux codes VBA complets et prêts à l'utilisation (il suffit de les copier/coller) dans votre fichier/projet.
Procédure VBA: Ouvrir un dossier (nom du dossier est dans le code)
Voici l'utilisation la plus simple et la plus directe – le nom du dossier fait partie du code VBA. Pour éviter des erreurs, une vérification a été ajouté pour tester si le dossier que l'on veut ouvrir existe. Ce test est cependant facultatif.
1 2 3 4 5 6 7 8 9 |
Sub OuvrirFenetreAvecDossier() Dim MonDossier As String MonDossier = "C:\Test" '<-- adaptez le nom du Dossier If Len(Dir(MonDossier, vbDirectory)) > 0 Then 'vérifie si le Dossier existe Shell Environ("WINDIR") & "\explorer.exe " & MonDossier, vbNormalFocus End If End Sub |
Fonction VBA: Ouvrir un dossier (nom du dossier est dans une variable)
Et voici le code VBA sous forme d'une fonction – la solution plus flexible à utiliser dans des projets plus complexes. Cette fonction a un argument (de type String
) qui contient le chemin vers le Dossier. Comme pour le code VBA précédent, la vérification de l'existence du dossier a été ajouté.
1 2 3 4 5 6 7 8 |
Public Function FenetreAvecDossier(MonDossier As String) 'par: Excel-Malin.com ( https://excel-malin.com ) If Len(Dir(MonDossier, vbDirectory)) > 0 Then 'vérifie si le Dossier existe Shell Environ("WINDIR") & "\explorer.exe " & MonDossier, vbNormalFocus End If End Function |
Remarque: comme vous l'avez constaté, on fait appel également à la fonction VBA Environ() qui nous permet d'obtenir les informations concernant le système. Pour en savoir plus sur cette fonction VBA, voici un tutoriel dédié: Explications et exemples d'utilisation de la fonction Environ()
Pour aller plus loin en VBA…
Je vous propose sur ce site d'autres articles qui pourraient vous servir lors de votre travail avec VBA. En voici quelques uns…
- Cours VBA gratuit en ligne: "VBA: Droit au but"
- Liste de toutes les fonctions disponibles en VBA
- Les codes sources VBA réutilisables
- Outils Excel à télécharger – pour s'inspirer de ce qui est possible de réaliser en VBA…
- Utilisation de RECHERCHEV en VBA – oui, c'est possible! Et même très simple…
- Envoyer un email avec VBA à partir d'Excel
14 commentaires sur “VBA: Ouvrir Dossier dans Explorateur de fichiers”
Bonjour et un grand merci pour ces astuces !
Est il possible de spécifier la taille de la fenêtre "dossier" à son ouverture (j'aimerais en ouvrir 4 et les positionner en mode mosaïque par exemple).
En vous remerciant
Bonjour Eric,
en VBA, ceci n'est malheureusement pas possible.
Pour le faire, il vous faudrait installer un petit logiciel spécifique (utilitaire tel que "WinMove" ou "AutoHotKey") qu'éventuellement, vous pourriez lancer via VBA avec des paramètres voulus.
Mais là, cela devient nettement plus compliqué…
Bien à vous, Martin
Bonjour et merci pour le conseil.
J'ai néanmoins espoir d'y arriver car des personnes y sont parvenus en VBA.
Je vais explorer…
Merci et bonne journée
Eric
Si vous trouvez une solution, n'hésitez pas à la partager. Je suis curieux et je serai content d'apprendre…
Bonne chance, Martin
Bonjour,
Problème résolu ici :
https://www.generation-nt.com/reponses/vba-excel-ouvrir-windows-explorer-definir-entraide-4280401.html
Bonne journée et merci
Eric
Intéressant. Merci pour le partage et je suis content que vous ayez pu résoudre votre problème!
Martin
Bonjour et merci infiniment,
Je suis débutant en VBA , j'ai créé un bouton "QUITTER" qui aurait dû me permettre de fermer un classeur bien spécifique , malheureusement en cliquant sur le bouton " QUITTER" , cela ferme automatiquement tous les classeurs excel qui sont ouverts. Existe-il une formule ou une astuce qui permet la sortie d'un classeur bien spécifique ?
Bonjour Ale,
oui, c'est tout à fait possible. Le code VBA suivant va faire l'affaire:
Workbooks("test1.xlsx").Close SaveChanges:=False
Bien sûr, vous devez remplacer le "test1.xlsx" par le nom du classeur que vous voulez fermer…
Cordialement, Martin
Bonjour,
Super aide mille mercis, une question je tourne en rond… Quel code pourrait fonctionner pour ouvrir un dossier en fonction du choix de la combobox (dans la conbobox le même nom que le dossier)? Merci
Bonjour Sandrine,
pour répondre à votre question, j'aurais besoin de savoir de quel type de ComboBox il s'agit car les réponses sont différents.
Cela peut être un ComboBox dans un formulaire (VBA) ou il peut se trouver directement dans le classeur Excel – et à ce moment-là cela peut être un "UserForm Combobox" ou un "ActiveX Combobox"…
Cordialement, Martin
Bonjour,
Un grand merci pour ces informations. J'ai réussi à ouvrir un fichier à partir d'un bouton de cde dans Access. Ce qui serait intéressant, c'est de pouvoir ouvrir un dossier à partir d'un champ (variable) à la place d'une saisie fixe.
Un débutant qui débute difficilement.
Bonjour,
Merci beaucoup pour ce travail très pédagogique!!!
Christian
MERCI BEAUCOUP BIEN CORDIALEMENT
Bonjour,
Tout d'abord merci pour les astuces ci-dessus. J'aurais souhaite verifier si la fenetre de l'explorateur cible est deja ouverte et ne pas l'ouvrir si elle est deja ouverte. Est-ce que c'est possible ?
Merci