Option Explicit
Sub Dossier()
Dim Lig As Long, Col As Integer
Dim ColB As String, ColC As String
' Récupère la dernière ligne de la feuille
Derlig = Range("A" & Application.Rows.Count).End(xlUp).Row
' Sauter la 1ère ligne d'entête
For Lig = 2 To Derlig
' Pour chaque colonne
For Col = 1 To 4
' Récupère la valeur de la ligne de la colonne B
ColB = Range("B" & Lig).Value
' Récupère la valeur de la ligne de la colonne C
ColC = Range("C" & Lig).Value
' Vérifie / créé le dossier
CreerDossier ("C:\" & ColB & "\" & ColC & "\" & Cells(1, 3 + Col))
Next Col
Next Lig
End Sub
Private Function CreerDossier(ByVal sChemin As String)
Dim I As Integer, sTmp As String, Ar() As String
' Créé un tableau des différends dossier et sous-dossier
Ar = Split(sChemin, "\")
sTmp = Ar(0)
' Pour le début du chemin jusqu'à la fin
For I = LBound(Ar) + 1 To UBound(Ar)
' Vérifie que le tableau n'est pas vide
If Ar(I) <> "" Then
sTmp = sTmp & "\" & Ar(I)
On Error Resume Next
MkDir sTmp
On Error GoTo 0
End If
Next
End Function