Bonjour à tous !
Tout est dans le titre:
Je crée dynamiquement un dossier d'export via :
vérification d'existence des dossiers en sortie et en entrée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set FSO = CreateObject("Scripting.FileSystemObject")
Boucle de copie des fichiers. Vous noterez l'utilisation de SetAttr:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 rep = strRep_In Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.FolderExists(rep) = False Then rep = MsgBox("Répertoire de sortie des media à exporter non créé.", vbCritical + vbOKOnly, "SESAM") Exit Sub End If rep = strRep_Out If FSO.FolderExists(rep) = False Then rep = MsgBox("Répertoire des media à exporter non créé.", vbCritical + vbOKOnly, "SESAM") Exit Sub End If
Le dossier de sortie est systématiquement recréé avant l'appel de cette procédure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Do While .EOF = 0 ficSrc = !Media_FullPath: ficDest = AddBackslash(strRep_In) & "PHOTOS\" SetAttr ficDest, vbNormal Set ficName = FSO.getfile(ficSrc) Forms!pgbar!PTxt = ficName.Name Forms!pgbar!pgbar = .PercentPosition Forms!pgbar.SetFocus FSO.CopyFile ficSrc, ficDest DoEvents .MoveNext Loop
Et pourtant une fois sur deux j'ai le message : "permission refusée"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 rep = "C:\Poubelle\Sortie_Fouille\Sortie_Filtre\PHOTOS" If FSO.FolderExists("C:\Poubelle\Sortie_Fouille\Sortie_Filtre\PHOTOS") = False Then FSO.CreateFolder "C:\Poubelle\Sortie_Fouille\Sortie_Filtre\PHOTOS" If FSO.FolderExists(rep) Then SetAttr rep, vbNormal DoEvents End If DoEvents
A ce stade si, depuis l'explorateur, j'enlève lecture seule "à la main" pour le dossier de destination, le code peut continuer.
Tout se passe comme si SetAttr ne faisait rien (ou mal utilisé?)
Avez-vous une idée de mon erreur ?
Partager