Création des dossiers et sous-dossiers en VBA 1


Si vous avez besoin de créer un nouveau dossier avec VBA, vous pouvez utiliser le code qui suit. Son grand avantage par rapport à la plupart des solutions qui circulent sur internet réside dans le fait qu’il peut créer non seulement un nouveau dossier mais également ses sous-dossiers.

Créer dossiers et sous-dossiers en VBA

Prenons un exemple pour illustrer la situation: Nous avons le dossier « C:\Temp » qui ne contient aucun sous-dossier.

Avec les codes habituels vous pouvez créer le dossier « C:\Temp\MonDossier » mais si vous voulez créer directement « C:\Temp\MonDossier\MonSousDossier » cela ne sera pas possible. La plupart des solutions ne peuvent pas créer des sous-dossiers dans un dossier qui n’existe pas encore.

Le code suivant peut créer des sous-dossiers dans des dossiers inexistants. Dans notre exemple, avec le code VBA sur cette page, la fonction va créer le dossier « C:\Temp\MonDossier » et ensuite le sous-dossier « MonSousDossier », tout cela dans une seule instruction.

Le nombre de niveaux de sous dossier n’est pas limité. Il s’agit donc d’une solution idéale pour créer des nouvelles structures complètes de dossiers et sous-dossiers.

Voici donc le code de la fonction prêt à l’emploi suivi d'un exemple d'utilisation.

Fonction VBA MkDir() pour créer un simple dossier

Pour créer un simple dossier, on peut se satisfaire de la fonction VBA de base MkDir() qui utilise un argument (de type String) qui contient le nom et l'emplacement du nouveau dossier. Le désavantage de cette fonction réside dans le fait qu'il est possible de créer un dossier seulement dans un dossier déjà existant.

Cette solution est suffisante si vous avez besoin d'ajouter un seul dossier. Simple et efficace.

Fonction VBA pour créer dossiers et sous-dossiers en même temps

Si, contrairement à l'exemple précédent, vous avez besoin de créer plusieurs niveaux de sous-dossiers, les fonctions de base de VBA ne seront pas suffisantes. Il vous faudra créer votre propre fonction. Ou plus simple: utiliser la fonction suivante…

Exemple d'utilisation de la fonction VBA

Voici donc un code VBA qui utilise la fonction que je vous propose plus haut pour créer un dossier (MonDossier) ainsi que des sous-dossier en 3 niveaux. Tout cela crée dans le dossier "Temp" qui se trouve sur le disque C: .

 Comme vous pouvez le voir, cela peut difficilement être plus simple et plus "user-friendly"!

Ceci devrait rendre votre travail plus rapide et plus efficace. Que ce soit un simple classement de fichiers ou la création d'une application VBA.

Pour aller plus loin

13 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

Commentaire sur “Création des dossiers et sous-dossiers en VBA

  • Sauvegarde a la fermeture Dans Autre Dossier

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim fl1 As String, fl2 As String, fl3 As String, fl4 As String, w1 As String, w2 As String, w3 As Workbook
    Application.ScreenUpdating = False
    w1 = ThisWorkbook.FullName ' Fichier Original
    w2 = ThisWorkbook.Name ' "ABC.xlsm"
    Set w3 = ThisWorkbook ' ThisWorkbook "C:\Documents and Settings\NomUtilisateur\Mes documents"
    fl2 = "\" ' "\"
    fl1 = fl2 & "Sauv" ' \Sauv
    fl3 = fl2 & Format(Now, "yy-mm-dd") ' "\Date Du Jour"
    fl4 = fl2 & Left(w2, (InStrRev(w2, ".") – 1)) ' "\ABC" Only ABC from ABC.xlsm
    ' myName = Left (ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".") – 1))
    ' ext = Right(ThisWorkbook.Name, Len(ThisWorkbook.Name) – InStrRev(ThisWorkbook.Name, "."))
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:= _
    w3.Path & fl2 & w2, FileFormat:=xlOpenXMLWorkbookMacroEnabled, AccessMode:=xlShared 'w3.Path sauvegarde même dossier
    If Dir(w3.Path & fl1, 16) = "" Then
    MkDir (w3.Path & fl1)
    MkDir (w3.Path & fl1 & fl3 & "")
    MkDir (w3.Path & fl1 & fl3 & fl4)
    ElseIf Dir(w3.Path & fl1 & fl3 & "", 16) = "" Then
    MkDir (w3.Path & fl1 & fl3 & "")
    MkDir (w3.Path & fl1 & fl3 & fl4)
    ElseIf Dir(w3.Path & fl1 & fl3 & fl4, 16) = "" Then
    MkDir (w3.Path & fl1 & fl3 & fl4)
    End If
    ActiveWorkbook.SaveAs Filename:= _
    w3.Path & fl1 & fl3 & fl4 & fl2 & Format(Now, "hhnnss") & "_" & w2, FileFormat:= _
    xlOpenXMLWorkbookMacroEnabled, AccessMode:=xlShared '\Sauv sauvegarde dans un autre dossier
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    End Sub