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: supprimer les liaisons Excel.

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 Excel entre eux est une pratique courante qui, dans la plupart de situations, est pratique, facile, parfois indispensable. Elle vous permet principalement de garder vos données à jour même si elles viennent de différents Classeurs.

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 Excel, vous pouvez remplacer les valeurs liés (provenant d'autres Classeurs donc) par les 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… Car vous ne pouvez pas simplement sélectionner toutes les cellules de la Feuille et les "copier / coller des valeurs" – car vous perdriez toutes vos formules (même celles qui n'utilisent pas des données externes)!

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 il 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

Procédure VBA pour supprimer toutes les liaisons vers d'autres Classeurs Excel

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

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

Ainsi, vous pouvez utiliser cette macro également pour des "Classeurs classiques" (fichiers .XLSX) sans devoir les modifier.

Pour information: ce code ne sauvegarde pas le fichier "nettoyé". Donc vous avez la possibilité de le sauvegarder manuellement, sauvegarder une copie avec un autre nom ou d'ajouter la sauvegarde dans cette macro pour qu'elle se fasse automatiquement.

Pour information 2: la page sur la méthode .LinkSources sur le site de Microsoft

Pour aller plus loin en VBA

J'espère que ce code va bien vous servir. Et voici quelques articles sur VBA qui pourraient vous être utiles également…

 

Laissez un commentaire

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

11 commentaires sur “VBA: supprimer les liaisons Excel”