Bonjour à toutes et à tous
En m'aidant des exemples qu'il y a sur le site de Frédéric SIGONNEAU (http://frederic.sigonneau.free.fr/) - Merci Frédéric
J'ai trouvé la solution à ma propre question. Yes !
Il y a peut-être plus simple en tout cas cela fonctionne et dire qu'il fait beau dehors !!!
Voilà si cela peut aider quelqu'un :
(En sachant que 'C:\travail\essai' est l'endroit ou se trouve la mise à jour pour moi ce sera sur un lecteur réseau et 'C:\travail\test' est l'endroit ou le fichier sera sauvegardé sur le DD de l'utilisateur.)
Sub Mise_a_jour()
Dim fso As Object, fso1 As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object
Dim nom_fichier, nom_fich As String
' Prends le nom du fichier dans le répertoire où la mise à jour se trouve
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = "C:\travail\essai"
Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
nom_fichier = File.Name
Next
End If
nom_fich = ThisWorkbook.Name
' Compare les noms des fichiers
If nom_fichier = nom_fich Then
MsgBox ("Pas de mise à jour")
Else
' Ouvre le nouveau fichier
Workbooks.Open Filename:= _
"C:\travail\essai\" & nom_fichier
' Enregistre sur le DD de l'utilisateur le new fichier
' et gestion d'erreur si le répertoire n'existe pas
On Error GoTo existe
Set fso1 = CreateObject("Scripting.FileSystemObject")
fso1.copyfolder "C:\travail\essai", "C:\travail\test"
MsgBox ("La mise à jour a été enregistrée dans C:\travail\test")
With Application
.DisplayAlerts = False
End With
Windows(nom_fich).Activate
ActiveWindow.Close
End If
Exit Sub
existe:
MkDir "C:\travail\test"
Set fso1 = CreateObject("Scripting.FileSystemObject")
fso1.copyfolder "C:\travail\essai", "C:\travail\test"
MsgBox ("La mise à jour a été enregistrée dans C:\travail\test")
With Application
.DisplayAlerts = False
End With
Windows(nom_fich).Activate
ActiveWindow.Close
End Sub
Bonne continuation.
Stéphane.