VBA: obtenir l’adresse réseau d’un fichier (UNC)

L'expansion des "clouds", "nuages" et les lecteurs partagés et/ou en réseau nécessite une approche plus moderne de gérer les fichiers. C'est pour cela que je vous propose deux fonctions VBA qui permettent d'identifier de manière unique l'adresse réseau d'un lecteur ou d'un fichier (selon UNCUniversal Naming Convention)…

Habituellement, nous utilisons les noms de lecteurs C:\, D:\ etc. Il s'agit, en principe, des disques durs locaux. Et pour se faciliter la vie (pour faire plus court et pour rendre plus lisible), on "mappe" les lecteurs réseau à une lettre également. Ainsi, plutôt que \\mon.serveur.fr\Dossier\SousDossier\ , vous préférerez probablement Z:\ .

Mais ceci peut vous amener au problème suivant: vous écrivez une macro qui utilise un certain fichier qui est placé sur le réseau qui est "mappé" sur votre machine comme H:\. Vous utilisez donc dans votre code des instructions comme Dir("H:\MonDossier\MonFichier.txt")… Tout marche bien. Vous enverrez la macro à votre collègue et là… Plus rien… Pourquoi? Peut-être parce que votre collègue a nommé (mappé), sur sa machine, le lecteur réseau en question J:\ et pas H:\ comme vous… Le disque existe, le fichier également et pourtant, la macro ne marchera pas…

Heureusement, vous pouvez utiliser le code qui suit pour retrouver l'adresse unique du lecteur ou du fichier

Code VBA pour trouver l'adresse réseau d'un disque

La fonction VBA qui suit retourne l'adresse réseau du lecteur qui est passé à la fonction en tant qu'argument unique de cette fonction. La fonction s'attend au nom du lecteur dans le format X: ou X:\ .

Si le nom de lecteur ne correspond pas à ce format, la fonction va retourner l'erreur #VALUE!.
Si le lecteur n'existe pas ou il ne s'agit pas d'un lecteur réseau, la fonction va retourner l'erreur #N/A. Vous pouvez le tester par exemple avec le disque C:\

 

Exemple d'utilisation

Et voici une simple procédure VBA (Sub) avec un exemple d'utilisation de cette fonction…

 

Code VBA pour trouver l'adresse réseau d'un fichier

Cette deuxième fonction est un dérivé de la fonction précédente: en plus du renvoi de l'adresse du lecteur réseau, elle remplace le nom mappé du lecteur par son adresse réseau dans un nom & chemin d'un fichier. En gros: vous mettez dans l'argument le chemin complet d'un fichier avec son nom de lecteur mappé et la fonction va retourner le chemin complet mais avec l'adresse réseau du lecteur…

Attention: cette fonction ne vérifie pas si le fichier existe! Elle ne fait que rendre le chemin "unique". Si vous voulez, vous pouvez combiner cette fonction avec la fonction VBA qui vérifie si le fichier existe.

 

Exemple d'utilisation

Et voici à nouveau un exemple d'utilisation de cette fonction… Plutôt simple 🙂

 

Conclusion

Voici donc les functions qui vous permettront d'éviter des erreurs et de rendre votre projet VBA plus robuste dans le cas où vous travaillez avec des fichiers ou dossiers qui se trouvent sur un/des lecteur(s) en réseau.

N'hésitez pas à partager vos remarques, suggestions ou questions dans les commentaires.

Pour aller plus loin en VBA…

Et voici quelques liens qui pourraient vous être utils dans votre programmation en VBA…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire sur “VBA: obtenir l’adresse réseau d’un fichier (UNC)”