Fichier existe sur reseau ?

Bonjour,

J'ai un petit programme qui va vérifier si les liens d'une liste existent ou pas

Seulement dans cette liste , j'ai des liens réseau , et là Excel (PRO 2016 plus) n'aime pas ça.

Il me fait une erreur 52 ,"Nom ou numéro de fichier incorrect" alors que ce fichier existe bien sous cette forme :: \\VBOXSVR\Divers\Partage\Excel\test.xlsx

Sub VerifierSiFichierExiste()
'On Error Resume Next
Dim X,Fin
Fin = Worksheets("MenuHaut-01").Range("C" & Rows.Count).End(xlUp).Row
For X = 3 To Fin
Urlfichier = Dir(Worksheets("MenuHaut-01").Range("C" & X).Value)
If Urlfichier = "" Then
ActiveSheet.Shapes("NonValide-" & X - 3).Visible = True
Else
ActiveSheet.Shapes("Valide-" & X - 3).Visible = True
Worksheets("Accueil").Range("W" & X + 3).Value = Worksheets("MenuHaut-01").Range("C" & X).Value
End If
Next
End Sub

Aucune erreur dans mon programme, en remplaçant (pour des essais) les liens réseau par des URL de mon Disque dur Windows ça marche ... C:\Divers\Partage\Excel\test.xlsx

Il y a t-il quelques chose de particulier à faire pour les liens réseaux ?

Hello,

Alors j’avoue que je fais très peu ce type de manipulation en VBA mais une astuce serait de passer par PowerQuery et essayer d’ouvrir les dossiers dans lesquels sont potentiellement tes fichiers, et ensuite faire le test dans PowerQuery si il existe vraiment ou via une simple formule après restitution des fichiers.

@+

Merci Baroute78

Mais j'ai 160 liens dans mon fichier cela risque d'être lourd non ?

Ça concerne ce fichier : https://forum.excel-pratique.com/excel/menu-shapes-copier-coller-164075

Bonjour,

Vous ne pouvez pas utiliser la commande "Dir" avec une URL, cette dernière ne s'appliquant qu'à un lecteur disque ou réseau. Voici une alternative :

Sub VerifierSiFichierExiste()
    Dim URLfichier As String
    Dim X, Fin

    Fin = Worksheets("MenuHaut-01").Range("C" & Rows.Count).End(xlUp).Row
    For X = 3 To Fin
        URLfichier = Worksheets("MenuHaut-01").Range("C" & X).Value
        On Error Resume Next
        CreateObject("WScript.Shell").Run URLfichier, 0, False
        If Err <> 0 Then
            ActiveSheet.Shapes("NonValide-" & X - 3).Visible = True
        Else
            ActiveSheet.Shapes("Valide-" & X - 3).Visible = True
            Worksheets("Accueil").Range("W" & X + 3).Value = Worksheets("MenuHaut-01").Range("C" & X).Value
        End If
        On Error GoTo 0
    Next X

End Sub

Par ailleurs, apprenez à indenter votre code, il sera beaucoup plus compréhensible.

Merci Thev,

Il fonctionne bien sauf que je ne veux pas ouvrir mais simplement voir si le lien existe.

En fait mes collègues change les fichiers de place sans prévenir , je veux juste faire de temps en temps un point sur les liens "Mort"

Dans ce cas, utiliser ce code :

Sub VerifierSiFichierExiste()
    Dim fso As Object
    Dim URLfichier As String
    Dim X, Fin

    Set fso = CreateObject("Scripting.FileSystemObject")
    Fin = Worksheets("MenuHaut-01").Range("C" & Rows.Count).End(xlUp).Row
    For X = 3 To Fin
        URLfichier = Worksheets("MenuHaut-01").Range("C" & X).Value
        If Not fso.FileExists(URLfichier) Then
            ActiveSheet.Shapes("NonValide-" & X - 3).Visible = True
        Else
            ActiveSheet.Shapes("Valide-" & X - 3).Visible = True
            Worksheets("Accueil").Range("W" & X + 3).Value = Worksheets("MenuHaut-01").Range("C" & X).Value
        End If
        On Error GoTo 0
    Next X

End Sub

Parfait ça marche,

Merci à toi

Rechercher des sujets similaires à "fichier existe reseau"