VBA: Ouvrir Dossier dans Windows Explorer 10


VBA est un langage qui peut être utilisé non seulement avec la suite Microsoft Office mais également 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 "Windows Explorer" (= l'explorateur des dossiers par défaut dans Windows) avec VBA.

VBA: ouvrir dossier dans Windows Explorer

VBA: ouvrir dossier dans Windows Explorer

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.

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:

 

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:

  1. le chemin de l'application à ouvrir: Environ("WINDIR") & "\explorer.exe"
  2. le chemin du dossier à ouvrir dans Windows Explorer: le contenu de la variable MonDossier
  3. 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

Voici l'utilisation la plus simple et la plus directe – le nom du dossier fait partie du code. 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.

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

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é.

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: Explications et exemples d'utilisation de la fonction Environ()

 

78 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

10 commentaires sur “VBA: Ouvrir Dossier dans Windows Explorer

  • Eric

    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

  • Ale

    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 ?

    • excel-malin.com Auteur de l’article

      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

  • Sandrine

    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

    • excel-malin.com Auteur de l’article

      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