Tester répertoire sur un réseau

mdidish

XLDnaute Junior
Bonjour
J'aimerais tester si un répertoire réseau existe ; pour cela je me sers de ce code :

Code:
If Dir("\\ServeurTest\User\DOSSIER", vbDirectory) = "" Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = Application.DefaultFilePath & " \ "
        .Title = "Sélectionnez le répertoire de sauvegarde de la base de données"
        .Show
        Chemin = .SelectedItems(1) & "\" & "Base de données.xlsx"
    End With
End If

Ce code marche si l'ordinateur de l'utilisateur a accès au réseau.
SI l’ordinateur n'a pas accès au serveur, au lieu de conclure que le dossier n'existe pas, j'ai une erreur sur la première ligne : "nom ou numéro de fichier incorrect".

Comment arranger ce problème ?
 

david84

XLDnaute Barbatruc
Re : Tester répertoire sur un réseau

Bonjour,
deux pistes que tu pourrais approfondir :
- si tu es sûr que cette erreur ne peut être due qu'au fait que l’ordinateur n'ait pas accès au serveur, une gestion d'erreur minimaliste devrait faire l'affaire (voir ce lien) ;
- si ce n'est pas le cas, tu pourrais éventuellement passer par du WMI (cf. Ce lien n'existe plus à titre d'info).
A+
 

Dranreb

XLDnaute Barbatruc
Re : Tester répertoire sur un réseau

Bonjour.

Vous pouvez aussi essayer ceci :
VB:
Option Explicit
Private Declare Function SetCurrentDirectory Lib "kernel32.dll" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

Sub Test()
Const Racine = "\\ServeurTest\User\DOSSIER"
Dim Chemin As String
If SetCurrentDirectory(Racine) Then
    MsgBox "CurDir=" & CurDir, vbInformation, "Test à la demande de Dranreb."
    With Application.FileDialog(msoFileDialogFolderPicker)
        ' .InitialFileName = Application.DefaultFilePath & " \ " ' Des essais m'ont incité à éviter cette instruction.
        .Title = "Sélectionnez le répertoire de sauvegarde de la base de données"
        .Show
        Chemin = .SelectedItems(1) & "\" & "Base de données.xlsx"
    End With
Else:
    MsgBox """" & Racine & """ non disponible.", vbCritical, "Sauvegarde"
End If
End Sub
Veuillez m'informer, en cas de succès, du résultat du MsgBox que j'ai ajouté devant, que je sache une bonne fois pour toute s'il continue à parler en terme de lettre de lecteur, ou si on y voit bien "\\ServeurTest\User\DOSSIER"
 
Dernière édition:

mdidish

XLDnaute Junior
Re : Tester répertoire sur un réseau

@Dranreb : merci pour ton code qui marche.
Si le répertoire réseau est détecté, MsgBox affiche :
"CurDir=\\ServeurTest\User\DOSSIER"

@david84 : merci pour la gestion d'erreur, qui est toujours bon à savoir ! Pour le WMI il faudra que je me plonge plus tranquillement dedans ...
 

Discussions similaires

Réponses
1
Affichages
303
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 231
Messages
2 086 443
Membres
103 211
dernier inscrit
pierrecharbs