VBA: supprimer les liaisons Excel


Avez-vous besoin de partager vos fichiers Excel? Avez-vous besoin d'utiliser vos fichiers Excel aux différents endroits? En avez-vous assez des messages vous demandant "d'actualiser les liens" ou vous informant que "les liens externes sont indisponibles"? Vous êtes au bon endroit car vous trouverez ici la solution à toutes ces situations.

Les liaisons externes dans des fichiers Excel

Qu'est-ce "une liaison" en Excel? Il s'agit d'un lien que différents Classeurs peuvent avoir entre eux – le plus simple sera de l'illustrer sur un exemple:

Excel: liaison vers un autre Classeur ouvert

Excel: liaison vers un autre Classeur, tant qu'il est ouvert – on voit uniquement le nom de l'autre Classeur

Excel: liaison vers un autre Classeur fermé

Excel: liaison vers un autre Classeur, une fois que ce dernier est fermé – on voit également le chemin vers l'autre Classeur

Lier les fichiers entre eux est une pratique courante qui, dans la plupart de situations, est pratique, facile, parfois indispensable. Mais cette solution peut être également très limitante: si les fichiers externes auxquels votre fichier Excel est lié ne sont pas disponibles, au mieux vous vous en sortez avec des messages d'avertissement, au pire le contenu qui n'est pas mis à jour faussera vos calculs. La solution?

Remplacer les liens par les valeurs avant de partager/déplacer un fichier Excel

Pour éviter les problèmes lors de partage, déplacement, envoi par email,… d'un fichier, vous pouvez remplacer les valeurs liés par des valeurs "normales". Votre fichier ne sera plus lié à d'autres fichiers Excel et il sera possible de l'utiliser sans devoir se demander quelle valeur est obsolète et laquelle ne l'est pas.

Du point de vue pratique, cette solution peut être très fastidieuse si vous devez l'appliquer manuellement – trouver les cellules qui contiennent des liens, les remplacer, ne rien oublier… Heureusement, VBA est là pour tout automatiser et éviter "l'erreur humaine".

VBA: supprimer les liens vers d'autres fichiers Excel

Le code VBA qui suit est très pratique, surtout si d'autres personnes sont susceptibles de lire votre fichier. Rompre les liaisons existantes va prévenir la situation où le fichier essaie de récupérer des données dans d'autres Classeurs auquel in n'a pas accès – car dans une telle situation, votre Classeur est inutilisable.

En rompant les liaisons, le contenu des cellules qui provenait des autres Classeurs est remplacé par des valeurs. D'un côté vous perdez la possibilité de tenir le fichier à jour automatiquement mais de l'autre côté, vous évitez les fenêtres pop-up vous demandant s'il faut essayer de mettre les données à jour. Et, ce qui peut être important également, vous ne montrez pas au monde la structure des dossiers de votre ordinateur. Ce qui, à nos jours, ne peut pas faire du mal du point de vue de la sécurité.

Et voici le résultat une fois les liaisons rompues:

La liaison vers l'autre Classeur est remplacée par la valeur de la cellule

Résultat: La liaison vers l'autre Classeur est remplacée par la valeur de la cellule

Fonction VBA pour supprimer toutes les liaisons vers d'autres Classeurs

Voici le code source VBA qui vous permettra de supprimer toutes les liaisons que le Classeur en question a avec des autres Classeurs.

Il est, bien sûr possible de modifier cette fonction pour que le Classeur "à nettoyer" soit utilisé comme argument en remplaçant ActiveWorkbook.

Ainsi, vous pouvez utiliser cette macro également pour des fichiers sans macros sans devoir les modifier.

 

13 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.