Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[résolu]Problème de path sous VBA

Al capone

XLDnaute Junior
Bonjour à tous,

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.

Merci d'avance
 
Dernière édition:

Al capone

XLDnaute Junior
Re : Problème de path sous VBA

Re Pierrot lorsque je le met comme ceci :

Code:
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

J'ai le code erreur :

Erreur de compilation
Argument non facultatif


Merci pour ta future aide
 

Staple1600

XLDnaute Barbatruc
Re : Problème de path sous VBA

Re

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

Ca peut toujours servir
 

Al capone

XLDnaute Junior
Re : Problème de path sous VBA

Hello, LOL merci çà marche.

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
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de path sous VBA

Re,

regarde peut être ceci :
Code:
Dim wb As Workbook
For Each wb In Workbooks
    If wb.Name Like "rapport_*" Then MsgBox "ok"
Next wb

boucle sur les classeurs ouverts...

@+
 

Discussions similaires

Réponses
2
Affichages
382
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…