Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vba - copie réseau gérer les erreurs pour ne pas bloquer dans un hors temps

1 réponse
Avatar
twinley
Bonjour à tous,

En continuation de la question d'Eric, déplacer des fichier en fonction
du nom.

Je vais adapter sa macro pour allez chercher un seul fichier sur un
autre poste réseau, sans tuer l'original donc juste une copie.

Je partais sur la base assez simplissime :
FileCopy "M:\ficsource\File.txt", "C:\ficdest\File.txt"

Mais si la machine à l'autre bout n'est pas allumée, comment gérer les
erreurs ? Ce sera l'occasion d'envoyer un message ( ça c'est ok), mais
c'est surtout comment ne pas bloquer le process dans un hors temps ?

Sub Deplacefichier()
Dim FichSource As String, FichCible As String
'ChDir "c:\pdf\out\"
ChDrive "p:\"
FichSource = Dir("*.pdf")
Do While FichSource <> ""
FichCible = "w:\Documents\" & Left(FichSource, 2) & "\" &
Left(FichSource, 5) & "\" & _
Mid(FichSource, 6, 4) & "\" & FichSource

'FichSource = "c:\pdf\out\" & FichSource
FichSource = "p:\" & FichSource
FileCopy FichSource, FichCible
'Kill FichSource
FichSource = Dir
Loop
End Sub

Merci pour l'aide

--
à+twinley

1 réponse

Avatar
twinley
Alors aux dernières nouvelles,
je me débat avec le code suivant :

Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer

On Error Resume Next
filenum = FreeFile()
Open filename For Input Lock Read As #filenum
Close filenum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
Error errnum
End Select
End Function

Sub CallDemands()
Dim Msg, Style, Title
If IsFileOpen("d4600aapubliccar2005car.txt") Then
MsgBox "Fichier en cours d'utilisation ou machine éteinte" &
Chr(13) & "Recommencez plus tard"
Else
' copy source, dest
FileCopy "d4600aapubliccar2005car.txt",
"c:aapubliccar2005car.txt"
End If
End Sub

Pour simuler une machine arrêtée, je ne partage pas le dossier source.
J'ai un message d'erreur msgbox qui stoppe la macro, car il ne trouve
pas le chemin. Et il ne part pas en hors temps.
Pour une première approche, c'est suffisant. Si je trouve mieux, cela
fera l'objet d'une autre version.
Adaptation d'après Michdenis.

à+twinley

twinley wrote:
Bonjour à tous,

En continuation de la question d'Eric, déplacer des fichier en fonction
du nom.

Je vais adapter sa macro pour allez chercher un seul fichier sur un
autre poste réseau, sans tuer l'original donc juste une copie.

Je partais sur la base assez simplissime :
FileCopy "M:ficsourceFile.txt", "C:ficdestFile.txt"

Mais si la machine à l'autre bout n'est pas allumée, comment gérer les
erreurs ? Ce sera l'occasion d'envoyer un message ( ça c'est ok), mais
c'est surtout comment ne pas bloquer le process dans un hors temps ?

Sub Deplacefichier()
Dim FichSource As String, FichCible As String
'ChDir "c:pdfout"
ChDrive "p:"
FichSource = Dir("*.pdf")
Do While FichSource <> ""
FichCible = "w:Documents" & Left(FichSource, 2) & "" &
Left(FichSource, 5) & "" & _
Mid(FichSource, 6, 4) & "" & FichSource

'FichSource = "c:pdfout" & FichSource
FichSource = "p:" & FichSource
FileCopy FichSource, FichCible
'Kill FichSource
FichSource = Dir
Loop
End Sub

Merci pour l'aide