1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| Option Explicit
'Source d'origine : https://excel-malin.com/codes-sources-vba/creation-dossiers-et-sous-dossiers-en-vba/#Fonction_VBA_pour_creer_dossiers_et_sous-dossiers_en_meme_temps
Function CreerDossier(Chemin As String) As Boolean
'par: Excel-Malin.com ( https://excel-malin.com )
On Error GoTo CreerDossierErreur
Dim PremierDossier As String
Dim CheminReseau As Boolean
Dim CheminPartielOK As String
Dim CheminPartiel, PartieDeChemin As Integer
Dim PartiesDeChemin As Variant
Dim FSO As Object
If Len(Dir(Chemin, vbDirectory)) <> 0 Then
Set FSO = CreateObject("Scripting.FileSystemObject")
'suppression du dernier backslash si présent
If Right(Chemin, 1) = Application.PathSeparator Then Chemin = Left(Chemin, Len(Chemin) - 1)
'vérificacion si chemin local ou réseau
CheminReseau = Left(Chemin, 2) = "\\"
'décomposition du chemin
CheminPartielOK = ""
If CheminReseau Then
PartiesDeChemin = Split(Replace(Chemin, "\\", ""), Application.PathSeparator)
PremierDossier = LBound(PartiesDeChemin) + 1
Else
PartiesDeChemin = Split(Chemin, Application.PathSeparator)
PremierDossier = LBound(PartiesDeChemin)
End If
'tests et créations de (sous)dossiers
For PartieDeChemin = PremierDossier To UBound(PartiesDeChemin)
For CheminPartiel = LBound(PartiesDeChemin) To PartieDeChemin
CheminPartielOK = CheminPartielOK & PartiesDeChemin(CheminPartiel) & Application.PathSeparator
If CheminPartiel = PartieDeChemin Then
If CheminReseau Then
If Right(CheminPartielOK, 1) = Application.PathSeparator Then CheminPartielOK = Left(CheminPartielOK, Len(CheminPartielOK) - 1)
If Left(CheminPartielOK, 2) <> "\\" Then CheminPartielOK = "\\" & CheminPartielOK
End If
If FSO.FolderExists(CheminPartielOK) = False Then MkDir CheminPartielOK
End If
Next
CheminPartielOK = ""
Next
End If
CreerDossierErreur:
If Err.Number <> 0 Then
Err.Raise Err.Number, "CreerDossier", Err.Description
Else
CreerDossier = True
End If
End Function |
Partager