cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 févr. 2008 à 16:34
Salut
Ma boule de cristal (version 2.0) me dit que tu tentes de créer une arborescence complète et non un seul sous-répertoire derrière un répertoire existant.
Pour créer une arborescence complète, voici une petite fonction à coller dans un module :
Private Sys As Object
Public Function CrééRépertoiresRécursifs(ByVal Chemin As String) As Boolean
' On construit l'arborescence en partant du début
' (permet de recontruire un arbre entier)
' Renvoie True s'il y a eu un problème (arbre non créé)
Dim s() As String
Dim Temp As String
Dim sErreur As String
Dim r As Long
Dim Quantité As Long
On Error GoTo Erreur
If Sys Is Nothing Then
Set Sys = CreateObject("Scripting.FileSystemObject")
End If
' On ressort si le répertoire existe déjà (RàS)
If Len(Chemin) = 0 Or Sys.FolderExists(Chemin) Then Exit Function
' Recréé les répertoires depuis la racine
s = Split(Chemin, "")
Quantité = UBound(s)
For r = 0 To Quantité
Temp = Temp & s(r) & ""
If Not Sys.FolderExists(Temp) Then Sys.CreateFolder (Temp)
Next r
Exit Function
Erreur: '---------------- Gestion erreur
sErreur = CStr(Err.Number) & " - " & Err.Description
Temp = "Il n'a pas été possible de créer le répertoire :" & vbCrLf & vbCrLf & _
Chemin & vbCrLf & vbCrLf & _
"Causes possibles :" & vbCrLf & _
"- Le lecteur désigné n'est pas accessible," & vbCrLf & _
"- Les droits d'accès ne permettent pas la création" & vbCrLf & _
vbCrLf & "Vérifiez et corrigez."
MsgBox Temp, vbCritical Or vbOKOnly, App.Title & " " & App.Comments & _
" - Création des répertoires de travail"
CrééRépertoiresRécursifs = True ' Signale Erreur
End Function
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 févr. 2008 à 17:46
Bonjour,
Ca ne marche pas, comme ceci ?
Private Sub Command2_Click()
Dim titi As String, toto
toto = Array("Leprincipal", "lesousrep1", "lesousrep2", "lesousrep3", "lesousrep4")
titi = "d:"
For i = 0 To UBound(toto)
titi = titi & "" & toto(i)
If Dir(titi & "", vbDirectory) = "" Then
MkDir titi
End If
Next
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 févr. 2008 à 18:05
Bizarre autant qu'étrange !!!!
A moins que :
- soit tu veuilles créer sur une autre machine que la tienne
- soit la racine est protégée en écriture
- soit encore ... (possible) ... le répertoire est bien créé mais non encore affiché dans l'explorateur (un petit copup de affichage ===>> actualiser)
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 28 févr. 2008 à 22:30
Bonsoir,
En VBA pour creer plusieurs repertoires en une fois et de facon simple on peu utiliser la fonction Shell et la commande dos mkdir :
Sub CreatRep()
Dim NewRep As Double, NewRepPath As String
NewRepPath = "c:\temp\bob\bil"
NewRep = Shell("cmd.exe /c mkdir " & NewRepPath, 0) 'ici le repertoires bob et bil seront crée dans c:\temp
End Sub