Sous ce nom barbare, la réponse à un constat simple...
la fonction MkDir de VB n'est pas récursive. Entendez par là que pour que :
MkDir "C:\Test\Data" créé effectivement le repertoire Data, il faut que le repertoire Test existe lui même...
La fonction que je vous propose ici fait le même boulot, mais de manière récursive. Toute l'arborescence sera créée, si besoin,
ou renverra False, si ce repertoire ne peut etre créé/n'existe pas en sortant de la fonction...
Source / Exemple :
'# Permet de tester l'existence d'un dossier...
Private Function FolderExists(ByRef vsPathFolder As String) As Boolean
On Error Resume Next
FolderExists = CBool(GetAttr(vsPathFolder) And vbDirectory)
End Function
Private Function MkDir(ByRef vsPathFolder As String) As Boolean
Dim i As Long
'# Si le dossier n'existe pas...
If Not FolderExists(vsPathFolder) Then
'# On va procéder a un découpage : on récupère le dossier parent
i = InStrRev(vsPathFolder, "\")
If i = 0 Then
'# On est surement arrivés au nom du lecteur, et il ne semble pas être présent
MkDir = False
ElseIf MkDir(Left$(vsPathFolder, i - 1)) Then
'# Le repertoire parent existe ou a pu être créé...
FileSystem.MkDir vsPathFolder
MkDir = True
Else
'# Le repertoire parent n'a pu être créé
MkDir = False
End If
Else
'# Le repertoire existe bien
MkDir = True
End If
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.