J'ai un script VBA qui crée un répertoire1 (sur le Pc), puis copie un
répertoire2 (du réseau) vers ce répertoire1 et qui enfin détruit le
répertoire2.
Mais mon problème est que le répertoire2 n'est pas détruit et que ce
répertoire2 n'est pas complétement copié sur le répertoire1. J'ai un message
70, permission refusé lors de la tentative de destruction du répertoire.
Comme si la copie bloqué encore le répertoire.
J'utilise FSO pour les copies et suppressions de répertoires et il semble
que même en mettant une boucle Doevents pendant plus de 10 secondes (le
répertoire à copier/détruire est très petit, la manip. à la main met moins
d'une seconde à la copie) après la copie et avant la suppression, le script
plante. Alors qu'anciennement il ne me posait aucun problème...
Que ce passe-t-il ?
Voici un bout de mon script:
FSO.CopyFolder Repertoire2, Repertoire1
If Err.Number <> 0 Then
ret = MsgBox("Une erreur est survenue lors de la copie. Le répertoire
'" & Repertoire2 & "' du serveur NE DOIT PAS être détruit.", vbCritical,
"ATTENTION !!!")
Else
Attendre (500)
FSO.DeleteFolder Repertoire2
Attendre (500)
If Dir(Repertoire2, vbDirectory) <> "" Then
ret = MsgBox("Erreur. Rép non détruit !", vbExclamation)
End If
End If
70, permission refusé lors de la tentative de destruction du répertoire.
Comme si la copie bloqué encore le répertoire.
Avec FOS, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
HD
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de quelques simples petits fichiers en lecture seule qui empêche mon répertoire de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
Avec FSO, ce genre de message d'erreur
sort quand on tente d'effacer ou de déplacer
un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de
quelques simples petits fichiers en lecture seule qui empêche mon répertoire
de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des
fichiers en lecture seul dans le répertoire ?
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de quelques simples petits fichiers en lecture seule qui empêche mon répertoire de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
Alain CROS
Bonjour.
On peut déplacer plutôt que copier puis effacer.
Function MoveRep&(Source$, Dest$) Dim FSO As Object, Folder As Object Set FSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set Folder = FSO.GetFolder(Source) FSO.MoveFolder Source, Dest & "" & Folder.Name MoveRep = Err.Number Set Folder = Nothing Set FSO = Nothing End Function'AC
Sub Utilisation() Dim Rep1$, Rep2$ Rep2 = "CheminCompletRépertoireSource" Rep1 = "CheminCompletRépertoireDest" If MoveRep(Rep2, Rep1) <> 0& Then _ MsgBox "Une erreur est survenue lors de la copie. Le répertoire " & _ Rep2 & " du serveur NE DOIT PAS être détruit.", vbCritical, "ATTENTION !!!" End Sub
Alain CROS
"HD" a écrit dans le message de news: bvq96d$1gn$
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de quelques simples petits fichiers en lecture seule qui empêche mon répertoire de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
Bonjour.
On peut déplacer plutôt que copier puis effacer.
Function MoveRep&(Source$, Dest$)
Dim FSO As Object, Folder As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set Folder = FSO.GetFolder(Source)
FSO.MoveFolder Source, Dest & "" & Folder.Name
MoveRep = Err.Number
Set Folder = Nothing
Set FSO = Nothing
End Function'AC
Sub Utilisation()
Dim Rep1$, Rep2$
Rep2 = "CheminCompletRépertoireSource"
Rep1 = "CheminCompletRépertoireDest"
If MoveRep(Rep2, Rep1) <> 0& Then _
MsgBox "Une erreur est survenue lors de la copie. Le répertoire " & _
Rep2 & " du serveur NE DOIT PAS être détruit.", vbCritical, "ATTENTION !!!"
End Sub
Alain CROS
"HD" <hd@anti.spam.fr> a écrit dans le message de news: bvq96d$1gn$1@biggoron.nerim.net...
Avec FSO, ce genre de message d'erreur
sort quand on tente d'effacer ou de déplacer
un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de
quelques simples petits fichiers en lecture seule qui empêche mon répertoire
de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des
fichiers en lecture seul dans le répertoire ?
Function MoveRep&(Source$, Dest$) Dim FSO As Object, Folder As Object Set FSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next Set Folder = FSO.GetFolder(Source) FSO.MoveFolder Source, Dest & "" & Folder.Name MoveRep = Err.Number Set Folder = Nothing Set FSO = Nothing End Function'AC
Sub Utilisation() Dim Rep1$, Rep2$ Rep2 = "CheminCompletRépertoireSource" Rep1 = "CheminCompletRépertoireDest" If MoveRep(Rep2, Rep1) <> 0& Then _ MsgBox "Une erreur est survenue lors de la copie. Le répertoire " & _ Rep2 & " du serveur NE DOIT PAS être détruit.", vbCritical, "ATTENTION !!!" End Sub
Alain CROS
"HD" a écrit dans le message de news: bvq96d$1gn$
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de quelques simples petits fichiers en lecture seule qui empêche mon répertoire de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
HD
On peut déplacer plutôt que copier puis effacer. Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule. Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
-- @+ HD
On peut déplacer plutôt que copier puis effacer.
Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur
sort quand on tente d'effacer ou de déplacer
un fichier en lecture seule.
Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
On peut déplacer plutôt que copier puis effacer. Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule. Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
-- @+ HD
Clément Marcotte
Bonjour,
Je me suis déjà servi de quelque chose comme cela, pour enlever l'attribut "Lecture seule" de certains fichiers:
If fichier.attributes and 1 Then fichier.attributes = fichier.attributes - 1 End If
À l'origine c'était dans un script VBS (très semblable à VBA)
' Ce script balaie un dossier entier de façon récursive et ' enlève l'attribut lecture seule Dim FSys, DFile Set FSys = CreateObject("Scripting.FileSystemObject") ScanFolder("c:windowsfonts") 'DFile.Close 'MsgBox "La liste des fichiers a été créée" Sub ScanFolder(folderSpec) Set FSys = CreateObject("scripting.filesystemobject") Set cedossier = FSys.GetFolder(folderspec) Set collectiondossiers = cedossier.SubFolders i = 1 For Each ifolder In collectiondossiers For Each fichier In ifolder.Files If fichier.attributes and 1 Then fichier.attributes = fichier.attributes - 1 End If Next Next MsgBox "Fin du travail" End Sub
"HD" a écrit dans le message de news:bvq96d$1gn$
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de
quelques simples petits fichiers en lecture seule qui empêche mon répertoire
de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des
fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
Bonjour,
Je me suis déjà servi de quelque chose comme cela, pour enlever
l'attribut "Lecture seule" de certains fichiers:
If fichier.attributes and 1 Then
fichier.attributes = fichier.attributes - 1
End If
À l'origine c'était dans un script VBS (très semblable à VBA)
' Ce script balaie un dossier entier de façon récursive et
' enlève l'attribut lecture seule
Dim FSys, DFile
Set FSys = CreateObject("Scripting.FileSystemObject")
ScanFolder("c:windowsfonts")
'DFile.Close
'MsgBox "La liste des fichiers a été créée"
Sub ScanFolder(folderSpec)
Set FSys = CreateObject("scripting.filesystemobject")
Set cedossier = FSys.GetFolder(folderspec)
Set collectiondossiers = cedossier.SubFolders
i = 1
For Each ifolder In collectiondossiers
For Each fichier In ifolder.Files
If fichier.attributes and 1 Then
fichier.attributes = fichier.attributes - 1
End If
Next
Next
MsgBox "Fin du travail"
End Sub
"HD" <hd@anti.spam.fr> a écrit dans le message de
news:bvq96d$1gn$1@biggoron.nerim.net...
Avec FSO, ce genre de message d'erreur
sort quand on tente d'effacer ou de déplacer
un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient
bien de
quelques simples petits fichiers en lecture seule qui empêche mon
répertoire
de bien se copier... Je ne connaissais pas ce problème important
dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il
existe des
Je me suis déjà servi de quelque chose comme cela, pour enlever l'attribut "Lecture seule" de certains fichiers:
If fichier.attributes and 1 Then fichier.attributes = fichier.attributes - 1 End If
À l'origine c'était dans un script VBS (très semblable à VBA)
' Ce script balaie un dossier entier de façon récursive et ' enlève l'attribut lecture seule Dim FSys, DFile Set FSys = CreateObject("Scripting.FileSystemObject") ScanFolder("c:windowsfonts") 'DFile.Close 'MsgBox "La liste des fichiers a été créée" Sub ScanFolder(folderSpec) Set FSys = CreateObject("scripting.filesystemobject") Set cedossier = FSys.GetFolder(folderspec) Set collectiondossiers = cedossier.SubFolders i = 1 For Each ifolder In collectiondossiers For Each fichier In ifolder.Files If fichier.attributes and 1 Then fichier.attributes = fichier.attributes - 1 End If Next Next MsgBox "Fin du travail" End Sub
"HD" a écrit dans le message de news:bvq96d$1gn$
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule.
Un grand MERCI à toi Clément !!! Effectivement mon problème vient bien de
quelques simples petits fichiers en lecture seule qui empêche mon répertoire
de bien se copier... Je ne connaissais pas ce problème important dans FSO...
Comment peut on donc copier et supprimer un répertoire même si il existe des
fichiers en lecture seul dans le répertoire ?
Merci d'avance. -- @+ HD
Alain CROS
Bonjour.
AMHA, ça n'a rien à voir avec FSO. A tu essayé mon script ? Chez moi Win98 sans réseau, un répertoire avec des fichiers en lecture seule est déplacé sans problème. Si l'erreur est toujours généré, fais une boucle comme l'indique Clément pour supprimer l'attribut lecture seule des fichiers.
Alain CROS.
"HD" a écrit dans le message de news: bvqqtp$gqi$
On peut déplacer plutôt que copier puis effacer. Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule. Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
-- @+ HD
Bonjour.
AMHA, ça n'a rien à voir avec FSO.
A tu essayé mon script ?
Chez moi Win98 sans réseau, un répertoire avec des fichiers en lecture seule est déplacé sans problème.
Si l'erreur est toujours généré, fais une boucle comme l'indique Clément pour supprimer l'attribut lecture seule des fichiers.
Alain CROS.
"HD" <hd@anti.spam.fr> a écrit dans le message de news: bvqqtp$gqi$1@biggoron.nerim.net...
On peut déplacer plutôt que copier puis effacer.
Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur
sort quand on tente d'effacer ou de déplacer
un fichier en lecture seule.
Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
AMHA, ça n'a rien à voir avec FSO. A tu essayé mon script ? Chez moi Win98 sans réseau, un répertoire avec des fichiers en lecture seule est déplacé sans problème. Si l'erreur est toujours généré, fais une boucle comme l'indique Clément pour supprimer l'attribut lecture seule des fichiers.
Alain CROS.
"HD" a écrit dans le message de news: bvqqtp$gqi$
On peut déplacer plutôt que copier puis effacer. Le problème se posera toujours puiqu'il est lié à l'utilisation de FSO.
Car comme le disait Clément:
Avec FSO, ce genre de message d'erreur sort quand on tente d'effacer ou de déplacer un fichier en lecture seule. Ce que j'ai vérifié et effectivement FSO pose problème sur les répertoires
contenant un ou plusieurs fichiers en lecture seul....
-- @+ HD
HD
AMHA, ça n'a rien à voir avec FSO.
Et pourtant si. Puisque la copie de ce répertoire ne pose pas de problème lorsqu'elle est effectuée à la main. Cette copie ne pose pas non plus de problème si j'enlève l'attribut lecture seul sur tous les fichiers de ce répertoire.
Chez moi Win98 sans réseau, un répertoire avec des fichiers en lecture seule est déplacé sans problème. Je suis en réseau. FSO a peut être du mal à géré les fichiers en lecture
seul dans ce cas?
Si l'erreur est toujours généré, fais une boucle comme l'indique Clément pour supprimer l'attribut lecture seule des fichiers.
Une réponse sur un autre forum m'a donnée la solution. Il y'a un script qui n'utilise pas FSO mais une API. Cette API serait plus fiable et de plus beaucoup plus rapide d'exécution que FSO: http://faq.vb.free.fr/index.php?question5
Pour que cela marche en VBA il faut mettre .hWnd = 0 -- @+ HD
AMHA, ça n'a rien à voir avec FSO.
Et pourtant si. Puisque la copie de ce répertoire ne pose pas de problème
lorsqu'elle est effectuée à la main. Cette copie ne pose pas non plus de
problème si j'enlève l'attribut lecture seul sur tous les fichiers de ce
répertoire.
Chez moi Win98 sans réseau, un répertoire avec
des fichiers en lecture seule est déplacé sans problème.
Je suis en réseau. FSO a peut être du mal à géré les fichiers en lecture
seul dans ce cas?
Si l'erreur est toujours généré, fais une boucle comme l'indique
Clément pour supprimer l'attribut lecture seule des fichiers.
Une réponse sur un autre forum m'a donnée la solution. Il y'a un script qui
n'utilise pas FSO mais une API. Cette API serait plus fiable et de plus
beaucoup plus rapide d'exécution que FSO:
http://faq.vb.free.fr/index.php?question5
Pour que cela marche en VBA il faut mettre .hWnd = 0
--
@+
HD
Et pourtant si. Puisque la copie de ce répertoire ne pose pas de problème lorsqu'elle est effectuée à la main. Cette copie ne pose pas non plus de problème si j'enlève l'attribut lecture seul sur tous les fichiers de ce répertoire.
Chez moi Win98 sans réseau, un répertoire avec des fichiers en lecture seule est déplacé sans problème. Je suis en réseau. FSO a peut être du mal à géré les fichiers en lecture
seul dans ce cas?
Si l'erreur est toujours généré, fais une boucle comme l'indique Clément pour supprimer l'attribut lecture seule des fichiers.
Une réponse sur un autre forum m'a donnée la solution. Il y'a un script qui n'utilise pas FSO mais une API. Cette API serait plus fiable et de plus beaucoup plus rapide d'exécution que FSO: http://faq.vb.free.fr/index.php?question5
Pour que cela marche en VBA il faut mettre .hWnd = 0 -- @+ HD
HD
Une réponse sur un autre forum m'a donnée la solution. Il y'a un script qui n'utilise pas FSO mais une API. Cette API serait plus fiable et de plus beaucoup plus rapide d'exécution que FSO: http://faq.vb.free.fr/index.php?question5 Pour que cela marche en VBA il faut mettre .hWnd = 0
Aïe... En passant par cette API, la destruction nous demande la confirmation de destruction du répertoire et de plus redemande confirmation de destruction de ce répertoire si il comporte des fichiers en lecture seul... -- @+ HD
Une réponse sur un autre forum m'a donnée la solution. Il y'a un
script qui n'utilise pas FSO mais une API. Cette API serait plus
fiable et de plus beaucoup plus rapide d'exécution que FSO:
http://faq.vb.free.fr/index.php?question5
Pour que cela marche en VBA il faut mettre .hWnd = 0
Aïe... En passant par cette API, la destruction nous demande la confirmation
de destruction du répertoire et de plus redemande confirmation de
destruction de ce répertoire si il comporte des fichiers en lecture seul...
--
@+
HD
Une réponse sur un autre forum m'a donnée la solution. Il y'a un script qui n'utilise pas FSO mais une API. Cette API serait plus fiable et de plus beaucoup plus rapide d'exécution que FSO: http://faq.vb.free.fr/index.php?question5 Pour que cela marche en VBA il faut mettre .hWnd = 0
Aïe... En passant par cette API, la destruction nous demande la confirmation de destruction du répertoire et de plus redemande confirmation de destruction de ce répertoire si il comporte des fichiers en lecture seul... -- @+ HD
HD
Aïe... En passant par cette API, la destruction nous demande la confirmation de destruction du répertoire et de plus redemande confirmation de destruction de ce répertoire si il comporte des fichiers en lecture seul... C'est bon... les flags sont là pour ça...
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp -- @+ HD
Aïe... En passant par cette API, la destruction nous demande la
confirmation de destruction du répertoire et de plus redemande
confirmation de destruction de ce répertoire si il comporte des
fichiers en lecture seul...
C'est bon... les flags sont là pour ça...
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp
--
@+
HD
Aïe... En passant par cette API, la destruction nous demande la confirmation de destruction du répertoire et de plus redemande confirmation de destruction de ce répertoire si il comporte des fichiers en lecture seul... C'est bon... les flags sont là pour ça...
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp -- @+ HD