[VBA - Excel] Bug ? Un fichier enregistré sous un autre nom remplace les liens m [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 mai 2008
-
Messages postés
4
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 mai 2008
-
Bonjour,

D'habitude je me débrouille seul en ce qui concerne la prog, mais là je donne ma langue au chat et mes recherches googlesques se révèlent infructueuses. Peut-être que quelqu'un saura m'aider ou du moins m'expliquer le pourquoi du comment...

Dans le cadre de mon travail, j'ai une macro qui ouvre un fichier Excel, parse chaque valeur de chaque cellule de chaque feuille afin de remplacer un codage clé par une référence venant d'un fichier texte, puis enregistre le fichier modifié sous un autre nom. En d'autres termes j'ai un fichier modèle qui est ouvert, dont les références spécifiques sont remplacées, puis le tout est enregistré ailleurs. Aucun problème de ce côté, c'est juste pour bien situer l'action (on ne sait jamais).

Le fichier modèle contient des liens hypertexte internes (j'entends par là que ces liens ne font référence qu'à d'autres feuilles du même fichier), dont une partie étaient déjà créés lorsque j'ai reçu le fichier original (d'un client, donc), et d'autre part certains que j'ai créés moi-même. Sur les liens qui existaient déjà, certains étaient faux, je les ai donc modifiés. C'est ici que se pose le problème : dans le fichier modèle, les liens sont corrects, tous fonctionnent sans aucun souci, mais dans le fichier de sortie (donc celui copié avec un Workbooks().SaveAs en fin de macro), tous les liens que j'ai eu à corriger ont repris leur valeur précédente, donc la mauvaise version qui ne fonctionne pas. J'ai effectué plusieurs tests, et effectivement si je remodifie les liens en question dans le fichier modèle, par exemple en les supprimant ou en les dirigeant vers une autre page, dans la sortie ils prennent la version juste avant, et ainsi de suite à chaque fois.

Alors bon, je peux toujours "tricher" en mettant les bons liens, en enregistrant, en ré-ouvrant, mettre des faux liens, le tout sur le modèle... Mais je trouve ça gênant que le modèle doive avoir des liens faux pour que la sortie aie des liens justes... Bien entendu, si je modifie mais qu'en fait je remet le même lien (une petite ruse qui marche parfois sur ce genre de bugs), il conserve le "vrai" lien précédent (ce serait trop facile).

Je me demandais donc - mais comme je n'ai pas trouvé la réponse, je vous demande à vous ^_^ - s'il n'y a pas une option d'enregistrement, une option d'Excel, un truc, une astuce, un bricolage, un patch, une zouzouille, bref quelque-chose que je puisse faire pour régler ce problème ?

Vous remerciant d'avoir pris la peine de lire mon roman (désolé, par expérience j'ai toujours peur d'oublier une précision utile), vous remerciant d'autant plus si vous avez la moindre idée ou une solution à m'apporter, et vous priant de m'excuser si un sujet existant et/ou similaire a échappé à ma recherche pourtant minutieuse.

Bonne journée, bon code, et... euh... beau temps ?

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."

4 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
tentes avec SaveCopyAs
Messages postés
4
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 mai 2008

Merci de la réponse diligeante :)

Effectivement, je n'avais pas pensé à SaveCopyAs (d'ailleurs, je vais sûrement opter pour celle-ci, elle me semble plus adaptée à l'usage que j'en fais), mais :

Je m'apprêtais à m'auto-répondre car je viens juste de comprendre le pourquoi du comment, et que j'aime faire profiter les autres des réponses à mes erreurs.
Alors au cas où quelqu'un aurait le même souci un jour, la raison est simple mais pas forcément évidente : il s'agissait de cellules fusionnées (foutus clients avec leurs idées à la c**).
La solution est donc la suivante : dé-référencer le lien (supprimer), défusionner les cellules, modifier celle qui contient le texte/le lien, refusionner les cellules...

Et Voiloù.

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Quand on peut, il est préférable d'utiliser l'alignement centré sur plusieurs colonnes plutôt que la fusion de cellules qui n'apporte des emm... problèmes.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
4
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 mai 2008

A qui le dites-vous ! Je ne compte plus le nombre d'heures perdues (oserais-je dire jours) à cause d'un client qui aime la fusion... :(

Il faut en tirer comme leçon qu'en cas de problème(s) lié(s) au contenu des cellules, la première chose à vérifier est qu'une ou plusieurs fusion(s) n'en est pas à l'origine.

"Il n'y a pas de bon ou de mauvais code : il y a le code qui fonctionne et celui qui plante. Après, la lisibilité des sources n'est qu'une question d'hygiène, comme se laver les mains avant de préparer la bouffe."