J'ai un classeur principal qui effectue une backup du dossier au cas ou. Cette backup est placée dans un dossier Backup. Par exemple
Classeur principal : C:\dossier\classeur.xls
Copie de sauvegarde : C:\dossier\backup\copie.xls
Lorsque l'utilisateur utilise la copie de sauvegarde (contenant les mêmes scripts), j'ai fait un petit module pour que la copie remplace le classeur principal si le classeur principal est fermé :
Code:
Workbooks("classeur.xls").Activate
If Err <> 0 Then
ChDir ThisWorkbook.Path
ChDir ".."
ActiveWorkbook.SaveAs Filename:="classeur.xls"
End If
Lorsque je l'exécute depuis mon PC, tout se passe bien. Les commandes ChDir me permettent de remonter d'un cran (de backup vers dossier). Comme celà lorsque je l"enregistre, il est au bon endroit et ma variable ThisWorkbook prend alors la valeur C:\dossier
Lorsque je l'exécute depuis une clé USB, là çà part en sucette.
Thisworbook.Path correspond bien au chemin de ma clé USB :
H:\dossier\backup
Mais après le ChDir.. et la sauvegarde, ma valeur ThisWorkbook est un chemin d'accès sur mon disque dur ... et plus H:\dossier comme il aurait du faire et comme il le fait lorsque je lance mon script depuis le disque dur.
Là si quelqu'un a une explication je suis preneur à 2000% car je suis totalement largué sur ce coup.
On Error Resume Next
Workbooks("classeur.xls").Activate
If Err <> 0 Then
ChDrive = Left(ActiveWorkbook.Path, 1)
ChDir ThisWorkbook.Path
ChDir ".."
ActiveWorkbook.SaveAs Filename:="classeur.xls"
End If
Sinon toujours glané dans l'aide de VBA (touche F1)
Code:
Sub AfficheInfoAccesFichier(specfichier)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(specfichier)
s = f.Name & " on Drive " & UCase(f.Drive) & vbCrLf
s = s & "Créée le : " & f.DateCreated & vbCrLf
s = s & "Dernier accès le : " & f.DateLastAccessed & vbCrLf
s = s & "Dernière modification le : " & f.DateLastModified
MsgBox s, 0, "Infos d'accès au fichier"
End Sub
Code:
Sub test()
AfficheInfoAccesFichier ActiveWorkbook.FullName
End Sub
J'aurais une autre petite question. Je fais un test pour savoir si un classeur est ouvert :
Code:
Workbooks("rapport_20072011.xls").Activate
If Err = 0 Then
............
end if
Je recherche l'équivalent de * sous DOS car mon problème réside dans le fait que le classeur a toujours le même nom au début mais pas la date qui lui ai associé.
J'aimerais que ce test se fasse sur tous les classeurs qui pourraient être ouverts à ce moment là commençant par "rapport"..un style de rapport_*.xls