oguruma
XLDnaute Impliqué
Bonjour Le Forum,
S'il y a des Linuxiens sur forum, vous connaissez et vous avez certainement utilisé le mkdir -p de Linux. Le voici donc façon VBA afin de créer une arborescence de dossiers et sous-dossiers.
PS : il y a encore peut-être plus rapide ? je suis preneur mais en tout cas ça fait le le boulot. Cette fonction est utilisée dans la version LIBMAC 3.3 publiée hier et disponible.
Exemple d'utilisation
Résultat
Le code
S'il y a des Linuxiens sur forum, vous connaissez et vous avez certainement utilisé le mkdir -p de Linux. Le voici donc façon VBA afin de créer une arborescence de dossiers et sous-dossiers.
PS : il y a encore peut-être plus rapide ? je suis preneur mais en tout cas ça fait le le boulot. Cette fonction est utilisée dans la version LIBMAC 3.3 publiée hier et disponible.
Exemple d'utilisation
VB:
Sub Test_MakeDirP()
MakeDirP "D:\TEST\DOSSIER\SOUS_DOSSIER\SOUS_SOUS_DOSSIER"
End Sub
Résultat
Le code
VB:
Function MakeDirP(hPath As String) As Boolean
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
'------------------------------------------------------
' Possible que ce soit un fichier donc hors sujet
'------------------------------------------------------
If oFSO.FileExists(hPath) Then
MakeDirP = False
Exit Function
End If
'------------------------------------------------------
' Le dossier existe déjà donc inutile de le créer
'------------------------------------------------------
If oFSO.FolderExists(hPath) Then
MakeDirP = True
Exit Function
End If
'------------------------------------------------------------------------------------------------------
' On part en profondeur dans l'arborescence pour créer les dossiers en utilisant la récursivité
'------------------------------------------------------------------------------------------------------
If MakeDirP(oFSO.GetParentFolderName(hPath)) Then
' si la création échoue
If oFSO.CreateFolder(hPath) Is Nothing Then
MakeDirP = False
Else
' Création réussie
MakeDirP = True
End If
Else
MakeDirP = False
End If
End Function